11# 部署上云
22
3- VeADK提供了一个云引擎,配合命令行脚手架,你可以方便地:
3+ ## 命令行部署
44
5- - 快速开始:启动一个新的样例模板项目进行开发
6- - 从已有项目:将你本地的 Agent 项目上传至[ 火山引擎函数服务平台] ( https://www.volcengine.com/product/vefaas )
5+ VeADK提供了一个云引擎,配合命令行脚手架,你可以:
6+
7+ - ** 快速开始** 启动一个新的样例模板项目进行开发
8+ - ** 从已有项目** 将你本地的 Agent 项目上传至[ 火山引擎函数服务平台] ( https://www.volcengine.com/product/vefaas )
79
810部署时,你可以指定两种部署模式来对外提供服务:
911
10- - A2A与MCP Server(一体化启动)
11- - A2A 提供标准的 ` message_send ` 等接口
12- - MCP 提供 ` run_agent ` 工具方法
13- - VeADK Web(兼容Google ADK Web)
14- - 提供一个Web界面 ,方便你在浏览器中进行体验
12+ - ** A2A与MCP Server**
13+ - A2A Server 提供遵循 A2A 标准的 ` message_send ` 等接口
14+ - MCP Server 提供一个 ` run_agent ` 工具方法
15+ - ** VeADK Web**
16+ - 提供Web界面 ,方便你在浏览器中进行体验
1517
16- ## 快速开始
18+ ### 快速开始
1719
18- ### 初始化
20+ #### 初始化
1921
2022你可以运行` veadk init ` 命令来初始化一个新的Agent项目:
2123
@@ -40,13 +42,13 @@ Run python `deploy.py` for deployment on Volcengine FaaS platform.
4042它会提示你输入如下几个参数:
4143
4244- 本地项目名称(即项目的本地目录名称)
43- - VeFaaS应用名称
44- - 火山引擎网关实例名称
45- - 火山引擎网关服务名称
46- - 火山引擎网关Upstream名称
45+ - VeFaaS应用名称(不可带下划线)
46+ - 火山引擎网关实例名称(可选)
47+ - 火山引擎网关服务名称(可选)
48+ - 火山引擎网关Upstream名称(可选)
4749- 部署模式
4850 1 . A2A / MCP Server
49- 2 . VeADK Web / Google ADK Web
51+ 2 . VeADK Web
5052
5153生成后的项目结构如下:
5254
@@ -64,40 +66,45 @@ Run python `deploy.py` for deployment on Volcengine FaaS platform.
6466 └── agent.py # agent 定义
6567```
6668
67- 你所创建的` config.yaml ` 不会被上传到云端,其中的属性值将会以环境变量的形式上传至VeFaaS平台。
69+ 你所创建的 ` config.yaml ` 不会被上传到云端,其中的属性值将会以环境变量的形式上传至VeFaaS平台。
6870
69- 只有` src/ ` 路径下的文件才会被上传到云端。
71+ 只有 ` src/ ` 路径下的文件才会被上传到云端。
7072
71- ### 自定义项目
73+ #### 自定义项目
7274
7375在使用脚手架生成模板项目后,你可以做如下操作:
7476
75- 1 . 向` src ` 目录中直接导入一个能够被 ADK Web 识别的目录(例如` weather_agent ` 目录),主要包括:
76- - 包含` root_agent ` 这个全局变量的` agent.py ` 文件
77- - 包含` from . import agent ` 的 ` __init__.py ` 文件
78- 2 . 在` src/agent.py ` 中实例化` AgentRunConfig ` 类,主要属性包括:
77+ 1 . 向 ` src ` 目录中直接导入一个能够被 ADK Web 识别的目录(例如 ` weather_agent ` 目录),主要包括:
78+ - 包含 ` root_agent ` 这个全局变量的 ` agent.py ` 文件
79+ - 包含 ` from . import agent ` 的 ` __init__.py ` 文件
80+ 2 . 在 ` src/agent.py ` 中实例化 ` AgentRunConfig ` 类,主要属性包括:
7981 - ` app_name ` :部署在云上的 Agent 应用名称(与VeFaaS应用名称不一定对应,此处为服务级别)
8082 - ` agent ` :你提供服务的 Agent 实例
8183 - ` short_term_memory ` :短期记忆,为空则默认初始化in-memory短期记忆,重启后即消失
82- - ` requirement_file_path ` :依赖文件路径,VeADK 能够自动将其移动到` src/requirements.txt `
84+ - ` requirement_file_path ` :依赖文件路径,VeADK 能够自动将其移动到 ` src/requirements.txt `
83853 . 使用` python deploy.py ` 进行云端部署
8486
85- 如果你想在部署到云端前进行本地运行,测试代码问题, 可以在` deploy.py ` 中的 ` engine.deploy ` 调用处,添加参数:` local_test=True ` 。添加后,在部署前将会启动相关服务,测试启动是否正常。
87+ 如果你想在部署到云端前进行本地运行来测试代码问题, 可以在 ` deploy.py ` 中的 ` engine.deploy ` 调用处,添加参数:` local_test=True ` 。添加后,在部署前将会启动相关服务,测试启动是否正常。
8688
87- ### 云端环境变量
89+ #### 云端环境变量
8890
8991| 环境变量名称 | 说明 | 值 | 备注 |
9092| - | - | - | - |
91- | VEADK_TRACER_APMPLUS | 是否使用火山 APMPlus Tracing | ` true ` \| ` false ` | |
92- | VEADK_TRACER_COZELOOP | 是否使用火山 CozeLoop Tracing | ` true ` \| ` false ` | |
93- | VEADK_TRACER_TLS | 是否使用 TLS Tracing | ` true ` \| ` false ` | |
94- | SHORT_TERM_MEMORY_BACKEND | 启动 ADK Web 时的短期记忆后端 | ` local ` \| ` mysql ` | 优先级低于在` agent.py ` 中定义的短期记忆 |
95- | LONG_TERM_MEMORY_BACKEND | 启动 ADK Web 时的长期记忆后端 | ` opensearch ` \| ` viking ` | 优先级低于在` agent.py ` 中定义的长期记忆 |
93+ | VEADK_TRACER_APMPLUS | 是否使用火山 APMPlus Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
94+ | VEADK_TRACER_COZELOOP | 是否使用火山 CozeLoop Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
95+ | VEADK_TRACER_TLS | 是否使用 TLS Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
96+ | SHORT_TERM_MEMORY_BACKEND | 启动 ADK Web 时的短期记忆后端 | ` local ` \| ` mysql ` | 优先级低于在 ` agent.py ` 中定义的短期记忆 |
97+ | LONG_TERM_MEMORY_BACKEND | 启动 ADK Web 时的长期记忆后端 | ` opensearch ` \| ` viking ` | 优先级低于在 ` agent.py ` 中定义的长期记忆 |
9698
97- ## 从已有项目
99+ ### 从已有项目
98100
99101如果你已经在本地有一个 agent 项目,你可以使用` veadk deploy ` 命令将你当前的项目上传至云端。
100102
103+ 使用命令前,请先确保你的本地 agent 项目中包括:
104+
105+ 1 . 一个含有全局变量 ` root_agent ` 的 ` agent.py ` 文件
106+ 2 . 一个含有 ` from . import agent ` 语句的 ` __init__.py ` 文件
107+
101108` veadk deploy ` 接收的参数如下:
102109
103110| 名称 | 类型 | 释义 |
@@ -112,9 +119,11 @@ Run python `deploy.py` for deployment on Volcengine FaaS platform.
112119| ` --use-adk-web ` | FLAG | 设置后将会在云端启动 web,否则为 A2A / MCP 模式 |
113120| ` --path ` | 字符串 | 本地项目路径,默认为当前目录 |
114121
115- ## Cloud Agent Engine
122+ ## 代码部署
116123
117- 如果你已经有一个较为成熟的Agent项目,你可以通过VeADK中提供的云引擎来部署你的项目。VeFaaS平台所需的部署文件我们将会为你自动生成到你的项目路径中。
124+ ### Cloud Agent Engine
125+
126+ 如果你已经有一个较为成熟的Agent项目,你可以通过VeADK中提供的云引擎来部署你的项目。项目结构的最佳实践可参考[ 这里] ( #项目结构 ) 。
118127
119128``` python
120129from veadk.cloud.cloud_agent_engine import CloudAgentEngine
@@ -138,7 +147,7 @@ cloud_app = engine.deploy(...)
138147| gateway_upstream_name | str | 火山引擎网关Upstream名称 |
139148| use_adk_web | bool | 是否在云端使用VeADK Web / Google Web |
140149
141- ## Cloud App
150+ ### Cloud App
142151
143152当你使用` CloudAgentEngine ` 部署完成后,将返回一个` CloudApp ` 实例,代表云应用,主要功能包括:
144153
@@ -172,9 +181,9 @@ app = CloudApp(name="veadk-agent", endpoint=ENDPOINT)
172181cloud_app.invoke(user_id = USER_ID , session_id = SESSION_ID , message = ... )
173182```
174183
175- ## 更新云应用
184+ ### 更新云应用
176185
177- ### 通过 CloudAgentEngine 更新
186+ #### 通过 CloudAgentEngine 更新
178187
179188当您需要更新已部署的Agent代码时,可以使用` update_function_code ` 方法:
180189
@@ -197,9 +206,9 @@ updated_cloud_app = engine.update_function_code(
197206- 更新操作会保持相同的访问端点URL
198207- 确保项目路径包含` agent.py ` 文件
199208
200- ## 删除云应用
209+ ### 删除云应用
201210
202- ### 通过 CloudAgentEngine 删除
211+ #### 通过 CloudAgentEngine 删除
203212
204213``` python
205214from veadk.cloud.cloud_agent_engine import CloudAgentEngine
@@ -217,3 +226,15 @@ Confirm delete cloud app my-agent-app? (y/N): y
217226```
218227
219228输入` y ` 确认删除,输入其他任何字符或直接回车则取消删除。
229+
230+ ## 项目结构
231+
232+ 一个能在云上运行的 agent 项目结构主要包括如下几个文件:
233+
234+ - ` run.sh ` 启动脚本
235+ - ` requirements.txt ` 依赖列表
236+ - ` app.py ` 定义 FastAPI Server 的 python 文件
237+ - ` agent.py ` 导出 agent 以及短期记忆、依赖路径等信息
238+ - ` agent_module ` 自定义的 agent 模块
239+ - ` __init__.py ` 必须包含 ` from . import agent ` 语句
240+ - ` agent.py ` 定义 agent 实例,必须包含 ` root_agent=... ` 全局变量导出
0 commit comments