https://github.com/jhiltonsantos/speech-code-api
Backend FastAPI do SpeechCode. RAG com LangChain, ChromaDB e Modelo de IA para estudos
https://github.com/jhiltonsantos/speech-code-api
fastapi langchain python rag
Last synced: 6 days ago
JSON representation
Backend FastAPI do SpeechCode. RAG com LangChain, ChromaDB e Modelo de IA para estudos
- Host: GitHub
- URL: https://github.com/jhiltonsantos/speech-code-api
- Owner: jhiltonsantos
- Created: 2026-06-21T19:24:14.000Z (8 days ago)
- Default Branch: main
- Last Pushed: 2026-06-21T20:42:15.000Z (8 days ago)
- Last Synced: 2026-06-21T22:13:54.623Z (8 days ago)
- Topics: fastapi, langchain, python, rag
- Language: Python
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SpeechCode API
Backend FastAPI do assistente de estudos **SpeechCode** — RAG local para Programação e Inglês.
## Pré-requisitos
- Python 3.10+ (3.11+ recomendado)
- [Ollama](https://ollama.com/download) rodando na bandeja do sistema
- Modelos baixados: `llama3` e `nomic-embed-text`
- Ambiente virtual em `.venv/` (já criado neste diretório)
```shell
ollama pull llama3
ollama pull nomic-embed-text
```
## Como rodar
```shell
cd speech-code-api
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000
```
Documentação interativa: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
## Estrutura (Fase 2)
```
speech-code-api/
├── main.py # Bootstrap: create_app()
├── app/
│ ├── factory.py # FastAPI + CORS + routers
│ ├── config.py # Ollama, ChromaDB, paths
│ ├── dependencies.py # Singletons LangChain
│ ├── routers/ # health, upload, ask
│ ├── services/ # pdf, ingest, rag
│ └── prompts/ # system prompt do tutor
├── chroma_data/ # persistência ChromaDB (gitignored)
└── tmp_uploads/ # PDFs temporários (gitignored)
```
## Endpoints
| Método | Rota | Descrição |
|--------|------|-----------|
| GET | `/health` | Health check |
| POST | `/upload` | Ingestão de PDF → ChromaDB via LangChain |
| POST | `/ask` | Pergunta com retrieval + `llama3` via Ollama |
### Respostas
**POST /upload** (sucesso):
```json
{
"message": "PDF indexado com sucesso.",
"filename": "guia-python.pdf",
"chunks_indexed": 42
}
```
**POST /ask** (sucesso):
```json
{
"answer": "Resposta contextual gerada pelo tutor..."
}
```