Proyecto LangChain (agents-cli)
El agente es un grafo LangGraph compilado exportado como root_agent desde
app/agent.py. No hay dependencia de google.adk ni ejecutor ADK. Otras
habilidades google-agents-cli-* asumen ADK; donde describen al agente en sí,
esta habilidad prevalece.
Experimental, y Agent Runtime está degradado. Desplegar en cloud_run o gke. En
agent_runtime la aplicación sirve, pero publish gemini-enterprise es rechazado, el playground
de Console no puede invocarlo, y las sesiones/trazas de Console permanecen vacías: los tres requieren
las rutas reasoning_engine de ADK que este proyecto no sirve. Dígalo antes de recomendarlo.
Qué orientación de ADK se mapea aquí
| Orientación de ADK | Este proyecto |
|---|---|
LlmAgent, Agent, google.adk.tools | langchain.agents.create_agent, funciones Python simples como herramientas, o cualquier StateGraph compilado |
adk web, adk run | agents-cli playground (ejecuta langgraph dev) |
Ejecutor ADK detrás de agents-cli run | agents-cli run invoca el grafo en proceso |
agents-cli eval dataset synthesize, eval optimize | No disponible: ambos conducen el agente a través de ADK. El comando lo indica y sale |
Agregar un LlmAgent en app/agent.py | Cambiar el grafo en app/agent.py; mantener el nombre root_agent |
El contrato
Mantener estos dos, independientemente de lo que construya dentro de ellos:
app/agent.pyexportaroot_agent, un grafo compilado con estadomessages. Los llamadores solo usanroot_agent.invoke({"messages": [...]})yroot_agent.astream(stream_mode="messages").app/fast_api_app.pyexponeapp. Cada objetivo de despliegue ejecutauvicorn app.fast_api_app:app.
Agregar una herramienta significa escribir una función tipada con un docstring y pasarla en
tools=[...]. Cambiar de framework (LangGraph StateGraph,
deepagents.create_deep_agent) significa reescribir solo app/agent.py. Pre-1.0
LangChain (cadenas LCEL, AgentExecutor) no es compatible: no son grafos compilados.
Comandos
agents-cli install # uv sync
agents-cli playground # langgraph dev, puerto 8080
agents-cli run "hola" # invocar el grafo en proceso
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 # sin cambios
agents-cli scaffold enhance -d cloud_run --cicd-runner github_actions # agregar infraestructura después
playground, run y eval generate son sobrescritos por
agents-cli-extension.yaml en la raíz del proyecto. Anteponga cualquier comando con
AGENTS_CLI_DISABLE_OVERRIDES=1 para usar la versión incorporada.
Servicio
Solo A2A: JSON-RPC en POST /a2a/app, tarjeta en
/a2a/app/.well-known/agent-card.json, salud en /health. El streaming de tokens
proviene de astream(stream_mode="messages").
Errores comunes
- Renombrar
root_agentoapp, lo que romperun, eval y deploy. - Intentar usar
eval dataset synthesizeoeval optimize: requieren ADK. Escriba casos entests/eval/datasets/y useeval generate+eval grade. - Esperar rutas
/run_sseo sesiones ADK; este servidor sirve A2A. - Ejecutar
agents-cli run --url ...contra un agente desplegado sinAGENTS_CLI_DISABLE_OVERRIDES=1, lo que invoca el grafo local en su lugar. runyeval generatellaman a Gemini a través de Vertex AI con ADC, por lo que requierenGOOGLE_CLOUD_PROJECTy credenciales, oGOOGLE_API_KEY/GEMINI_API_KEYen.env.
Referencias
references/langchain.md— contrato del framework y detalle por comando.references/samples.md— agentes que vale la pena copiar, por forma.