跳至主要内容

Agent Gateway (A2A 协议) - 概述

在 LiteLLM AI 网关上添加 A2A 代理,通过 A2A 协议调用代理,并在 LiteLLM 日志中跟踪请求/响应记录。管理哪些团队或密钥可以访问已接入的代理。



功能支持
支持的代理提供商A2A, Vertex AI Agent Engine, LangGraph, Azure AI Foundry, Bedrock AgentCore, Pydantic AI
日志记录
负载均衡
流式传输
迭代预算
提示

LiteLLM 遵循 A2A (代理对代理) 协议 来调用代理。

添加您的代理

添加 A2A 代理

您可以通过 LiteLLM 管理界面 (Admin UI) 添加兼容 A2A 的代理。

  1. 导航至 Agents (代理) 选项卡
  2. 点击 Add Agent (添加代理)
  3. 输入代理名称(例如 ij-local)和您的 A2A 代理 URL

该 URL 应为您的 A2A 代理的调用 URL(例如 https://:10001)。

添加 Azure AI Foundry 代理

请遵循此指南,将您的 Azure AI Foundry 代理添加到 LiteLLM 代理网关

添加 Vertex AI Agent Engine

请遵循此指南,将您的 Vertex AI Agent Engine 添加到 LiteLLM 代理网关

添加 Bedrock AgentCore 代理

请遵循此指南,将您的 Bedrock AgentCore 代理添加到 LiteLLM 代理网关

添加 LangGraph 代理

请遵循此指南,将您的 LangGraph 代理添加到 LiteLLM 代理网关

添加 Pydantic AI 代理

请遵循此指南,将您的 Pydantic AI 代理添加到 LiteLLM 代理网关

调用您的代理

请参阅调用 A2A 代理指南,了解如何使用以下方式调用您的代理:

  • A2A SDK - 原生 A2A 协议,完全支持任务和工件 (artifacts)
  • OpenAI SDK - 熟悉的 /chat/completions 接口,带有 a2a/ 模型前缀

跟踪代理日志

调用代理后,您可以在 LiteLLM 的 Logs (日志) 选项卡中查看请求记录。

日志显示内容:

  • 请求/响应内容:发送至代理及从代理接收的内容
  • 用户、密钥、团队信息:用于跟踪是谁发出的请求
  • 延迟和成本指标

转发 LiteLLM 上下文标头

当 LiteLLM 调用您的 A2A 代理时,它会发送特殊的标头,从而实现:

  • 追踪分组 (Trace Grouping):来自同一代理执行的所有 LLM 调用将显示在同一个追踪中
  • 代理支出跟踪 (Agent Spend Tracking):成本被归因于特定代理
目的
X-LiteLLM-Trace-Id将所有 LLM 调用链接到同一执行流
X-LiteLLM-Agent-Id将支出归因于正确的代理

要启用这些功能,您的 A2A 服务器必须转发这些标头到它返回给 LiteLLM 的任何 LLM 调用中。

实施步骤

第 1 步:从传入的 A2A 请求中提取标头

    """Extract X-LiteLLM-* headers from incoming A2A request."""
all_headers = request.call_context.state.get('headers', {})
return {
k: v for k, v in all_headers.items()
if k.lower().startswith('x-litellm-')
}

第 2 步:将标头转发到您的 LLM 调用 在调回 LiteLLM 时传入提取的标头


headers = get_litellm_headers(request)

client = OpenAI(
api_key="sk-your-litellm-key",
base_url="https://:4000",
default_headers=headers, # Forward headers
)

response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)

结果

启用标头转发后,您将看到:

Langfuse 中的追踪分组

代理支出归因

API Reference

Endpoint

POST /a2a/{agent_name}/message/send

身份验证

Authorization 标头中包含您的 LiteLLM 虚拟密钥

Authorization: Bearer sk-your-litellm-key

请求格式

LiteLLM 遵循 A2A JSON-RPC 2.0 规范

请求体
{
"jsonrpc": "2.0",
"id": "unique-request-id",
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [{"kind": "text", "text": "Your message here"}],
"messageId": "unique-message-id"
}
}
}

响应格式

响应
{
"jsonrpc": "2.0",
"id": "unique-request-id",
"result": {
"kind": "task",
"id": "task-id",
"contextId": "context-id",
"status": {"state": "completed", "timestamp": "2025-01-01T00:00:00Z"},
"artifacts": [
{
"artifactId": "artifact-id",
"name": "response",
"parts": [{"kind": "text", "text": "Agent response here"}]
}
]
}
}

代理注册表

想要创建一个中央注册表,以便您的团队可以发现公司内部有哪些代理可用吗?

使用 AI Hub 使代理公开并在整个组织内可被发现。这使开发人员无需重新构建即可浏览可用代理。