Files
Anton_wireframe/app/main.py
T

46 lines
1.2 KiB
Python

import io
import pandas as pd
from app.db.db import db_dependency, init_database
from fastapi import FastAPI, File, UploadFile
from app.services.openrouter import InvestorProcessor
from app.pydantic_schemas import QueryRequest, QueryResponseList
from app.services.langgraph_agent import LangGraphQueryAgent
app = FastAPI()
init_database()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.post("/parse-csv")
async def parse_csv(db: db_dependency, file: UploadFile = File(...)):
# Read uploaded CSV with pandas
content = await file.read()
df = pd.read_csv(io.StringIO(content.decode("utf-8")))
# Process the dataframe
processor = InvestorProcessor(sql_session=db)
results = await processor.process_csv(df)
# Convert Pydantic objects to dictionaries
return {"results": [r.dict() for r in results]}
@app.post("/query", response_model=QueryResponseList)
async def query_investors(db: db_dependency, request: QueryRequest):
agent = LangGraphQueryAgent(sql_session=db)
result = agent.run(request.question)
return result
if __name__ == "__main__":
import uvicorn
uvicorn.run(app="main:app", host="localhost", port=8000, reload=True)