部署

从脚手架开始

Text, title, and styling in standard markdown.

初始化

你可以运行veadk init命令来初始化一个新的Agent项目:

$ veadk init
Welcome use VeADK to create your project. We will generate a `weather-reporter` application for you.
Local directory name [veadk-cloud-proj]: 
Volcengine FaaS application name [veadk-cloud-agent]: 
Volcengine API Gateway instance name []: 
Volcengine API Gateway service name []: 
Volcengine API Gateway upstream name []: 
Choose a deploy mode:
  1. A2A/MCP Server
  2. VeADK Web / Google ADK Web
Enter your choice (1, 2): 1
Template project has been generated at .../veadk-cloud-proj
Edit .../veadk-cloud-proj/src to define your agents
Edit .../veadk-cloud-proj/deploy.py to define your deployment attributes
Run python `deploy.py` for deployment on Volcengine FaaS platform.

它会提示你输入如下几个参数:

  • 本地项目名称(即项目的本地目录名称)
  • VeFaaS应用名称(不可带下划线)
  • 火山引擎网关实例名称(可选)
  • 火山引擎网关服务名称(可选)
  • 火山引擎网关Upstream名称(可选)
  • 部署模式
    1. A2A / MCP Server
    2. VeADK Web

生成后的项目结构如下:

└── veadk-cloud-proj
    ├── config.yaml.full # 定义环境变量
    ├── deploy.py # 部署脚本
    └── src
        ├── agent.py # agent 运行时数据导出
        ├── app.py # Server 定义
        ├── requirements.txt # 依赖
        ├── run.sh # 启动脚本
        └── weather_report # agent module
            ├── __init__.py # 必须包含`from . import agent`
            └── agent.py # agent 定义

你所创建的 config.yaml 不会被上传到云端,其中的属性值将会以环境变量的形式上传至VeFaaS平台。

只有 src/ 路径下的文件才会被上传到云端。

自定义项目

在使用脚手架生成模板项目后,你可以做如下操作:

  1. src 目录中直接导入一个能够被 ADK Web 识别的目录(例如 weather_agent 目录),主要包括:
    • 包含 root_agent 这个全局变量的 agent.py 文件
    • 包含 from . import agent__init__.py 文件
  2. src/agent.py 中实例化 AgentRunConfig 类,主要属性包括:
    • app_name:部署在云上的 Agent 应用名称(与VeFaaS应用名称不一定对应,此处为服务级别)
    • agent:你提供服务的 Agent 实例
    • short_term_memory:短期记忆,为空则默认初始化in-memory短期记忆,重启后即消失
  3. 使用python deploy.py进行云端部署

如果你想在部署到云端前进行本地运行来测试代码问题,可以在 deploy.py 中的 engine.deploy 调用处,添加参数:local_test=True。添加后,在部署前将会启动相关服务,测试启动是否正常。

云端环境变量

环境变量名称说明备注
VEADK_TRACER_APMPLUS是否使用火山 APMPlus Tracingtrue | false默认为 false
VEADK_TRACER_COZELOOP是否使用火山 CozeLoop Tracingtrue | false默认为 false
VEADK_TRACER_TLS是否使用 TLS Tracingtrue | false默认为 false
SHORT_TERM_MEMORY_BACKEND启动 ADK Web 时的短期记忆后端local | mysql优先级低于在 agent.py 中定义的短期记忆
LONG_TERM_MEMORY_BACKEND启动 ADK Web 时的长期记忆后端opensearch | viking优先级低于在 agent.py 中定义的长期记忆