Spaces:
Running
Running
| # blaxel_main.py (Updated: New Provider Keys + Core Logic Only) | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from sse_starlette.sse import EventSourceResponse | |
| import os | |
| import uvicorn | |
| from typing import Dict, Optional | |
| from agent_logic import StrategicSelectorAgent | |
| app = FastAPI() | |
| # 1. Update Pydantic model to accept all provider keys | |
| class ApiKeys(BaseModel): | |
| google: str | |
| anthropic: Optional[str] = None | |
| sambanova: Optional[str] = None | |
| # New providers added: | |
| openai: Optional[str] = None | |
| nebius: Optional[str] = None | |
| class ProblemRequest(BaseModel): | |
| problem: str | |
| # Expansion flag removed - we are sticking to the robust core loop | |
| keys: ApiKeys | |
| async def solve_problem(request: ProblemRequest): | |
| """ | |
| Standard endpoint. Initializes the agent with all provided keys | |
| and streams the solution process. | |
| """ | |
| async def stream_solution(): | |
| try: | |
| # Pass the dictionary of keys (including new ones) to the agent | |
| # request.keys.dict() will include openai and nebius if sent | |
| mudabbir_ai = StrategicSelectorAgent(api_keys=request.keys.dict()) | |
| async for status_update in mudabbir_ai.solve(request.problem): | |
| yield status_update | |
| except Exception as e: | |
| yield f"AGENT ERROR: {e}" | |
| print(f"AGENT ERROR: {e}") | |
| return EventSourceResponse(stream_solution()) | |
| if __name__ == "__main__": | |
| HOST = os.getenv("BL_SERVER_HOST", "0.0.0.0") | |
| PORT = int(os.getenv("BL_SERVER_PORT", "8080")) | |
| uvicorn.run(app, host=HOST, port=PORT) |