Voltar aos Projetos

    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.

    API
    5 min de leitura
    52 visualizaçÔes
    FastAPI para Dados e IA 🚀

    đŸ› ïž Tecnologias Utilizadas

    FastAPI
    Groq
    OpenAI
    Python

    📋 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:

    📚 Endpoints Disponíveis

    Endpoints Gerais

    • GET / - InformaçÔes da API
    • GET /health - Health check

    OpenAI

    • POST /openai/chat - Chat completion
    • POST /openai/chat/stream - Chat com streaming
    • POST /openai/embeddings - Geração de embeddings

    Groq

    • POST /groq/chat - Chat completion
    • GET /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:

    1. Ver todos os endpoints disponĂ­veis
    2. Testar requisiçÔes diretamente no navegador
    3. Ver os schemas de entrada e saĂ­da
    4. Visualizar exemplos de respostas

    🔧 Modelos Disponíveis

    OpenAI

    • gpt-4o-mini - RĂĄpido e econĂŽmico (padrĂŁo)
    • gpt-4o - Mais capaz
    • gpt-4-turbo - Ótimo custo-benefĂ­cio
    • text-embedding-3-small - Para embeddings

    Groq

    • llama-3.1-70b-versatile - Melhor equilĂ­brio (padrĂŁo)
    • llama-3.1-8b-instant - Extremamente rĂĄpido
    • mixtral-8x7b-32768 - Contexto longo
    • gemma2-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

    1. Adicione um Procfile:
    web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
    
    1. Configure as variĂĄveis de ambiente no painel da plataforma

    2. Deploy!

    đŸ€ Contribuindo

    ContribuiçÔes são bem-vindas! Sinta-se à vontade para:

    1. Fazer um fork do projeto
    2. Criar uma branch para sua feature (git checkout -b feature/AmazingFeature)
    3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
    4. Push para a branch (git push origin feature/AmazingFeature)
    5. Abrir um Pull Request

    📝 Licença

    Este projeto estå sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

    đŸ‘€ Autor

    Alexsander Valente

    📚 Recursos Adicionais


    ⭐ Se este projeto foi Ăștil para vocĂȘ, considere dar uma estrela no GitHub!