SQLAlchemy sessions
SQLAlchemy sessions (SQLAlchemy 세션)
SQLAlchemySession은 SQLAlchemy를 사용해 프로덕션 준비된 세션 구현을 제공해요. SQLAlchemy가 지원하는 어떤 데이터베이스든(PostgreSQL, MySQL, SQLite 등) 세션 저장소로 쓸 수 있게 해주죠.
출처: 문서
본문
설치
SQLAlchemy 세션에는 sqlalchemy 선택적 의존성 extra와, 데이터베이스 URL과 일치하는 async 데이터베이스 드라이버가 필요해요.
아래 SQLite 예제(sqlite+aiosqlite://)에는 extra 옆에 aiosqlite도 설치하세요.
pip install 'openai-agents[sqlalchemy]' aiosqlite
extra는 postgresql+asyncpg://로 시작하는 PostgreSQL URL용 asyncpg를 이미 포함해요. mysql+aiomysql://로 시작하는 MySQL URL에는 extra 옆에 aiomysql을 설치하세요. 드라이버의 rsa extra는 MySQL의 SHA-256 인증 방법 의존성을 제공해요.
pip install 'openai-agents[sqlalchemy]' 'aiomysql[rsa]'
빠른 시작
데이터베이스 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 레퍼런스
SQLAlchemySession— 메인 클래스Session— 기본 세션 프로토콜
더 알아보기 (Learn more)
- OpenAI Agents SDK 문서에서 더 많은 가이드를 확인하세요.