diff --git a/docs/docs/agent/agent-to-agent.md b/docs/docs/agent/agent-to-agent.md
index 0999321c..3d3d4cc6 100644
--- a/docs/docs/agent/agent-to-agent.md
+++ b/docs/docs/agent/agent-to-agent.md
@@ -3,43 +3,49 @@ title: A2A Agent
---
## Agent-to-Agent 协议简介
+
对于复杂度较高的任务,往往无法依赖单个 Agent 独立完成,需要通过协同多个专用 Agent 共同解决。**Agent2Agent (A2A) 协议** 是用于在多个 Agent 之间进行通信的标准。
!!! note 参考链接
- [A2A 协议官方文档](https://a2a-protocol.org/latest/)
## 多 Agent 系统
+
多 Agent 系统架构通常有两种架构方式: **Local Sub-Agents** 和 **Remote Agents (A2A)**
- **Local Sub-Agents**:这类 Agent 与主 Agent 在同一个应用进程中。它们更像内部模块或库,用于将代码组织为逻辑、可复用的组件。主 Agent 与 Local Sub-Agents 之间的通信直接发生在内存中,无需网络开销,因此速度非常快。
- **Remote Agents (A2A)**:这类 Agent 以独立服务形式运行,通过网络进行通信。A2A 为此类通信定义了标准协议。
-### 如何选择合适的 Agent 架构
+
+### 如何选择合适的 Agent 架构
+
并不是所有场景都适合使用 A2A,需要您参考以下建议,结合实际使用场景和需求作出合适选择:
#### 适合使用 A2A 的场景
-| 场景名称 | 说明 |
-| --------------- | ----------------------------------------- |
-| **集成第三方服务** | 需要交互的 Agent 是一个独立的、可单独运行的第三方服务(例如需要从外部金融数据服务获取实时交易信息) |
-| **微服务架构** | 不同的 Agent 由不同的团队或组织维护, A2A 用于些服务跨网络边界相互通信 |
-| **跨语言通信** | 要连接使用不同编程语言或 Agent 框架实现的 Agent, A2A 提供了标准化的通信层 |
-| **严格的 API 契约** |为了保证兼容性与稳定性,需要为 Agent 之间的交互制定严格契约 |
-
-
-
-#### 不适用 A2A 的场景(更适合 Local Sub-Agents):
-| 场景名称 | 说明 |
-| ----------- | ----------------------------------------- |
-| **内部代码组织** | 您在单个 Agent 内将复杂任务拆分为更小、可管理的函数或模块,这类场景出于性能与简洁考虑,更适合作为本地子 |
-| **性能关键的内部操作** | 某个 Sub Agent 负责与主 Agent 执行紧密耦合的高频、低延迟操作,这类场景由于需要低延迟响应,更适合作为本地Local Sub-Agents。 |
-| **共享内存或上下文** | 当 Sub Agent 需要直接访问主 Agent 的内部状态或共享内存以提高效率时,A2A 的网络开销与序列化/反序列化会适得其反 |
-| **简单的辅助函数** |对于无需独立部署或复杂状态管理的小型复用逻辑,直接在同一 Agent 中编写函数或类,通常比拆分为独立的 A2A Agent 更合适 |
-
-## VeADK 中的 A2A 工作流:
+
+| 场景名称 | 说明 |
+| - | - |
+| **集成第三方服务** | 需要交互的 Agent 是一个独立的、可单独运行的第三方服务(例如需要从外部金融数据服务获取实时交易信息) |
+| **微服务架构** | 不同的 Agent 由不同的团队或组织维护, A2A 用于些服务跨网络边界相互通信 |
+| **跨语言通信** | 要连接使用不同编程语言或 Agent 框架实现的 Agent, A2A 提供了标准化的通信层 |
+| **严格的 API 契约** | 为了保证兼容性与稳定性,需要为 Agent 之间的交互制定严格契约 |
+
+#### 不适用 A2A 的场景(更适合 Local Sub-Agents)
+
+| 场景名称 | 说明 |
+| - | - |
+| **内部代码组织** | 您在单个 Agent 内将复杂任务拆分为更小、可管理的函数或模块,这类场景出于性能与简洁考虑,更适合作为本地子 |
+| **性能关键的内部操作** | 某个 Sub Agent 负责与主 Agent 执行紧密耦合的高频、低延迟操作,这类场景由于需要低延迟响应,更适合作为本地Local Sub-Agents |
+| **共享内存或上下文** | 当 Sub Agent 需要直接访问主 Agent 的内部状态或共享内存以提高效率时,A2A 的网络开销与序列化/反序列化会适得其反 |
+| **简单的辅助函数** | 对于无需独立部署或复杂状态管理的小型复用逻辑,直接在同一 Agent 中编写函数或类,通常比拆分为独立的 A2A Agent 更合适 |
+
+## VeADK 中的 A2A 工作流
+
**VeADK** 简化了基于 A2A 协议构建并连接 Agent 的过程。下面是一个直观的工作流概览:
-1. **对 Agent 开放访问(Exposing):** 从现有的 VeADK Agent 入手,将其转化为一个 A2AServer, 把它变成能让其他 Agent 可访问的形式。A2AServer 可以视作为 Agent 搭建的一个 Web 服务,其他 Agent 可以通过它向您的 Agent 发送请求。
+1. **对 Agent 开放访问(Exposing):** 从现有的 VeADK Agent 入手,将其转化为一个 A2AServer,把它变成能让其他 Agent 可访问的形式。A2AServer 可以视作为 Agent 搭建的一个 Web 服务,其他 Agent 可以通过它向您的 Agent 发送请求。
2. **连接到开放访问的 Agent(Consuming):**在另一个 Agent 中(可能运行于同一台机器,也可能运行于不同机器),可使用名为 `RemoteVeAgent` 的 VeADK 组件,作为客户端访问上一步创建的 A2AServer,`RemoteVeAgent` 会在后台处理网络通信、鉴权和数据格式等复杂问题。
**VeADK** 对网络层进行了抽象封装,使分布式多 Agent 系统使用体验接近本地系统, 下图展示了一个完整的 **A2A 系统拓扑**:
+
```mermaid
flowchart LR
A[Root Agent
(需要访问其它 Agent)
]
@@ -54,13 +60,16 @@ flowchart LR
```
## 构建一个本地 A2A 项目
+
下面是一个利用 A2A 搭建的系统示例:
### 创建 A2A 服务器
+
1. 定义 Agent 工具和功能
-2. 使用 to_a2a() 函数将 Agent 转换为 A2AServer
+2. 使用 `to_a2a(...)` 函数将 Agent 转换为 A2AServer
3. 配置服务器参数(端口、主机等)
-=== "代码"
+
+=== "Python"
```python title="server.py" linenums="1" hl_lines="1 11"
from google.adk.a2a.utils.agent_to_a2a import to_a2a
@@ -75,13 +84,16 @@ agent = Agent(
app = to_a2a(agent=agent)
```
+
### 客户端集成
-1. 导入 RemoteVeAgent 类
+
+1. 导入 `RemoteVeAgent` 类
2. 配置远程 Agent 连接参数
3. 在 Root Agent 中添加 Remote Agent 作为 Sub Agent
-=== "代码"
-```python title="client.py" linenums="1"
+=== "Python"
+
+```python title="client.py" linenums="1" hl_lines="15 24"
from veadk import Agent, Runner
from veadk.a2a.remote_ve_agent import RemoteVeAgent
@@ -120,8 +132,11 @@ if __name__ == "__main__":
response = asyncio.run(main("What is the weather like of Beijing?"))
print(response)
```
+
### 交互流程
+
下图为示例对应的交互流程图
+
```mermaid
sequenceDiagram
participant User as 用户
@@ -149,13 +164,18 @@ sequenceDiagram
Client-->>User: 显示天气信息
```
-## A2A Client 鉴权参数
-VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Bearer token 认证和查询参数认证两种常见模式,同时也支持无认证的公开服务场景,能够满足不同的安全需求
-### Querystring 方式
-- 将认证令牌作为 URL 查询参数 token={auth_token} 传递
-- 通过设置 auth_method 为 "querystring" 来启用
+## 身份认证与鉴权
+
+VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Bearer token 认证和查询参数认证两种常见模式,同时也支持无认证的公开服务场景,能够满足不同的安全需求。
+
+### QueryString 方式
+
+- 将认证令牌作为 URL 查询参数 `?token={auth_token}` 传递
+- 通过设置 `auth_method` 为 `querystring` 来启用
- 适用于某些特定的 API 网关或服务配置
-=== "代码"
+
+=== "Python"
+
```python title="client.py" linenums="1" hl_lines="5"
remote_agent = RemoteVeAgent(
name="a2a_agent",
@@ -166,10 +186,13 @@ VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Beare
```
### Header 方式
-- 使用 Authorization: Bearer {auth_token} 格式的 HTTP header 进行鉴权
-- 通过设置 auth_method="header" 来启用
+
+- 使用 Authorization: Bearer {auth_token} 格式的 HTTP 请求头进行鉴权
+- 通过设置 `auth_method="header"` 来启用
- 适用于需要在 HTTP header 中传递认证信息的场景
-=== "代码"
+
+=== "Python"
+
```python title="client.py" linenums="1" hl_lines="5"
remote_agent = RemoteVeAgent(
name="a2a_agent",
@@ -179,13 +202,16 @@ VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Beare
)
```
-??? note "火山引擎 veFaaS 采用的默认鉴权方式"
+??? note "火山引擎 VeFaaS 采用的默认鉴权方式"
- 当您使用火山引擎 veFaaS 作为您的 Agent runtime 时,默认使用 Querystring 方式进行认证鉴权,请参考以下截图中的 “我的应用”中可以查看您创建的资源对应的访问地址信息中携带的 Querystring 认证鉴权信息

### 自定义 HTTP 客户端
-在 VeADK中,主要通过 RemoteVeAgent 类来实现自定义 HTTP 客户端的配置,它提供了一个 httpx_client 参数,允许您传入预配置的 httpx.AsyncClient 实例。这使得您可以灵活地控制 HTTP 请求的各种参数,如代理设置、超时控制、连接池管理等,从而更好地适应不同的网络环境和需求。
-#### 您可以通过运参考以下示例代码设置创建自定义的 HTTP 客户端,可配置各种 HTTP 客户端参数,如:
+
+在 VeADK中,主要通过 `RemoteVeAgent` 类来实现自定义 HTTP 客户端的配置,它提供了一个 `httpx_client` 参数,允许您传入预配置的 `httpx.AsyncClient` 实例。这使得您可以灵活地控制 HTTP 请求的各种参数,如代理设置、超时控制、连接池管理等,从而更好地适应不同的网络环境和需求。
+
+您可以通过运参考以下示例代码设置创建自定义的 HTTP 客户端,可配置各种 HTTP 客户端参数,如:
+
- 超时设置
- 代理配置
- 连接池大小
@@ -193,10 +219,11 @@ VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Beare
- 自定义请求头
- SSL 验证选项
-=== "代码"
- ```python title="client.py" linenums="1"
+=== "Python"
+
+ ```python title="client.py" linenums="1" hl_lines="4 43"
# <...code truncated...>
-
+
# 创建自定义的 httpx.AsyncClient 实例
custom_client = httpx.AsyncClient(
# 基础 URL 设置
@@ -242,7 +269,3 @@ VeADK 的 A2A 鉴权机制提供了灵活的认证选项,支持标准的 Beare
# <...code truncated...>
```
-
-
-
-
diff --git a/docs/docs/agent/agent.md b/docs/docs/agent/agent.md
index a6aa87f4..81142c13 100644
--- a/docs/docs/agent/agent.md
+++ b/docs/docs/agent/agent.md
@@ -90,7 +90,6 @@
}
```
-
=== "所需环境变量"
环境变量列表:
@@ -126,17 +125,16 @@
```golang title="agent.go" linenums="1" hl_lines="2-4"
cfg := &veagent.Config{}
- cfg.Name = "life_assistant"
- cfg.Description = "生活助手"
- cfg.Instruction = "你是一个生活助手,你可以回答用户的问题。"
-
- veAgent, err := veagent.New(cfg)
- if err != nil {
- fmt.Printf("NewVeAgent failed: %v", err)
- return
- }
- ```
+ cfg.Name = "life_assistant"
+ cfg.Description = "生活助手"
+ cfg.Instruction = "你是一个生活助手,你可以回答用户的问题。"
+ veAgent, err := veagent.New(cfg)
+ if err != nil {
+ fmt.Printf("NewVeAgent failed: %v", err)
+ return
+ }
+ ```
其中,`name` 代表 Agent 的名称,`description` 是对 Agent 功能的简单描述(在Agent Tree中唯一标识某个Agent),`instruction` 是 Agent 的系统提示词,用于定义其行为和响应风格。
@@ -161,50 +159,56 @@
```golang title="agent.go" linenums="1" hl_lines="2-4"
cfg := &veagent.Config{
- ModelName: "...",
- ModelAPIBase: "...",
- ModelAPIKey: "...",
- }
+ ModelName: "...",
+ ModelAPIBase: "...",
+ ModelAPIKey: "...",
+ }
veAgent, err := veagent.New(cfg)
- if err != nil {
- fmt.Printf("NewVeAgent failed: %v", err)
- return
- }
+ if err != nil {
+ fmt.Printf("NewVeAgent failed: %v", err)
+ return
+ }
```
-由于 python VeADK 的 Agent 基于 [LiteLLM]() 实现,因此您可以使用 LiteLLM 支持的所有模型提供商。您可以查看 [LiteLLM 支持的模型提供商列表](https://docs.litellm.ai/docs/providers)来设置 `model_provider` 参数。
+VeADK Python 版本中的 Agent 推理模型基于 [LiteLLM](https://github.com/BerriAI/litellm) 实现,因此您可以使用 LiteLLM 支持的所有模型提供商。您可以查看 [LiteLLM 支持的模型提供商列表](https://docs.litellm.ai/docs/providers)来设置 `model_provider` 参数。
-基于 LiteLLM 的 [Fallbacks](https://docs.litellm.ai/docs/completion/reliable_completions) 容错机制,VeADK 实现了智能的模型切换能力。当目标模型经多次重试仍调用失败时,系统将自动切换至备选模型继续执行任务:
+#### 模型容错
+
+VeADK 为您提供了基于 LiteLLM 的 [Fallbacks](https://docs.litellm.ai/docs/completion/reliable_completions) 模型容错机制,能够在前序模型访问失败时进行模型自动切换。例如,当目标模型经多次重试仍调用失败时,系统将自动切换至备选模型来继续执行任务:
=== "Python"
- ```python title="agent.py" linenums="1" hl_lines="4"
+ ```python title="agent.py" linenums="1" hl_lines="4-8"
from veadk import Agent
-
+
agent = Agent(
- model_name=["doubao-seed-1-8-251215", "doubao-seed-1-6-251015", "doubao-seed-1.6-250615"]
+ model_name=[
+ "doubao-seed-1-8-251215",
+ "doubao-seed-1-6-251015",
+ "doubao-seed-1.6-250615",
+ ]
)
```
-在上述配置中,VeADK 默认会首先尝试 doubao-seed-1-8-251215,如果失败再去尝试后续模型,直至成功。
-
-golang 暂不支持 LiteLLM,因此 VeADK 的 Agent 基于 OpenAI 实现,因此您可以使用所有支持OpenAI协议的模型。
+在上述配置中,VeADK 默认会首先尝试 `doubao-seed-1-8-251215` 模型,如果失败后会尝试后续模型,直至成功。
-#### 设置模型客户端
+#### 自定义您的模型客户端
VeADK 支持您直接定义 LiteLLM 的客户端,来实现高度自定义的模型配置:
-```python title="agent.py" linenums="1" hl_lines="5 8"
-from google.adk.models.lite_llm import LiteLlm
-from veadk import Agent
+=== "Python"
-# 自定义您的模型客户端
-llm = LiteLlm()
+ ```python title="agent.py" linenums="1" hl_lines="5 8"
+ from google.adk.models.lite_llm import LiteLlm
+ from veadk import Agent
-# 直接将模型客户端传递给 Agent
-agent = Agent(model=llm)
-```
+ # 自定义您的模型客户端
+ llm = LiteLlm()
+
+ # 直接将模型客户端传递给 Agent
+ agent = Agent(model=llm)
+ ```
#### 配置模型额外参数
@@ -236,21 +240,20 @@ agent = Agent(model=llm)
)
veAgent, err := veagent.New(&veagent.Config{
- ModelExtraConfig: map[string]any{
- "extra_body": map[string]any{
- "thinking": map[string]string{
- "type": "disabled",
- },
- },
- },
- })
- if err != nil {
- fmt.Printf("NewVeAgent failed: %v", err)
- return
- }
+ ModelExtraConfig: map[string]any{
+ "extra_body": map[string]any{
+ "thinking": map[string]string{
+ "type": "disabled",
+ },
+ },
+ },
+ })
+ if err != nil {
+ fmt.Printf("NewVeAgent failed: %v", err)
+ return
+ }
```
-
### 通过配置文件
在您构建 Agent 过程中,往往需要更加简洁的 Agent 定义方式与配置管理。为了方便这种场景,VeADK 提供了 YAML 文件定义方式。该方法以声明式语法描述智能体的全部元信息与行为结构。
@@ -265,7 +268,7 @@ root_agent:
description: An intelligent_assistant which can provider weather information.
instruction: Help user according to your tools.
model_name: doubao-1-5-pro-32k-250115
- model_api_key: xxx # 您的模型API Key
+ model_api_key: ... # 您的模型API Key
tools:
- name: veadk.tools.demo_tools.get_city_weather # tool 所在的模块及函数名称
```
@@ -297,14 +300,14 @@ response = asyncio.run(runner.run("今天北京天气如何?"))
print(response)
```
-### 构建 Agent 的方法对比
+## 构建 Agent 的方法对比
**对比总结**:
-| 特性 | 代码方式 | YAML 方式 |
+| 特性 | 代码方式 | YAML 方式 |
| ---- | ----- | ------- |
-| 灵活性 | 高 | 中 |
-| 可读性 | 中 | 高 |
-| 可维护性 | 中 | 高 |
-| 动态生成 | 支持 | 一般 |
-| 适用场景 | 开发、生产 | 实验、配置化、生产 |
+| 灵活性 | 高 | 中 |
+| 可读性 | 中 | 高 |
+| 可维护性 | 中 | 高 |
+| 动态生成 | 支持 | 一般 |
+| 适用场景 | 开发、生产 | 实验、配置化、生产 |
diff --git a/docs/docs/agent/responses-api.md b/docs/docs/agent/responses-api.md
index 7b6b19fc..33e66460 100644
--- a/docs/docs/agent/responses-api.md
+++ b/docs/docs/agent/responses-api.md
@@ -28,7 +28,7 @@ Responses API 是火山方舟最新推出的 API 接口,原生支持高效的
from veadk import Agent
root_agent = Agent(
- enable_responses=True, # 开启 Responses API
+ enable_responses=True, # 开启 Responses API
)
```
diff --git a/docs/docs/auth/oauth2-user-federation-outbound.md b/docs/docs/auth/oauth2-user-federation-outbound.md
index 28f4dfcb..d99f649d 100644
--- a/docs/docs/auth/oauth2-user-federation-outbound.md
+++ b/docs/docs/auth/oauth2-user-federation-outbound.md
@@ -17,7 +17,7 @@ OAuth2 USER_FEDERATION 认证用于用户委托场景,应用代表用户访问
- Client ID
- Client Secret
-- 回调 URL(选择[回调地址](./4.oauth2-user-federation-outbound.md#回调地址)对应区域的地址)
+- 回调 URL(选择[回调地址](#回调地址)对应区域的地址)
### 方式二:使用 OIDC 配置
@@ -27,7 +27,7 @@ OAuth2 USER_FEDERATION 认证用于用户委托场景,应用代表用户访问
- Client ID
- Client Secret
- 权限范围:至少包含 `openid`
-- 回调 URL(选择[回调地址](./4.oauth2-user-federation-outbound.md#回调地址)对应区域的地址)
+- 回调 URL(选择[回调地址](#回调地址)对应区域的地址)
### 方式三:使用自定义 OAuth2 配置
@@ -39,7 +39,7 @@ OAuth2 USER_FEDERATION 认证用于用户委托场景,应用代表用户访问
- Issuer
- 授权端点
- 令牌端点
-- 回调 URL(选择[回调地址](./4.oauth2-user-federation-outbound.md#回调地址)对应区域的地址)
+- 回调 URL(选择[回调地址](#回调地址)对应区域的地址)
## 回调地址
diff --git a/docs/docs/auth/overview.md b/docs/docs/auth/overview.md
index 10d73c92..37744c19 100644
--- a/docs/docs/auth/overview.md
+++ b/docs/docs/auth/overview.md
@@ -73,9 +73,9 @@ A: Agent Identity 会自动处理:
## 后续步骤
-- [使用 API Key 进行出站认证](./2.api-key-outbound.md)
-- [使用 OAuth2 M2M 进行出站认证](./3.oauth2-m2m-outbound.md)
-- [使用 OAuth2 USER_FEDERATION 进行出站认证](./4.oauth2-user-federation-outbound.md)
+- [使用 API Key 进行出站认证](./api-key-outbound.md)
+- [使用 OAuth2 M2M 进行出站认证](./oauth2-m2m-outbound.md)
+- [使用 OAuth2 USER_FEDERATION 进行出站认证](./oauth2-user-federation-outbound.md)
## 相关资源
diff --git a/docs/docs/cli.md b/docs/docs/cli.md
index 9b047601..8b4271e5 100644
--- a/docs/docs/cli.md
+++ b/docs/docs/cli.md
@@ -43,17 +43,22 @@ VeADK 提供如下命令便捷您的操作:
### 使用示例
启动交互式初始化流程:
+
```bash
veadk init
```
+
执行以上命令后,您将被引导完成项目初始化流程。根据提示输入项目名称、本地目录名称、Volcengine FaaS 应用名称、Volcengine API Gateway 实例名称、服务名称、上游名称等信息,以默认项目名称`weather-reporter`为例:

您也可以在初始化时直接指定使用 `web_template` 模板:
+
```bash
veadk init --vefaas-template-type web_template
```
+
执行完成之后,命令所生成的目录结构如下:
-```
+
+```bash
weather-reporter/
├────src # 智能体项目源代码目录
│ ├────weather_report # 天气预报智能体项目目录
@@ -94,27 +99,35 @@ weather-reporter/
### 使用示例
启动交互式创建流程:
+
```bash
veadk create
```
+
您也直接指定智能体名称来创建,例如:
+
```bash
veadk create location-agent
```
+
在执行以上命令后,您将被引导完成智能体创建流程。首先,系统会提示您选择以何种方式提供 API Key,您可以选择直接输入或稍后配置。如下所示:

您也可以在创建时同时提供 API Key:
+
```bash
veadk create location-agent --ark-api-key "xxxxxx"
```
+
该命令会创建一个包含 API Key 的 `.env` 文件。您可以稍后编辑此文件以更新 API Key。命令创建的完整目录结构如下:
-```
+
+```bash
location-agent/
├── .env # 包含 API key 的环境配置
├── __init__.py # Python 包初始化文件
└── agent.py # 主要智能体定义文件
```
-这时,您可以使用 `veadk web` 命令来运行示例`location-agent` 智能体,具体执行方式及参数说明请参考下一节:[Web 调试界面](#web-调试界面)。
+
+这时,您可以使用 `veadk web` 命令来运行示例`location-agent` 智能体。
## Web 调试界面
@@ -135,24 +148,27 @@ location-agent/
| `--log-level` | [debug\|info\|warning\|error] | 设置日志输出级别,默认值为 info |
| `--help` | | 显示此帮助信息并退出 |
-**长短期记忆机制**
+**长短期记忆机制**:
VeADK Web 调试界面支持智能体的短期记忆和长期记忆功能,这些机制通过以下方式传递到 Web 界面中:
**短期记忆传递**:
- - 智能体在交互过程中产生的对话历史会自动保存为短期记忆
- - Web 界面通过会话 ID 关联智能体的短期记忆数据
- - 每次对话都会加载对应的短期记忆上下文
+
+- 智能体在交互过程中产生的对话历史会自动保存为短期记忆
+- Web 界面通过会话 ID 关联智能体的短期记忆数据
+- 每次对话都会加载对应的短期记忆上下文
**长期记忆传递**:
- - 智能体的知识库配置信息会传递给 Web 界面
- - Web 界面支持基于长期记忆的智能体行为定制
- - 长期记忆数据通过智能体配置自动加载
+
+- 智能体的知识库配置信息会传递给 Web 界面
+- Web 界面支持基于长期记忆的智能体行为定制
+- 长期记忆数据通过智能体配置自动加载
**记忆服务集成**:
- - 自动检测并配置相应的记忆后端服务
- - 支持多种记忆存储类型(local、mysql、redis等)
- - 记忆数据在 Web 界面中实时同步和更新
+
+- 自动检测并配置相应的记忆后端服务
+- 支持多种记忆存储类型(local、mysql、redis等)
+- 记忆数据在 Web 界面中实时同步和更新
### 使用示例
@@ -167,14 +183,12 @@ veadk web --port 8080
该命令能够自动读取执行命令目录中的 `agent.py` 文件,并加载其中的 `root_agent` 全局变量。服务启动后,通常可以在 `http://127.0.0.1:8000` 访问。
-
### 使用示例
使用示例如下图示:

在界面左上角的选择框中,您可以选择要调试的智能体。在本示例中,您可以看到您创建的`location-agent`智能体。
-
## 知识库
`veadk kb` 命令是用于管理 VeADK 知识库的命令集。
@@ -198,9 +212,9 @@ veadk web --port 8080
| 参数 | 类型 | 描述 |
| :--- | :--- | :--- |
-| `--backend` | [local\|opensearch\|viking\|redis] | **(必需)** 知识库后端类型。 |
-| `--app_name` | TEXT | 用于组织和隔离知识库数据的应用标识符。 |
-| `--index` | TEXT | 知识库索引标识符,在 `app_name` 内唯一。|
+| `--backend` | [local\|opensearch\|viking\|redis] | **(必需)** 知识库后端类型 |
+| `--app_name` | TEXT | 用于组织和隔离知识库数据的应用标识符 |
+| `--index` | TEXT | 知识库索引标识符,在 `app_name` 内唯一 |
| `--path` | TEXT | **(必需)** 要添加的知识内容的文件或目录路径。 |
| `--help` | | 显示此帮助信息并退出。 |
@@ -211,7 +225,7 @@ veadk web --port 8080
- **viking**: 火山引擎的托管向量数据库服务,为语义搜索和 RAG 应用优化。
- **redis**: 具有向量搜索功能的内存数据存储,适用于快速检索、较小的知识库。
-**注意**
+**注意**:
veadk kb add 命令需要将您的文档内容转换成向量,这个过程默认会使用一个嵌入模型(Embedding Model)服务,该服务会将文档内容转换为向量表示。您可以根据需要配置不同的嵌入模型,例如火山引擎的方舟大模型平台。
@@ -224,7 +238,8 @@ veadk kb add 命令需要将您的文档内容转换成向量,这个过程默
下面的示例将演示将单个文件添加到redis作为后端的知识库,并在后续的智能体调用中使用。
假设您在当前目录下有一个名为`qa.md`的文件,内容如下:
-```
+
+```markdown
# 智能客服知识库
## 1. 公司简介
@@ -272,10 +287,12 @@ A4: 知识库支持 **实时更新**,管理员提交后即可立即生效。
```
您可以使用以下命令将其添加到本地知识库:
+
```bash
veadk kb add --backend redis --app_name app --path ./qa.md
```
-**注意**
+
+**注意**:
- 在本例中,我们选择的是redis后端。您需要事先在本地目录的`.env`文件中配置好`DATABASE_REDIS_HOST`,`DATABASE_REDIS_HOST`,`DATABASE_REDIS_PORT`,`DATABASE_REDIS_PASSWORD`(以及可选的`DATABASE_REDIS_USER`)等环境变量。
- 您需要确认您配置的redis服务是否正常运行,并且端口号是否与您在`.env`文件中配置的一致。
@@ -285,6 +302,7 @@ veadk kb add --backend redis --app_name app --path ./qa.md

接下来,您可以通过如下代码来验证智能库是否添加成功:
+
```python
import asyncio
@@ -317,9 +335,9 @@ response = asyncio.run(
)
print(response)
-
```
-**注意**
+
+**注意**:
- 您需要确认您运行上述代码时,redis服务正常运行并已经开启向量搜索功能。同时,这段代码需要和上面的命令共享相同的环境变更配置(建议在相同目录下运行,这样可以共享相同的.env配置文件。)
- 代码中的'app_name'需要与上面的命令中的'app_name'保持一致,在本 示例中为'app'。
@@ -345,7 +363,7 @@ print(response)
| `--veapig-instance-name` | TEXT | (可选) 用于配置外部 API 访问的火山引擎 API 网关实例名称。 |
| `--veapig-service-name` | TEXT | (可选) 火山引擎 API 网关服务名称。 |
| `--veapig-upstream-name` | TEXT | (可选) 火山引擎 API 网关上游名称。 |
-| `--short-term-memory-backend`| [local\|mysql] | 短期记忆存储的后端类型。默认为 `local`。 |
+| `--short-term-memory-backend` | [local\|mysql] | 短期记忆存储的后端类型。默认为 `local`。 |
| `--use-adk-web` | | 为部署的智能体启用 ADK Web 界面。 |
| `--path` | TEXT | 包含要部署的 VeADK 项目的本地目录路径。默认为当前目录 `.`。 |
| `--help` | | 显示此帮助信息并退出。 |
@@ -353,6 +371,7 @@ print(response)
### 使用示例
在项目根目录下,执行部署(需要提供AK/SK和FaaS应用名):
+
```bash
veadk deploy \
--vefaas-app-name my-cloud-app \
@@ -361,6 +380,7 @@ veadk deploy \
```
部署指定路径下的项目,并启用 Web 界面:
+
```bash
veadk deploy \
--path ./my-agent-project \
@@ -370,7 +390,7 @@ veadk deploy \
--secret-key "YOUR_SECRET_KEY"
```
-**注意**
+**注意**:
- 您也可以在项目根目录下的`.env`文件中设置 `VOLCENGINE_ACCESS_KEY` 和 `VOLCENGINE_SECRET_KEY` 环境变量,避免在命令行中明文暴露 AK/SK。
@@ -406,17 +426,22 @@ veadk deploy \
```bash
veadk prompt --path ./weather_reporter/agent.py --feedback "希望提示词能够更加具体明确" --api-key "YOUR_API_KEY" --workspace-id "YOUR_WORKSPACE_ID"
```
-** 注意 **
+
+**注意**:
- 您需要先在火山引擎[PromptPilot控制台](https://promptpilot.volcengine.com/)创建一个项目,并获取 API Key 和工作空间 ID。
- 您也可以在项目根目录下的`.env`文件中设置 `PROMPTPILOT_API_KEY` 环境变量,避免在命令行中明文暴露 API Key。
- 本命令会自动读取智能体代码中的`Agent`对象的`instruction` 内容,作为目标来进行提示词优化。本本例中,原始的`instruction`内容如下所示:
-```
+
+```text
Once user ask you weather of a city, you need to provide the weather report for that city by calling `get_city_weather`
```
+
本命令运行的结果如下所示:
-```
+
+```text
Optimized prompt for agent weather_reporter:
+
# Role
You are a weather information provider. When the user asks about the weather of a city, your task is to offer an accurate weather report for that city.
@@ -430,7 +455,6 @@ You are a weather information provider. When the user asks about the weather of
- Ensure that the information provided is based on the data obtained from the `get_city_weather` function and is as accurate as possible.
```
-
## 评测
### 简介
@@ -464,11 +488,12 @@ You are a weather information provider. When the user asks about the weather of
- 必须提供 `--agent-dir` 或 `--agent-a2a-url` 两者之一。
- 如果两者都提供,`--agent-a2a-url` 优先。
-- 需要事先准备好评测数据集文件,您可以参考[评测](/observation/evaluation)中的说明,创建一个符合 Google ADK 格式的 JSON 文件。
+- 需要事先准备好评测数据集文件,您可以参考[评测](deploy/evaluation.md)中的说明,创建一个符合 Google ADK 格式的 JSON 文件。
### 使用示例
-**本地评估示例:**
+**本地评估示例**:
+
```bash
veadk eval \
--agent-dir ./my-agent \
@@ -476,7 +501,8 @@ veadk eval \
--evaluator adk
```
-**远程评估示例:**
+**远程评估示例**:
+
```bash
veadk eval \
--agent-a2a-url http://my-agent-url.com/invoke \
diff --git a/docs/docs/ide/snippets.md b/docs/docs/ide/snippets.md
deleted file mode 100644
index 10ee517a..00000000
--- a/docs/docs/ide/snippets.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: snippets.json
----
-
-## snippets.json
-
-您可以直接下载下方 `snippets.json` 文件,并导入到 Trae 或 VsCode 等编辑器中,以获取 VeADK 相关的代码片段。
-
-- 下载 `snippets.json` 文件:[snippets.json](../static/snippets.json){:download}
-
-```json title="snippets.json"
-test
-```
diff --git a/docs/docs/knowledgebase/best-practice-knowledgebase.md b/docs/docs/knowledgebase/best-practice-knowledgebase.md
index c0fd526e..2a6e485e 100644
--- a/docs/docs/knowledgebase/best-practice-knowledgebase.md
+++ b/docs/docs/knowledgebase/best-practice-knowledgebase.md
@@ -1,4 +1,4 @@
-# 知识库最佳实践
+# 最佳实践
本文档介绍如何在企业级或生产环境中,将知识库与智能体深度结合,实现复杂、多步骤的知识驱动型应用。
diff --git a/docs/docs/quickstart.md b/docs/docs/quickstart.md
index 13ce1a23..36921c41 100644
--- a/docs/docs/quickstart.md
+++ b/docs/docs/quickstart.md
@@ -142,4 +142,4 @@ veadk web
交互界面如图:
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/docs/runner.md b/docs/docs/runner.md
index 1d8bd468..c32a933f 100644
--- a/docs/docs/runner.md
+++ b/docs/docs/runner.md
@@ -1,8 +1,8 @@
# 执行引擎
-`Runner` 是 ADK Runtime 中的一个核心组件,负责协调你定义的 Agents、Tools、Callbacks,使它们共同响应用户输入,同时管理信息流、状态变化,以及与外部服务(例如 LLM、Tools)或存储的交互。
+`Runner` 是 ADK Runtime 中的一个核心组件,负责协调你定义的 Agents、Tools、Callbacks 等外部组件,使它们共同响应用户输入,同时管理信息流、状态变化,以及与外部服务(例如 LLM、Tools)或存储的交互。
-VeADK 的执行引擎完全兼容 Google ADK Runner,更多`Runner`工作机制说明您可参考 [Google ADK Agent 运行时](https://google.github.io/adk-docs/runtime/)。
+VeADK 的执行引擎完全兼容 Google ADK Runner,关于 `Runner` 的完整工作机制与生命周期说明可参考 [Google ADK Agent 运行时](https://google.github.io/adk-docs/runtime/)。
---
diff --git a/docs/docs/tools/builtin.md b/docs/docs/tools/builtin.md
index e022fd4f..6038d286 100644
--- a/docs/docs/tools/builtin.md
+++ b/docs/docs/tools/builtin.md
@@ -5,18 +5,18 @@
## 使用方法
-1. **导入**:从 `veadk.tools.builtin_tools` 模块导入所需工具。
-2. **配置**:初始化工具并按需提供参数。
-3. **注册**:将工具实例添加至 Agent 的 `tools` 列表。
+1. **导入**:从 `veadk.tools.builtin_tools` 模块导入所需工具。
+2. **配置**:初始化工具并按需提供参数。
+3. **注册**:将工具实例添加至 Agent 的 `tools` 列表。
=== "Python"
```python
from veadk import Agent
- from veadk.tools.builtin_tools.web_search import websearch
+ from veadk.tools.builtin_tools.web_search import web_search
# 在 Agent 初始化时注册工具
- # Agent(tools=[websearch], other_params...)
+ agent = Agent(tools=[web_search])
```
=== "Golang"
@@ -91,8 +91,6 @@ VeADK 集成了以下火山引擎工具:
--8<-- "examples/tools/web_search/agent.go"
```
-
-
=== "环境变量"
环境变量列表:
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index ef6bb73b..a4a7e266 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -59,7 +59,7 @@ nav:
- 护栏工具: tools/guardrail.md
- 连接数据源——知识库:
- 基本使用: knowledgebase/overview.md
- - 最佳实践(知识库相关): knowledgebase/best-practice-knowledgebase.md
+ - 最佳实践: knowledgebase/best-practice-knowledgebase.md
- 身份与权限:
- 概述: auth/overview.md
- 入站认证: auth/inbound.md
@@ -90,6 +90,7 @@ nav:
plugins:
- search
+ - autorefs
- mkdocs-video:
is_video: True
video_muted: True