Voltar para projetos

Case de projeto

API de Chatbot com IA

API de chat em FastAPI com streaming, histórico de conversas e troca de provedor de IA por variável de ambiente.

Meu papelAnalista/Desenvolvedor
Tecnologias utilizadas
  • FastAPI
  • Python
  • SQLAlchemy
  • SQLite
  • Pydantic
  • pytest
Placa tipográfica do projeto: a demo publicada está fora do ar e não há captura disponível.
Capa do projeto

Problema

Trocar de provedor de IA costuma exigir reescrever a integração.

Respostas longas sem streaming deixam a interface parada até o fim.

Solução

Arquitetura resumida
  • Mensagens das conversas, gravadas por conversa em SQLite.
Decisões técnicas
  1. Uma camada de serviço escolhe OpenAI, Anthropic ou Google por variável de ambiente.
  2. Respostas em JSON ou em streaming por Server-Sent Events, lidas pelo frontend com um leitor de fluxo.
  3. Histórico por conversa com rotas para listar, ler e apagar.

Resultado

Provedores de IA intercambiáveis
3
Repositório privado / src/services/ai_service.py / commit 6b0e1e6
Testes de API
6
Repositório privado / tests/test_api.py, contagem estática / commit 6b0e1e6

Uma API de base que separa a conversa do provedor; a publicação precisa de chave configurada para responder.

  • API em FastAPI
  • Streaming com SSE
  • Abstração de provedores
  • Persistência simples

Aprendizados e limitações

  • A demo publicada responde HTTP 500: falta a chave do provedor e não há modo de demonstração.
  • SQLite em arquivo local não persiste em ambiente serverless.
  • O endpoint de saúde informa o modelo como pronto mesmo sem chave.

Mais sobre o projeto

Detalhes completos do case, colapsados para leitura opcional.

Descrição completa

Chatbot web com API em FastAPI e frontend estático, pensado para trocar de provedor de IA sem reescrever a integração.

A camada de serviço escolhe OpenAI, Anthropic ou Google por variável de ambiente; a OpenAI é a padrão.

As respostas chegam em JSON ou em streaming por Server-Sent Events, e o histórico fica por conversa em SQLite.

A demo publicada está fora do ar: responde HTTP 500 porque a chave do provedor não está configurada.

FastAPI com SQLAlchemy e SQLite, Pydantic, sse-starlette para streaming e SDKs da OpenAI, Anthropic e Google.

Funcionalidades e destaques
  • Chat com resposta completa ou em streaming.
  • Histórico de conversas persistido.
  • Listar, abrir e apagar conversas.
  • Markdown e realce de código nas respostas.
  • Documentação OpenAPI em /api/docs.
  • Transmite respostas por Server-Sent Events.
  • Troca o provedor de IA por uma variável de ambiente.
  • Guarda o histórico por conversa em SQLite.
  • Expõe a API documentada em OpenAPI.
Arquitetura técnica e dados

Arquitetura técnica

Como o case foi pensado como produto

API de chat em FastAPI com streaming, histórico de conversas e troca de provedor de IA por variável de ambiente.

FastAPIFrameworkPythonLinguagemSQLAlchemyBanco de DadosSQLiteBanco de DadosPydanticFrameworkpytestFramework

Dados utilizados

  • Mensagens das conversas, gravadas por conversa em SQLite.

Principais componentes

  • Chat com resposta completa ou em streaming.
  • Histórico de conversas persistido.
  • Listar, abrir e apagar conversas.
  • Markdown e realce de código nas respostas.
  • Documentação OpenAPI em /api/docs.

Decisões técnicas

  • API em FastAPI
  • Streaming com SSE
  • Abstração de provedores
  • Persistência simples

Trade-offs

  • A demo publicada responde HTTP 500: falta a chave do provedor e não há modo de demonstração.
  • SQLite em arquivo local não persiste em ambiente serverless.
  • O endpoint de saúde informa o modelo como pronto mesmo sem chave.
Como executar
  1. O repositório é privado; os passos abaixo valem para quem tem acesso.
  2. python -m venv venv e ative o ambiente.
  3. pip install -r requirements.txt
  4. cp .env.example .env e defina a chave do provedor escolhido.
  5. python src/main.py
Mídia adicional
Vídeo de demonstração do chatbot
Créditos

Desenvolvido por Matheus Siqueira - https://www.matheusdev.tech

Próximo projetoENCOM Gesture Console

Console futurista com detecção de gestos pela webcam, telemetria visual e efeitos 3D em tempo real.

Ver case completo