Nome do autor: Tomás N. P. Barros
email: [email protected]
Esse projeto é um chatbot criado em cima do streamlit que utiliza agentes para ser capaz de fazer análises sobre os dados do banco de dados abaixo.
| Nome | Tipo do Dado | Exemplo |
|---|---|---|
| REF_DATE | TIMESTAMP WITH TIME ZONE | 2017-06-01 00:00:00+00:00 |
| TARGET | INT (0 or 1) | 0, 1 |
| SEXO | CHAR(1) or NULL | M, F, NULL |
| IDADE | FLOAT or NULL | 34.137, 40.447, ..., NULL |
| VAR4 | CHAR(1) or NULL | S, NULL |
| ESTADO | CHAR(2) or NULL | PE, PB, SP, RJ, ..., NULL |
| CLASSE | CHAR(1) or NULL | A, D, E, ..., NULL |
- OpenAI e Langchain: Integração com LLMs.
- Streamlit: Interface do Chatbot.
- Psycopg2 e AWS RDS: Comunicação com Cloud.
- Psycopg2, Pandas e DuckDB: Processamento de Dados.
| Nome | Categoria |
|---|---|
| Entendimento e conversão de consultas em linguagem natural para SQL | Principal |
| Apresentação dos dados requisitados e insights | Principal |
| Agentes que usam LLMs e têm prompts robustos | Principal |
| Integração com Banco de Dados na Nuvem | Principal |
| Código limpo, legível e bem documentado | Principal |
| Prompts robustos para impedir erros | Principal |
| Interface do Chatbot | Principal |
| Respostas Naturais | Principal |
| Testes Unitários | Extra |
- O usuário entra com uma consulta em linguagem natural sobre os dados. O agente 1, o Query Validaator, verifica se a consulta é válida. Qualquier query que não seja uma consulta sobre a tabela, ou sobre as colunas da tabela vai ser rejeitada.
- O agente 2, o SQL Executor, processa a query, a transforma em uma query SQL e retorna os dados solicitados do banco de dados que está na AWS.
- O agente 3, o Insight Generator, processa os dados retornados e gera insights sobre eles se conseguir. O agente só gerará insights relacionados ao que o usuário perguntou.
- O chat para até que o usuário faça outra pergunta.
- Integração com AWS: A integração com a AWS foi um desafio, pois eu não tinha feito algo parecido antes.
- Acertar a interface com o Streamlit Apesar de simples e intuitiva, eu tentei começar com uma ideia que era complexa e fora do escopo do Streamlit.
- Fazer os Prompts Fazer os prompts foi um desafio, pois eu tive que refiná-los várias vezes até chegarem ao resultado esperado.
- Uso do Langchain Apesar se ser uma boa biblioteca, algumas coisas da sintaxe do Langchain ainda são confusas para mim pela falta de prática. Em especial os parses e os templates dos inputs
- Crie um ambiente virtual com Python 3.12 e instale os requirementes
python3.12 -m venv venv && source venv/bin/activate && pip install -r requirements.txt - Preencha o arquivo .env com as informações do seu banco de dados na AWS e o token do OpenAI
- Rode o arquivo main.py com o streamlit
streamlit run main.py
