Para quem é este guia
Pesquisadores de IA e desenvolvedores que querem explorar, reproduzir e estender experimentos no Agent-Lab. Se você escreve Python, usa Jupyter e pensa em termos de experimentos, agentes e pipelines, vai se sentir em casa. Familiaridade com LLMs, RAG e noções básicas de containers ajuda, mas não é obrigatória.
O Agent-Lab fornece componentes reutilizáveis (tipos de agentes, ferramentas, integrações) e uma coleção de notebooks Jupyter com exemplos passo a passo, para que você se torne produtivo rapidamente.
Início rápido — execute os exemplos
Requisitos: Python 3.12+, um ambiente Jupyter funcional (JupyterLab ou Notebook) e, opcionalmente, Docker local para integrações de ponta a ponta. Trabalhando em um clone do repositório:
uv sync --group notebooks # runtime + notebook dependencies in one virtualenv
jupyter lab # from the repository rootAbra notebooks/ e comece pelo 01_…, avançando pelos que mais interessarem a você.
Observações:
- Os notebooks são, em sua maioria, autocontidos; o cabeçalho de cada um informa as variáveis de ambiente e os serviços externos necessários (chaves de API, endpoints).
- As chaves necessárias ficam em
.env— copie.env.examplee preencha-o (consulte a Referência de configuração). - Para experimentar com o Agent-Lab a partir do seu próprio projeto em vez do
repositório, execute
pip install btech-agent-labe monte a aplicação comcreate_app()— consulte Estendendo o framework no Guia do desenvolvedor.
Estrutura do projeto — visão geral rápida
notebooks/— exemplos interativos de tipos de agentes, avaliação e integrações. Comece aqui.agent_lab/— o pacote do framework:app_factory.py— a raiz de composição:create_app().core/— fontes de configuração, container de DI, resolução deextra_deps.domain/— modelos, interfaces de repositórios, exceções (o Modelo de domínio de entidades).services/— lógica de negócio e as implementações emagent_types/.interface/—api/(routers HTTP) emcp/(o servidor MCP).infrastructure/— adaptadores de banco de dados, autenticação e métricas/tracing.
tests/— suítesunit/,integration/,template/esimulation/(consulte Testes e simulações).doc/— a documentação que você está lendo.
Entender essas camadas mostra onde cada comportamento vive: exemplos em notebooks,
contratos centrais em core/ e domain/, e adaptadores em infrastructure/.
Notebooks — o principal caminho de aprendizado
Progressão típica:
| Notebook | Demonstra |
|---|---|
| 01_setup_embeddings_service.ipynb | Configurar e validar seu provedor de embeddings (comece aqui) |
| 02_test_agent_type-adaptive_rag.ipynb | RAG adaptativo: avaliador de recuperação, reescritor de consultas, avaliador de respostas |
| 03_test_agent_type-react_rag.ipynb | Padrão ReAct com recuperação e uso de ferramentas |
| 04_test_agent_type-vision_document.ipynb | Visão + recuperação de documentos |
| 05_test_agent_type-multiagent-coder.ipynb | Colaboração multiagente para tarefas de código |
| 06_test_agent_type-multiagent-researcher.ipynb | Workflows de pesquisa multiagente |
| 07_test_agent_type-multiagent-browser.ipynb | Agentes de navegação web |
| 08_test_agent_type-multiagent-voice-assistant.ipynb | Agente de voz (e variantes 09/10: Azure Entra ID, rápida) |
| 11_mcp_client-openai-responses.ipynb | Conversando com o servidor MCP a partir da OpenAI Responses API |
Cada notebook contém: uma breve descrição do objetivo do experimento, as variáveis de ambiente e os segredos necessários, funções auxiliares e saídas impressas/visuais para inspecionar as decisões e as métricas dos agentes.
Dica: execute os notebooks em ordem para uma curva de aprendizado incremental. Use datasets e amostras menores enquanto itera, para manter as execuções rápidas.
Conceitos centrais
- Agente — uma implementação registrada em
agent_lab/services/agent_types/(@discoverable_agent). O registro a resolve de forma lazy por meio do container de DI, injetando asextra_depsdeclaradas. - Ferramentas — habilidades específicas que um agente pode chamar (busca,
navegação, TTS/ASR), implementadas como adaptadores em
agent_lab/infrastructure/ouagent_lab/interface/. - Container — o objeto de composição de DI (
agent_lab/core/container.py); crie uma subclasse para adicionar providers aos seus experimentos. - Repositórios — interfaces de acesso a dados em
agent_lab/domain/repositories/. - ConfigSource — de onde vem a configuração; use as fontes YAML em experimentos e o Vault em produção.
Quando quiser modificar um comportamento, decida se a mudança é experimental (apenas
no notebook), arquitetural (core/domain/services) ou de integração
(adaptador em infrastructure). Prefira mudanças pequenas e testáveis — e adicione ou
atualize um notebook para mostrar o novo comportamento.
Executando experimentos e registrando resultados
Os notebooks imprimem os passos intermediários; para experimentos mais robustos:
Use seeds determinísticas onde a aleatoriedade importa.
Registre as métricas relevantes para a sua pergunta — latência, uso de tokens, número de chamadas de ferramentas, pontuações do juiz. A camada de observabilidade exporta tudo como OpenTelemetry (consulte Observabilidade); o harness de simulação registra as pontuações do juiz no Langfuse/LangWatch (consulte Testes e simulações).
Para execuções repetíveis, exporte as células do notebook para scripts e execute-os no CI ou em nós de computação:
jupyter nbconvert --to script notebooks/02_test_agent_type-adaptive_rag.ipynbO
docker/app/Dockerfilegera uma imagem de runtime com versões fixadas para execução reproduzível.
Prototipando novos comportamentos
- Adicione um novo tipo de agente: crie a classe em
agent_lab/services/agent_types/, decore-a com@discoverable_agent("your_type")e adicione um notebook que a monte por meio do container de DI e a exercite com um pequeno cenário. O passo a passo completo está em Construindo workflows agênticos. - Troque o provedor de embeddings: implemente um adaptador compatível em
agent_lab/infrastructure/e valide-o com o notebook 01. - Adicione um armazenamento de recuperação ou banco vetorial: implemente os
métodos do repositório em
agent_lab/domain/repositories/e um adaptador emagent_lab/infrastructure/database/; popule-o com um pequeno notebook de carga e demonstre a recuperação em um notebook de consulta.
Dica de design: mantenha as interfaces dos adaptadores enxutas e teste-as isoladamente com pequenos testes unitários.
Testes e avaliação
make test_unit # unit tests — no infrastructure needed
make test # unit + integration with coverage
make test_simulations # LLM-as-judge agent simulations (live LLMs)Quando você alterar um comportamento central, adicione um teste unitário e um notebook curto demonstrando a mudança — é essa combinação que torna a pesquisa reproduzível aqui. O harness completo, a configuração do juiz e as plataformas de avaliação são explicados em Testes e simulações.
Checklist de reprodutibilidade
- Fixe as versões do seu ambiente (uv +
pyproject.toml/uv.lock). - Registre as seeds e os arquivos de configuração (
config-dev.yml,config-test.yml). - Salve o checkpoint do notebook e quaisquer artefatos de saída (CSV/JSON) junto com o seu experimento.
- Anote os endpoints de tracing para os quais você exportou — os traces são o log do seu experimento.