Provavelmente, você já ouviu falar sobre Cursor, Copilot, Codex ou qualquer editor que utilize agentes e se pegou pensando em como aquilo funciona. Bom, a melhor forma de entender algo é fazendo!
O mundo é dos fazedores
O que vamos codificar?
A ideia é desenvolver uma Command Line Interface (CLI) que funcionará como uma interface conversacional e de execução de tarefas, interagindo com um Large Language Model (LLM). O funcionamento se dará da seguinte forma:
graph TD A[Usuário: Faz um pedido] --> B(LLM: Cria um plano de ação); B --> C{Plano completo?}; C -- Não --> D[LLM: Seleciona uma ferramenta]; subgraph FERRAMENTAS direction LR E1[Analisar diretório] E2[Ler arquivo] E3[Escrever arquivo] E4[Executar programa] end D --> F[Executa a ação]; F --> G{Verifica resultado da tarefa}; G -- Sucesso --> C; G -- Falha --> D; C -- Sim --> H[FIM];
O primeiro passo
AAntes de mais nada, precisamos decidir qual linguagem iremos utilizar. Eu vou seguir na minha zona de conforto e prosseguir com Python. Escolha a qual você quiser! Tudo poderá ser replicado em outras linguagens, afinal, teremos todos os desenhos arquiteturais definidos.
Criando nosso projeto e configurando o ambiente
Para iniciarmos o projeto, usaremos o uv
:
uv init xabironelson-codex
cd xabironelson-codex
Agora, para criarmos nosso ambiente virtual:
uv venv
Calma lá, capitão
Pô, ninguém nunca tinha me avisado para não colocar o
venv
no.gitignore
. O resultado? O repositório atingiu quatro giba e foi só dor e sofrimento. Para não cometer o mesmo erro do amigo, repita comigo: Sempre coloque ovenv
no.gitignore
!
Ativemos nosso ambiente:
source .venv/bin/activate
Verifique se o ambiente está ativo. Estando tudo certo, vamos adicionar as dependências:
uv add python-dotenv
uv add pydantic
uv add typer
Abençoando o role
Bom, dado que criamos o nosso ambiente virtual, o ativamos e adicionamos algumas dependências agora é só rodar
uv run main.py
Se tudo estiver certo, você verá
Hello from Xabironelson Codex