Uma API inteligente de chat construída com FastAPI e Strands Agents, capaz de realizar cálculos matemáticos e responder a perguntas gerais utilizando modelo de linguagem (LLM) local via Ollama. Foi também implementada uma web UI integrada, com tratamento de resposta da API, para melhor visualização de seu funcionamento.
A API é capaz de:
- Responder perguntas gerais usando conhecimento do modelo de linguagem.
- Realizar cálculos matemáticos complexos através de tools especializadas.
- Decidir automaticamente quando usar cálculos vs. conhecimento geral.
- Executar localmente sem dependência de serviços cloud.
Esta seção detalha os requisitos de software, modelo de linguagem e hardware necessários para executar a Chat Agent API.
| Componente | Versão | Link |
|---|---|---|
| Python | 3.10+ | Download Python |
| Ollama | Latest | Download Ollama |
O projeto utiliza um modelo de linguagem local via Ollama:
| Modelo | Tamanho | Download |
|---|---|---|
| Llama 3.1 8B | ~4.9GB | ollama pull llama3.1:8b |
Para uma performance ideal, especialmente durante o carregamento do modelo:
- RAM: Mínimo 8GB, recomendado 16GB.
- GPU: Opcional, mas recomendada para melhor performance.
- Armazenamento: 10GB livres.
Siga os passos abaixo para configurar e executar a Chat Agent API.
Use o Git para clonar o projeto:
# Vá até o local onde deseja clonar o repositório e execute:
git clone https://github.com/GabrielCande/ChatAgentAPI
Baixe e execute o instalador em ollama.ai/download.
Abra o prompt de comando (CMD) e realize o download do modelo llama3.1:8b:
# Utilize o comando pull
ollama pull llama3.1:8b
# Ou utilize o comando run que também irá realizar o download
ollama run llama3.1:8b
No CMD navegue até a raiz do diretório onde foi clonado o repositório:
# (apenas um exemplo de path)
cd C:\Gabriel\Github\ChatAgentAPI
Em seguida inicialize o ambiente:
# Cria o ambiente
python -m venv venv
# Ativa o ambiente
venv\Scripts\activate
Após a incialização do ambiente instale as bibliotecas necessárias:
# Dentro do ambiente ativo execute:
pip install -r requirements.txt
Por fim, crie um arquivo denominado ".env" na raiz do diretório do repositório clonado, manualmente ou pelo código seguinte no terminal:
# (apenas um exemplo de path)
cd C:\Gabriel\Github\ChatAgentAPI
# Cria arquivo .env
type nul > .env
Coloque neste arquivo a seguinte configuração:
OLLAMA_BASE_URL=http://localhost:11434
LLM_MODEL=llama3.1:8b
Abra um novo CMD para realizar a inicialização da execução do modelo llama3.1:8b instalado:
ollama serve
OBS.:
-
Esse CMD deverá continuar aberto, não o feche;
-
Caso o comando não funcione certifique-se de que o Ollama não está aberto ou em execução.
Volte para o CMD onde você está no ambiente criado dentro da raiz do diretório do repositório e execute os comandos:
# Em "(venv) C:\seu path\ChatAgentAPI>" execute:
# Para acessar a pasta src
cd src
# Para inicializar a API
python main.py
- Para testar o funcionamento da API basta acessar, através de seu browser, a web UI integrada:
# URL da web UI:
http://localhost:8000/webui/
- Caso queira verificar a raw response gerada é possível de se fazer via a documentação interativa automática da API, gerada pelo FastAPI usando Swagger UI:
# URL da documentação interativa:
http://localhost:8000/docs
Para testar utilizando essa interface basta seguir os passos:
- Clique na seção em verde "POST /chat Chat Endpoint" para expandi-la
- Em seguida clique no botão "Try it out" (primeiro botão a direita)
- Depois de precionar o botão você verá algo do tipo:
{
"message": "string"
}
- Altere o conteúdo de "string" para a mensagem que deseja enviar, exemplo:
{
"message": "Olá, tudo bem?"
}
- Então precione o botão em azul "Execute"
- Após o carregamento a resposta será gerada e mostrada um pouco mais abaixo, você verá algo do tipo:
Response body
{
"response": "Tudo bem! Estou aqui para ajudar. Como posso ajudar você hoje?\n"
}
- Caso deseje, é possível testar diretamente via terminal, basta abrir um novo terminal (além dos 2 necessários para rodar a API) e digitar o seguinte comando:
# Basta trocar o campo SUA MENSAGEM AQUI pela mensagem desejada:
curl -X POST http://localhost:8000/chat -H "Content-Type: application/json" -d "{\"message\": \"SUA MENSAGEM AQUI\"}"
OBS.: É possível verificar através do terminal que está rodando a "main.py" todas as respostas das requisições realizadas em tempo real, indepenedente do local e método que utilizou para realiza-las (webUI, fastAPI docs ou terminal).
Links para as documentações:
| Recurso | Documentação |
|---|---|
| Strands Agents | Documentação Oficial |
| FastAPI | FastAPI Docs |
| Ollama | Ollama Docs |
| Llama 3.1 | Model Card |
| Uvicorn | Uvicorn Docs |
Estrutura do projeto:
ChatAgentAPI/
├── 📁 src/
│ ├── main.py # Aplicação FastAPI principal
│ ├── agent.py # Agente de IA
│ ├── 📁 tools/
│ │ └── mathTool.py # Tool especializada em cálculos
│ └── 📁 webUI/
│ ├── index.html # Página HTML da interface web
│ ├── 📁 css/
│ │ └── styles.css # Estilo css
│ └── 📁 js/
│ └── app.js # JavaScript da interface web
├── requirements.txt # Dependências do projeto
├── .env # Arquivo que deve ser criado, onde ficaram as variáveis de ambiente
├── .gitignore
└── README.md
Este projeto é open-source e está disponível sob a licença MIT.