Projeto LangChain (agents-cli)
O agente é um grafo LangGraph compilado exportado como root_agent de
app/agent.py. Não há dependência google.adk nem executor ADK. Outros
skills google-agents-cli-* assumem ADK; onde descrevem o próprio agente,
este skill prevalece.
Experimental, e o Agent Runtime está degradado. Implante em cloud_run ou gke. No
agent_runtime o app serve, mas publish gemini-enterprise é recusado, o Console
playground não pode invocá-lo, e as sessões/traces do Console permanecem vazios: todos os três querem
as rotas reasoning_engine do ADK que este projeto não serve. Avise isso antes de recomendá-lo.
O que a orientação do ADK mapeia aqui
| Orientação ADK | Este projeto |
|---|---|
LlmAgent, Agent, google.adk.tools | langchain.agents.create_agent, funções Python puras como ferramentas, ou qualquer StateGraph compilado |
adk web, adk run | agents-cli playground (executa langgraph dev) |
Executor ADK por trás de agents-cli run | agents-cli run invoca o grafo in-process |
agents-cli eval dataset synthesize, eval optimize | Indisponível: ambos dirigem o agente através do ADK. O comando informa e encerra |
Adicionar um LlmAgent em app/agent.py | Altere o grafo em app/agent.py; mantenha o nome root_agent |
O contrato
Mantenha estes dois, independentemente do que você construir dentro deles:
app/agent.pyexportaroot_agent, um grafo compilado com estadomessages. Os chamadores usam apenasroot_agent.invoke({"messages": [...]})eroot_agent.astream(stream_mode="messages").app/fast_api_app.pyexpõeapp. Cada destino de implantação executauvicorn app.fast_api_app:app.
Adicionar uma ferramenta significa escrever uma função tipada com docstring e passá-la em
tools=[...]. Trocar de framework (LangGraph StateGraph,
deepagents.create_deep_agent) significa reescrever apenas app/agent.py. LangChain
pré-1.0 (cadeias LCEL, AgentExecutor) não é suportado: não são grafos compilados.
Comandos
agents-cli install # uv sync
agents-cli playground # langgraph dev, porta 8080
agents-cli run "olá" # invoca o grafo in-process
agents-cli eval generate --dataset tests/eval/datasets/basic-dataset.json -o tests/eval/output/
agents-cli eval grade --traces tests/eval/output/<dataset>.json --config tests/eval/eval_config.yaml
agents-cli deploy # inalterado
agents-cli scaffold enhance -d cloud_run --cicd-runner github_actions # adicionar infra depois
playground, run and eval generate são sobrescritos por
agents-cli-extension.yaml na raiz do projeto. Prefixe qualquer comando com
AGENTS_CLI_DISABLE_OVERRIDES=1 para alcançar o comando embutido.
Servindo
Apenas A2A: JSON-RPC em POST /a2a/app, card em
/a2a/app/.well-known/agent-card.json, health em /health. Streaming de tokens
vem de astream(stream_mode="messages").
Erros comuns
- Renomear
root_agentouapp, o que quebrarun, eval e deploy. - Usar
eval dataset synthesizeoueval optimize: eles precisam do ADK. Escreva casos emtests/eval/datasets/e useeval generate+eval grade. - Esperar
/run_sseou rotas de sessão ADK; este servidor serve A2A. - Executar
agents-cli run --url ...contra um agente implantado semAGENTS_CLI_DISABLE_OVERRIDES=1, o que invoca o grafo local em vez disso. runeeval generatechamam Gemini através do Vertex AI com ADC, então precisam deGOOGLE_CLOUD_PROJECTe credenciais, ouGOOGLE_API_KEY/GEMINI_API_KEYem.env.
Referências
references/langchain.md— contrato do framework e detalhe por comando.references/samples.md— agentes que valem a pena copiar, por forma.