Spaces:
Sleeping
Sleeping
| # api.py | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from agents import Orchestrator | |
| from utils import load_json | |
| import os | |
| # Initialize FastAPI app | |
| app = FastAPI() | |
| # Load config and docs | |
| HERE = os.path.dirname(__file__) | |
| models_cfg = load_json(os.path.join(HERE, "models_config.json")) | |
| pubmed = load_json(os.path.join(HERE, "sample_data", "pubmed_sample.json")) | |
| patents = load_json(os.path.join(HERE, "sample_data", "patents_sample.json")) | |
| docs = pubmed + patents | |
| # Initialize orchestrator once | |
| orch = Orchestrator(docs, { | |
| "embed_model": models_cfg["embed_model"], | |
| "summarizer_model": models_cfg["summarizer_model"] | |
| }) | |
| # Define request schema | |
| class QueryRequest(BaseModel): | |
| query: str | |
| top_k: int = 5 | |
| async def query_endpoint(body: QueryRequest): | |
| """ | |
| Programmatic endpoint for integrations. | |
| Example POST body: | |
| { | |
| "query": "neutralizing antibody patents + clinical trials 2019-2024", | |
| "top_k": 5 | |
| } | |
| """ | |
| result = orch.run(body.query, top_k=body.top_k) | |
| return result |