Teste prático contendo uma arquitetura MCP utilizando uma LLM da OLLAMA
O sistema recebe um input do usuário e realiza uma query em um banco SQLite que é iniciado ao iniciar a aplicação, com isso você terá o retorno em forma de tabela no CMD o output com base nos dados que foram solicitado pelo usuário, o sistema continua ativo até que você digite para sair
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── docker-compose.yml
├── main.py
├── requirements.txt
├── scripts
│ └── entrypoint.sh
├── src
│ ├── __init__.py
│ ├── agent
│ │ ├── __init__.py
│ │ └── virtual_agent.py
│ ├── client
│ │ ├── __init__.py
│ │ ├── llm_integration.py
│ │ └── main.py
│ ├── database
│ │ ├── __init__.py
│ │ ├── db_session.py
│ │ └── models.py
│ ├── models
│ │ ├── __init__.py
│ │ └── vehicle_model.py
│ └── server
│ ├── __init__.py
│ ├── mcp_server.py
│ └── process_request.py
├── utils
│ ├── __init__.py
│ └── fetch_vehicles_data.py
└── vehicles.db
Checklist do Desafio Técnico – Vaga de Desenvolvedor Python | C2S
Tarefas Específicas:
-
Modelagem de Dados:
- Criar um esquema de banco de dados para representar automóveis.
- Incluir pelo menos 10 atributos relevantes (ex: Marca, modelo, ano, motorização, tipo de combustível, cor, quilometragem, número de portas, transmissão, preço, etc.).
-
Popular o Banco com Dados Fictícios:
- Desenvolver um script para inserir dados fictícios no banco de dados.
- Inserir no mínimo 100 veículos simulados (fakes).
- Usar bibliotecas como Faker, SQLAlchemy, Pandas, ou outras de preferência.
-
Comunicação Cliente-Servidor via Protocolo MCP:
- Implementar a comunicação entre um cliente e um servidor usando um "Protocolo de Contexto de Modelo" (MCP) customizado.
- O cliente deve enviar filtros (como marca, ano, tipo de combustível) para o servidor.
- O servidor deve interpretar os filtros.
- O servidor deve consultar o banco de dados com base nos filtros.
- O servidor deve retornar os resultados para o cliente.
- Garantir que não haja consultas diretas ao banco de dados pelo cliente; o fluxo deve ser Cliente -> Servidor -> Banco de Dados.
-
Aplicação no Terminal com Agente Virtual:
- Criar uma aplicação que roda diretamente no terminal.
- Implementar um agente virtual interativo.
- O agente deve iniciar a conversa ao iniciar a aplicação (sem "menuzão" de IF/ELSE).
- O agente deve entender o que o usuário está procurando.
- O agente deve fazer perguntas para esclarecer a busca (ex: marca, modelo, ano, combustível, faixa de preço).
- As perguntas não devem seguir um padrão engessado tipo formulário; permitir interação mais fluida.
- O agente deve receber os veículos compatíveis do servidor.
- O agente deve exibir os resultados em uma resposta amigável.
- Os resultados exibidos devem incluir: marca, modelo, ano, cor, quilometragem e preço (ou outros atributos relevantes definidos na etapa 1).
- Python 3.12
- Docker
Para rodar esse projeto, você vai precisar adicionar das seguintes variáveis de ambiente no seu .env
OLLAMA_MODEL
essa variável contem o nome do modelo llama a ser usado, caso queria encontrar modelos a para utilizar você pode procurar no próprio site do ollama
Inicialmente ja esta tudo preparado caso não queira modificar nada rode o seguinte comando:
Para isso foi utilizada para testes apenas o modelo: llama3.1:8b
OLLAMA_HOST
Essa variável armazena o host do ollama
Inicialmente ja esta tudo preparado caso não queira modificar nada rode o seguinte comando:
cp .env.sample .envPrimeiro baixe o o repositório:
git clone https://github.com/VitorManoel0/VeiculosLLM.gitEntre no diretório do projeto
cd VeiculosLLMIniciar a aplicação:
make run-allcaso você tenha saido da aplicação e queria voltar rode o seguinte comando:
make run-appAo finalizar tudo para remover os containêrs:
docker-compose down -v