Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 86 additions & 1 deletion docs/content/3.agent/2.a2a-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ navigation:
我们将借助 Google ADK 的工具函数来便捷地创建一个 A2A Server:

```python [server_agent.py]
from google.adk.a2a.utils.agent_to_a2a import to_a2a
from veadk.a2a.utils.agent_to_a2a import to_a2a
from veadk import Agent
from veadk.tools.demo_tools import get_city_weather

Expand All @@ -27,6 +27,10 @@ agent = Agent(name="weather_reporter", tools=[get_city_weather])
app = to_a2a(agent)
```

::callout{icon="i-lucide-info"}
默认情况下,A2A Server 不启用认证功能。如果需要启用 VeADK 的认证和凭据管理功能,请参考下面的 [启用认证功能](#启用认证功能) 章节。
::

### 本地启动 A2A Server

```bash [Terminal]
Expand All @@ -51,8 +55,51 @@ print(response) # 北京天气晴朗,气温25°C。

::

## 启用认证功能

VeADK 提供了内置的认证和凭据管理功能,可以在 A2A Server 和 Client 之间进行安全的身份验证和凭据传递。

### Server 侧启用认证

在创建 A2A Server 时,通过设置 `enable_auth=True` 来启用认证功能:

```python [server_agent.py]
from veadk.a2a.utils.agent_to_a2a import to_a2a
from veadk import Agent
from veadk.tools.demo_tools import get_city_weather

agent = Agent(name="weather_reporter", tools=[get_city_weather])

# 启用 VeADK 认证功能
app = to_a2a(agent, enable_auth=True)
```

启用认证后,Server 会:
- 自动创建 `VeCredentialService` 来管理凭据
- 添加认证中间件来验证请求中的 token
- 支持凭据在 Server 和 Client 之间的安全传递

### 认证方式

`to_a2a` 支持两种认证方式,通过 `auth_method` 参数指定:

```python
# 方式 1: 从 HTTP Header 中提取 token (默认)
app = to_a2a(agent, enable_auth=True, auth_method="header")

# 方式 2: 从 Query String 中提取 token
app = to_a2a(agent, enable_auth=True, auth_method="querystring")
```


### Client 侧使用认证

当 Server 启用认证后,Client 侧的 `RemoteVeAgent` 会**自动处理认证**

## 初始化选项

### RemoteVeAgent 参数

::field-group
::field{name="name" type="string"}
智能体的名称
Expand All @@ -62,3 +109,41 @@ print(response) # 北京天气晴朗,气温25°C。
远程智能体的访问端点
::
::

### to_a2a 参数

::field-group
::field{name="agent" type="BaseAgent" required}
要转换为 A2A Server 的智能体实例
::

::field{name="host" type="string" default="localhost"}
A2A Server 的主机地址
::

::field{name="port" type="int" default="8000"}
A2A Server 的端口号
::

::field{name="protocol" type="string" default="http"}
A2A Server 的协议(http 或 https)
::

::field{name="agent_card" type="AgentCard | string"}
可选的智能体卡片对象或 JSON 文件路径。如果不提供,将自动从智能体生成
::

::field{name="runner" type="Runner"}
可选的 Runner 对象。如果不提供,将自动创建默认 Runner
::

::field{name="enable_auth" type="bool" default="false"}
是否启用 VeADK 认证功能。启用后会添加凭据服务和认证中间件
::

::field{name="auth_method" type="'header' | 'querystring'" default="header"}
认证方式。仅在 `enable_auth=True` 时有效
- `header`: 从 Authorization header 中提取 token
- `querystring`: 从 query parameter 中提取 token
::
::
Loading