11# 部署上云
22
3- VeADK提供了一个云引擎,配合命令行脚手架,你可以方便地:
3+ ## 命令行部署
44
5- - 将你的本地Agent项目上传到云端([ 火山引擎函数服务平台] ( https://www.volcengine.com/product/vefaas ) )
6- - 启动一个新的样例模板项目进行开发
5+ VeADK提供了一个云引擎,配合命令行脚手架,你可以:
76
8- 你可以指定部署到云端的项目以三种模式进行对外服务:
7+ - ** 快速开始** 启动一个新的样例模板项目进行开发
8+ - ** 从已有项目** 将你本地的 Agent 项目上传至[ 火山引擎函数服务平台] ( https://www.volcengine.com/product/vefaas )
99
10- - VeADK Studio
11- - VeADK Web(兼容Google ADK Web)
12- - A2A Server
10+ 部署时,你可以指定两种部署模式来对外提供服务:
1311
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- 你可以运行` init ` 命令来初始化一个新的Agent项目:
20+ #### 初始化
21+
22+ 你可以运行` veadk init ` 命令来初始化一个新的Agent项目:
1923
2024``` bash
21- veadk init
25+ $ veadk init
26+ Welcome use VeADK to create your project. We will generate a ` weather-reporter` application for you.
27+ Local directory name [veadk-cloud-proj]:
28+ Volcengine FaaS application name [veadk-cloud-agent]:
29+ Volcengine API Gateway instance name []:
30+ Volcengine API Gateway service name []:
31+ Volcengine API Gateway upstream name []:
32+ Choose a deploy mode:
33+ 1. A2A/MCP Server
34+ 2. VeADK Web / Google ADK Web
35+ Enter your choice (1, 2): 1
36+ Template project has been generated at .../veadk-cloud-proj
37+ Edit .../veadk-cloud-proj/src to define your agents
38+ Edit .../veadk-cloud-proj/deploy.py to define your deployment attributes
39+ Run python ` deploy.py` for deployment on Volcengine FaaS platform.
2240```
2341
2442它会提示你输入如下几个参数:
2543
2644- 本地项目名称(即项目的本地目录名称)
27- - VeFaaS应用名称
28- - 火山引擎网关实例名称
29- - 火山引擎网关服务名称
30- - 火山引擎网关Upstream名称
45+ - VeFaaS应用名称(不可带下划线)
46+ - 火山引擎网关实例名称(可选)
47+ - 火山引擎网关服务名称(可选)
48+ - 火山引擎网关Upstream名称(可选)
3149- 部署模式
32- 1 . A2A Server
33- 2 . VeADK Studio
34- 3 . VeADK Web / Google ADK Web
50+ 1 . A2A / MCP Server
51+ 2 . VeADK Web
3552
3653生成后的项目结构如下:
3754
3855``` bash
3956└── veadk-cloud-proj
40- ├── __init__.py
41- ├── config.yaml.example # 需要修改为config.yaml并设置
42- ├── deploy.py # 部署脚本文件
43- ├── README.md
57+ ├── config.yaml.example # 定义环境变量
58+ ├── deploy.py # 部署脚本
4459 └── src
45- ├── __init__.py
46- ├── agent.py # 在其中定义你的Agent和短期记忆
47- ├── app.py # FastAPI应用,用于处理HTTP请求
48- ├── requirements.txt # 依赖
49- ├── run.sh # VeFaaS服务启动脚本
50- └── studio_app.py # 用于VeADK Studio/Web的应用
60+ ├── agent.py # agent 运行时数据导出
61+ ├── app.py # Server 定义
62+ ├── requirements.txt # 依赖
63+ ├── run.sh # 启动脚本
64+ └── weather_report # agent module
65+ ├── __init__.py # 必须包含`from . import agent`
66+ └── agent.py # agent 定义
5167```
5268
53- 别担心,你所创建的` config.yaml ` 不会被上传到云端,其中的属性值将会以环境变量的形式上传至VeFaaS平台。
69+ 你所创建的 ` config.yaml ` 不会被上传到云端,其中的属性值将会以环境变量的形式上传至VeFaaS平台。
70+
71+ 只有 ` src/ ` 路径下的文件才会被上传到云端。
72+
73+ #### 自定义项目
74+
75+ 在使用脚手架生成模板项目后,你可以做如下操作:
76+
77+ 1 . 向 ` src ` 目录中直接导入一个能够被 ADK Web 识别的目录(例如 ` weather_agent ` 目录),主要包括:
78+ - 包含 ` root_agent ` 这个全局变量的 ` agent.py ` 文件
79+ - 包含 ` from . import agent ` 的 ` __init__.py ` 文件
80+ 2 . 在 ` src/agent.py ` 中实例化 ` AgentRunConfig ` 类,主要属性包括:
81+ - ` app_name ` :部署在云上的 Agent 应用名称(与VeFaaS应用名称不一定对应,此处为服务级别)
82+ - ` agent ` :你提供服务的 Agent 实例
83+ - ` short_term_memory ` :短期记忆,为空则默认初始化in-memory短期记忆,重启后即消失
84+ 3 . 使用` python deploy.py ` 进行云端部署
85+
86+ 如果你想在部署到云端前进行本地运行来测试代码问题,可以在 ` deploy.py ` 中的 ` engine.deploy ` 调用处,添加参数:` local_test=True ` 。添加后,在部署前将会启动相关服务,测试启动是否正常。
87+
88+ #### 云端环境变量
89+
90+ | 环境变量名称 | 说明 | 值 | 备注 |
91+ | - | - | - | - |
92+ | VEADK_TRACER_APMPLUS | 是否使用火山 APMPlus Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
93+ | VEADK_TRACER_COZELOOP | 是否使用火山 CozeLoop Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
94+ | VEADK_TRACER_TLS | 是否使用 TLS Tracing | ` true ` \| ` false ` | 默认为 ` false ` |
95+ | SHORT_TERM_MEMORY_BACKEND | 启动 ADK Web 时的短期记忆后端 | ` local ` \| ` mysql ` | 优先级低于在 ` agent.py ` 中定义的短期记忆 |
96+ | LONG_TERM_MEMORY_BACKEND | 启动 ADK Web 时的长期记忆后端 | ` opensearch ` \| ` viking ` | 优先级低于在 ` agent.py ` 中定义的长期记忆 |
97+
98+ ### 从已有项目
5499
55- 只有 ` src/ ` 路径下的文件才会被上传到云端 。
100+ 如果你已经在本地有一个 agent 项目,你可以使用 ` veadk deploy ` 命令将你当前的项目上传至云端 。
56101
57- ## Cloud Agent Engine
102+ 使用命令前,请先确保你的本地 agent 项目中包括:
58103
59- 如果你已经有一个较为成熟的Agent项目,你可以通过VeADK中提供的云引擎来部署你的项目。VeFaaS平台所需的部署文件我们将会为你自动生成到你的项目路径中。
104+ 1 . 一个含有全局变量 ` root_agent ` 的 ` agent.py ` 文件
105+ 2 . 一个含有 ` from . import agent ` 语句的 ` __init__.py ` 文件
106+
107+ ` veadk deploy ` 接收的参数如下:
108+
109+ | 名称 | 类型 | 释义 |
110+ | - | - | - |
111+ | ` --access-key ` | 字符串 | 火山引擎AK |
112+ | ` --secret-key ` | 字符串 | 火山引擎SK |
113+ | ` --vefaas-app-name ` | 字符串 | 火山引擎 VeFaaS 平台应用名称 |
114+ | ` --veapig-instance-name ` | 字符串 | 火山引擎 APIG 实例名称 |
115+ | ` --veapig-service-name ` | 字符串 | 火山引擎 APIG 服务名称 |
116+ | ` --veapig-upstream-name ` | 字符串 | 火山引擎 APIG Upstream 名称 |
117+ | ` --short-term-memory-backend ` | ` local ` \| ` mysql ` | 短期记忆后端 |
118+ | ` --use-adk-web ` | FLAG | 设置后将会在云端启动 web,否则为 A2A / MCP 模式 |
119+ | ` --path ` | 字符串 | 本地项目路径,默认为当前目录 |
120+
121+ ## 代码部署
122+
123+ ### Cloud Agent Engine
124+
125+ 如果你已经有一个较为成熟的Agent项目,你可以通过VeADK中提供的云引擎来部署你的项目。项目结构的最佳实践可参考[ 这里] ( #项目结构 ) 。
60126
61127``` python
62128from veadk.cloud.cloud_agent_engine import CloudAgentEngine
@@ -78,12 +144,9 @@ cloud_app = engine.deploy(...)
78144| gateway_name | str | 火山引擎网关实例名称 |
79145| gateway_service_name | str | 火山引擎网关服务名称 |
80146| gateway_upstream_name | str | 火山引擎网关Upstream名称 |
81- | use_studio | bool | 是否在云端使用VeADK Studio |
82147| use_adk_web | bool | 是否在云端使用VeADK Web / Google Web |
83148
84- 注意:` use_studio ` 与` use_adk_web ` 不可同时为` True ` 。
85-
86- ## Cloud App
149+ ### Cloud App
87150
88151当你使用` CloudAgentEngine ` 部署完成后,将返回一个` CloudApp ` 实例,代表云应用,主要功能包括:
89152
@@ -117,9 +180,9 @@ app = CloudApp(name="veadk-agent", endpoint=ENDPOINT)
117180cloud_app.invoke(user_id = USER_ID , session_id = SESSION_ID , message = ... )
118181```
119182
120- ## 更新云应用
183+ ### 更新云应用
121184
122- ### 通过 CloudAgentEngine 更新
185+ #### 通过 CloudAgentEngine 更新
123186
124187当您需要更新已部署的Agent代码时,可以使用` update_function_code ` 方法:
125188
@@ -142,9 +205,9 @@ updated_cloud_app = engine.update_function_code(
142205- 更新操作会保持相同的访问端点URL
143206- 确保项目路径包含` agent.py ` 文件
144207
145- ## 删除云应用
208+ ### 删除云应用
146209
147- ### 通过 CloudAgentEngine 删除
210+ #### 通过 CloudAgentEngine 删除
148211
149212``` python
150213from veadk.cloud.cloud_agent_engine import CloudAgentEngine
@@ -162,3 +225,15 @@ Confirm delete cloud app my-agent-app? (y/N): y
162225```
163226
164227输入` y ` 确认删除,输入其他任何字符或直接回车则取消删除。
228+
229+ ## 项目结构
230+
231+ 一个能在云上运行的 agent 项目结构主要包括如下几个文件:
232+
233+ - ` run.sh ` 启动脚本
234+ - ` requirements.txt ` 依赖列表
235+ - ` app.py ` 定义 FastAPI Server 的 python 文件
236+ - ` agent.py ` 导出 agent 以及短期记忆、依赖路径等信息
237+ - ` agent_module ` 自定义的 agent 模块
238+ - ` __init__.py ` 必须包含 ` from . import agent ` 语句
239+ - ` agent.py ` 定义 agent 实例,必须包含 ` root_agent=... ` 全局变量导出
0 commit comments