FastAPI para Dados e IA đ
API moderna e assĂncrona demonstrando integraçÔes com OpenAI e Groq para projetos de InteligĂȘncia Artificial e Dados.

đ ïž Tecnologias Utilizadas
đ Sobre o Projeto
Este projeto foi criado como material de apoio para o artigo FastAPI para Dados e IA: Do Zero à Produção com OpenAI e Groq e demonstra como construir APIs robustas para servir modelos de IA, com exemplos pråticos de:
- â Chat completions com OpenAI e Groq
- â Geração de embeddings para RAG
- â Streaming de respostas em tempo real
- â Validação de dados com Pydantic
- â Documentação automĂĄtica com Swagger UI
- â Arquitetura modular e escalĂĄvel
đ ïž Tecnologias Utilizadas
- FastAPI - Framework web moderno e assĂncrono
- Uvicorn - Servidor ASGI de alta performance
- OpenAI - Integração com GPT-4, GPT-3.5 e embeddings
- Groq - InferĂȘncia ultrarrĂĄpida com Llama, Mixtral e Gemma
- Pydantic - Validação de dados e configuraçÔes
- Python 3.10+ - Linguagem de programação
đ Estrutura do Projeto
fastapi-ia-demo/
âââ app/
â âââ __init__.py
â âââ main.py # Aplicação principal
â âââ config.py # ConfiguraçÔes e variĂĄveis de ambiente
â âââ models/
â â âââ __init__.py
â â âââ schemas.py # Modelos Pydantic
â âââ routers/
â âââ __init__.py
â âââ openai_router.py # Endpoints OpenAI
â âââ groq_router.py # Endpoints Groq
âââ .env.example # Template de variĂĄveis de ambiente
âââ .gitignore
âââ requirements.txt
âââ README.md
đ Instalação e Configuração
1. Clone o repositĂłrio
git clone https://github.com/seu-usuario/fastapi-ia-demo.git
cd fastapi-ia-demo
2. Crie um ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
3. Instale as dependĂȘncias
pip install -r requirements.txt
4. Configure as variĂĄveis de ambiente
Copie o arquivo .env.example para .env e preencha com suas chaves de API:
cp .env.example .env
Edite o arquivo .env:
OPENAI_API_KEY=sk-... # Sua chave da OpenAI
GROQ_API_KEY=gsk_... # Sua chave do Groq
Como obter as chaves:
5. Execute a aplicação
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
A API estarĂĄ disponĂvel em:
- API: http://localhost:8000
- Documentação Swagger: http://localhost:8000/docs
- Documentação ReDoc: http://localhost:8000/redoc
đ Endpoints DisponĂveis
Endpoints Gerais
GET /- InformaçÔes da APIGET /health- Health check
OpenAI
POST /openai/chat- Chat completionPOST /openai/chat/stream- Chat com streamingPOST /openai/embeddings- Geração de embeddings
Groq
POST /groq/chat- Chat completionGET /groq/models- Lista modelos disponĂveis
Unificado
POST /chat/unified?provider=openai- Endpoint unificado
đĄ Exemplos de Uso
Chat com OpenAI
curl -X POST "http://localhost:8000/openai/chat" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "system", "content": "VocĂȘ Ă© um especialista em dados."},
{"role": "user", "content": "O que Ă© um Data Lake?"}
],
"temperature": 0.7
}'
Chat com Groq
curl -X POST "http://localhost:8000/groq/chat" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Explique Apache Spark em 3 frases."}
],
"model": "llama-3.1-8b-instant"
}'
Gerar Embeddings
curl -X POST "http://localhost:8000/openai/embeddings" \
-H "Content-Type: application/json" \
-d '{
"text": "FastAPI Ă© um framework moderno para construir APIs"
}'
Usando Python
import requests
url = "http://localhost:8000/openai/chat"
payload = {
"messages": [
{"role": "user", "content": "O que Ă© FastAPI?"}
],
"temperature": 0.7
}
response = requests.post(url, json=payload)
print(response.json())
đ§Ș Testando com a Documentação Interativa
Acesse http://localhost:8000/docs e vocĂȘ terĂĄ uma interface interativa onde pode:
- Ver todos os endpoints disponĂveis
- Testar requisiçÔes diretamente no navegador
- Ver os schemas de entrada e saĂda
- Visualizar exemplos de respostas
đ§ Modelos DisponĂveis
OpenAI
gpt-4o-mini- RĂĄpido e econĂŽmico (padrĂŁo)gpt-4o- Mais capazgpt-4-turbo- Ătimo custo-benefĂciotext-embedding-3-small- Para embeddings
Groq
llama-3.1-70b-versatile- Melhor equilĂbrio (padrĂŁo)llama-3.1-8b-instant- Extremamente rĂĄpidomixtral-8x7b-32768- Contexto longogemma2-9b-it- Modelo do Google
đ Deploy
Docker (Recomendado)
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app/ ./app/
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
docker build -t fastapi-ia-demo .
docker run -p 8000:8000 --env-file .env fastapi-ia-demo
Railway, Render ou Heroku
- Adicione um
Procfile:
web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
-
Configure as variĂĄveis de ambiente no painel da plataforma
-
Deploy!
đ€ Contribuindo
ContribuiçÔes são bem-vindas! Sinta-se à vontade para:
- Fazer um fork do projeto
- Criar uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abrir um Pull Request
đ Licença
Este projeto estå sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
đ€ Autor
Alexsander Valente
- Blog: alexsander.app.br
- LinkedIn: linkedin.com/in/alexsander-valente
- GitHub: @alevtelles
đ Recursos Adicionais
â Se este projeto foi Ăștil para vocĂȘ, considere dar uma estrela no GitHub!