40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
"""FastGPT client dependency injection."""
|
|
from contextlib import asynccontextmanager
|
|
from fastapi import FastAPI
|
|
from fastgpt_client import AsyncChatClient
|
|
from .config import Config
|
|
|
|
# Global client instance
|
|
_fastgpt_client: AsyncChatClient | None = None
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
"""Manage FastGPT client lifecycle."""
|
|
global _fastgpt_client
|
|
Config.validate()
|
|
|
|
# Initialize client
|
|
_fastgpt_client = AsyncChatClient(
|
|
api_key=Config.FASTGPT_API_KEY,
|
|
base_url=Config.FASTGPT_BASE_URL,
|
|
timeout=60.0,
|
|
max_retries=3,
|
|
retry_delay=1.0,
|
|
enable_logging=Config.DEBUG,
|
|
)
|
|
await _fastgpt_client.__aenter__()
|
|
|
|
yield
|
|
|
|
# Cleanup
|
|
if _fastgpt_client:
|
|
await _fastgpt_client.__aexit__(None, None, None)
|
|
|
|
|
|
def get_fastgpt_client() -> AsyncChatClient:
|
|
"""Get the FastGPT client instance."""
|
|
if _fastgpt_client is None:
|
|
raise RuntimeError("FastGPT client not initialized")
|
|
return _fastgpt_client
|