Spaces:
Sleeping
Sleeping
| import logging | |
| from collections.abc import AsyncIterable | |
| from pathlib import Path | |
| from fastapi import FastAPI | |
| from fastapi.responses import FileResponse | |
| from fastapi.staticfiles import StaticFiles | |
| from app.agent import MODEL, run_agent | |
| from app.models import AgentRequest, TextChunk | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s %(levelname)s %(name)s: %(message)s", | |
| ) | |
| logger = logging.getLogger(__name__) | |
| app = FastAPI() | |
| _STATIC = Path(__file__).parent / "static" | |
| app.mount("/static", StaticFiles(directory=_STATIC), name="static") | |
| async def config(): | |
| return {"model": MODEL} | |
| async def index() -> FileResponse: | |
| return FileResponse(_STATIC / "index.html") | |
| async def handle_agent_call(request: AgentRequest) -> AsyncIterable[TextChunk]: | |
| try: | |
| async for chunk in run_agent(request.input): | |
| yield chunk | |
| except Exception as exc: | |
| logger.exception("Agent error during streaming") | |
| yield TextChunk(type="error", content=str(exc)) | |