API para um agente de perguntas e respostas, construída com FastAPI e LangChain (OpenAI), com logging estruturado e tracing das chamadas ao LLM via Langfuse.
- FastAPI
- LangChain + langchain-openai
- Langfuse (tracing/observabilidade)
- Pytest (testes)
app/
main.py # entrypoint FastAPI
core/ # config, logging e tracing
agent/ # logica do agente (LLM)
api/ # rotas e schemas
tests/ # testes automatizados
Copie .env.example para .env e preencha as variáveis:
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY=
LANGFUSE_HOST=https://cloud.langfuse.com
CORS_ORIGINS=
CORS_ORIGINS é uma lista de origens separadas por vírgula liberadas para chamar a API a partir do browser (ex.: https://meusite.vercel.app,http://localhost:3000). Sem essa variável, nenhuma origem cross-origin é liberada e o fetch do frontend falha com erro de CORS.
python -m venv venv
source venv/Scripts/activate # Windows: venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn app.main:app --reloadA API sobe em http://127.0.0.1:8000.
GET /health— healthcheckPOST /agent/ask— envia{"question": "..."}e recebe{"answer": "..."}
pip install -r requirements-dev.txt
pytest -vO CI (GitHub Actions, em .github/workflows/ci.yml) roda os testes a cada push/PR na main.
Configuração pronta para Vercel (vercel.json). Defina as variáveis de ambiente no dashboard do projeto antes do deploy.