콘텐츠로 이동

SQLAlchemy 세션

SQLAlchemySession은 SQLAlchemy를 사용하여 프로덕션 환경에 적합한 세션 구현을 제공합니다. 따라서 SQLAlchemy가 지원하는 모든 데이터베이스(PostgreSQL, MySQL, SQLite 등)를 세션 스토리지로 사용할 수 있습니다.

설치

SQLAlchemy 세션에는 sqlalchemy 추가 의존성이 필요합니다.

pip install openai-agents[sqlalchemy]

빠른 시작

데이터베이스 URL 사용

가장 간단하게 시작하는 방법은 다음과 같습니다.

import asyncio
from agents import Agent, Runner
from agents.extensions.memory import SQLAlchemySession

async def main():
    agent = Agent("Assistant")

    # Create session using database URL
    session = SQLAlchemySession.from_url(
        "user-123",
        url="sqlite+aiosqlite:///:memory:",
        create_tables=True
    )

    result = await Runner.run(agent, "Hello", session=session)
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

기존 엔진 사용

기존 SQLAlchemy 엔진이 있는 애플리케이션에서는 다음과 같이 사용합니다.

import asyncio
from agents import Agent, Runner
from agents.extensions.memory import SQLAlchemySession
from sqlalchemy.ext.asyncio import create_async_engine

async def main():
    # Create your database engine
    engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/db")

    agent = Agent("Assistant")
    session = SQLAlchemySession(
        "user-456",
        engine=engine,
        create_tables=True
    )

    result = await Runner.run(agent, "Hello", session=session)
    print(result.final_output)

    # Clean up
    await engine.dispose()

if __name__ == "__main__":
    asyncio.run(main())

비 ASCII 텍스트 저장

기본적으로 SQLAlchemySession은 세션 항목을 JSON으로 직렬화할 때 비 ASCII 문자를 이스케이프합니다. 이렇게 하면 기존 스토리지 형식을 유지하면서도 항목을 로드할 때 원본 텍스트를 그대로 복원할 수 있습니다.

저장된 JSON에서 다국어 텍스트를 읽을 수 있는 형태로 유지하려면 ensure_ascii=False를 설정합니다.

session = SQLAlchemySession.from_url(
    "user-123",
    url="sqlite+aiosqlite:///conversations.db",
    create_tables=True,
    ensure_ascii=False,
)

기존 엔진을 사용할 때는 동일한 옵션을 SQLAlchemySession(...)에 직접 전달할 수 있습니다. 이 설정은 데이터베이스에 저장되는 JSON 표현만 변경하며, 세션 메서드가 반환하는 값은 변경하지 않습니다.

API 레퍼런스

Morty Proxy This is a proxified and sanitized view of the page, visit original site.