通过代码创建Agent(高代码)

更新时间:
复制为 MD 格式

当低代码模式无法支持复杂业务逻辑、自定义框架集成或精细化运行环境控制时,可使用高代码模式创建 Agent。该模式允许开发者使用自有代码实现复杂的推理流程、工具编排和企业级集成。

功能介绍

高代码模式用于通过代码自定义 Agent 的实现逻辑,适合有开发经验、对行为和性能有精细控制需求的场景。

主要能力包括:

  • 多种代码来源:上传代码包、OSS 代码包、在线编辑代码,以及自定义容器镜像部署。

  • 多语言运行时:支持 Python、Node.js、Java 等多种运行时,可自定义启动命令和端口。

  • 灵活的资源与环境配置:按需配置 CPU、内存、并发会话数、空闲超时时间,以及 VPC 网络、执行角色、访问凭证、环境变量、健康检查等参数。

  • SDK 与框架集成:通过 AgentRun SDK 接入模型、Sandbox、工具和外部系统,也可与 LangChain 等 Agent 框架集成,实现复杂工作流(详见AgentRun SDK 说明)。

  • 完整的开发调试与运维流程:提供在线 WebIDE、实时日志、基于 OpenAI Chat Completions 协议的调试接口,以及版本管理与灰度发布能力。

核心概念

创建 Agent 前,建议先了解以下核心概念:

核心概念

说明

代码来源

高代码模式支持多种代码来源,用于部署 Agent:

  • 本地代码包上传:直接上传打包好的 zip 文件。

  • OSS 代码包:配置 OSS 上的代码包地址,由平台从 OSS 拉取。

  • 在线编辑:在 WebIDE 中在线编写和修改代码,无需本地打包。

  • 自定义容器镜像:从阿里云镜像仓库中选择已有镜像,使用镜像中已有代码与运行环境。

选择哪种方式取决于团队习惯和工程实践(例如是否已有 CI/CD 构建镜像流程)。

运行时类型

创建 Agent 时需要选择运行时语言环境,目前支持:

  • Python 3.10

  • Python 3.12

  • Node.js 20

  • Node.js 18

  • Java 17

  • Java 11

  • Java 8

说明

目前仅 Python 3.10 提供官方模板示例,其他运行时请使用自定义代码包或镜像。

示例代码包

平台提供基于 AgentRun SDK 编写的示例模板,帮助用户快速上手。

官方示例是基于 AgentRun SDK 的 LangChain Agent 示例,包含模型调用和 Sandbox 工具调用的示例代码。

启动配置

对于代码包模式(本地上传、OSS、在线编辑),需要指定:

  • 启动命令,如 python3 main.py

  • 启动端口,如 9000

使用官方模板时通常保持默认配置即可;使用自定义代码时,根据实际入口文件和服务端口填写。

对于容器镜像模式,需要至少指定:

  • 启动端口(镜像内应用监听的端口)

启动命令由镜像内 Dockerfile 决定(CMDENTRYPOINT),不在平台侧配置。

资源配置

资源配置用于控制 Agent 实例的资源规格和并发行为,包括:

  • CPU(核数):为单个实例分配的 CPU 核数。

  • 内存(MB):为单个实例分配的内存。

  • 单实例并发会话数上限:每个实例允许并行处理的会话数量。

  • 会话空闲超时时间(秒):实例上最后一个会话结束后,空闲时间超过该值则自动销毁实例。

合理配置这些参数可以在性能和成本之间取得平衡。

高级配置

高级配置包含运行时环境相关的选项,例如:

  • 环境变量(如模型名称、业务配置等)。

  • VPC 网络配置(接入内网资源)。

  • 执行角色(访问模型、Sandbox、OSS 等资源的权限)。

  • 访问凭证(与 AgentRun 凭证管理集成)。

  • 健康检查配置(用于判定实例是否可用)。

这些配置决定了 Agent 在运行时能访问哪些资源以及如何访问。

可观测性

支持一键开通智能体可观测,用于观测和分析 Agent 的运行情况:

  • 了解调用量、响应时间、错误率等运行指标。

  • 通过日志排查问题和还原故障现场。

  • 分析模型调用与 Token 消耗,进行成本优化。

  • 在复杂链路中定位性能瓶颈和异常节点。

说明

AI 应用监控中 Token 统计来源于大模型响应,代码配置时请确保模型响应中包含 Token 信息。

操作指南

准备工作

  • 准备代码工程

    • 已有可运行的服务代码。官方示例代码包下载地址:官方示例代码包。本文后续操作步骤均以官方示例代码包为例。

      说明

      代码包也可以在快速创建Agent(无代码)后将 Agent 转换为代码模式得到。转换成功后,在 Agent 页面左侧选择代码与调试,即可查看和下载。

    • 代码可打包为 zip,或已有对应容器镜像或 OSS 代码包。

    • 确认暴露的服务入口(启动命令、监听端口)。

  • 准备运行时依赖

    • 确定运行时语言版本(如 Python 3.10、Python 3.12、Node.js 18/20、Java 8/11/17 等)。

      说明

      官方示例代码使用的运行时为 Python 3.10。

    • 使用代码包模式时:

      • 将代码与依赖一并打包为 zip。

      • Python 项目建议将依赖放入 /python/code/python 等约定目录,并配置环境变量 PYTHONPATH/opt/python:/code/python

    • 使用容器镜像模式时:

      • 在镜像中包含完整运行环境和依赖。

      • 在 Dockerfile 中正确配置入口命令和监听端口。

步骤1:进入代码创建Agent页面

  1. 进入AgentRun运行时与沙箱页面。

  2. 单击创建Agent,在弹出的窗口中选择通过代码创建

  3. 输入Agent名称功能描述,建议使用有意义的名称,便于后续管理和识别。

步骤2:代码配置

  1. 选择代码来源

    上传代码包
    1. 单击上传文件,选择本地 zip 文件。

    2. 确保包内结构符合运行时规范(入口文件位置、依赖目录等)。

    3. 如基于官方示例,可先下载模板,填入必要配置(如 system_prompt),再打包上传。

      说明

      示例代码中的 MODEL_NAMESANDBOX_NAME 会从运行时环境变量中读取,此处无需修改。

    OSS获取代码包
    1. 代码来源中选择OSS 对象存储

    2. 选择代码包所在的Bucket名称OSS目录

    3. 确保执行角色具备读取该 OSS 对象的权限。

    使用容器镜像部署
    1. 代码来源中选择容器镜像

    2. 选择镜像实例与镜像仓库

      说明
      • 支持自定义镜像阿里云容器镜像服务(个人版/企业版)

      • 选择自定义镜像时,可直接配置自定义镜像地址

    3. 选择镜像版本

    在线编写和调试代码

    选择在线编码方式,系统将在在线代码编辑器中自动加载官方示例代码,可直接进行代码业务逻辑实现和修改。

  2. 启动配置

    上传代码包/OSS对象存储/在线编辑模式
    • 启动命令,例如:

      • python3 main.py

      • node app.js

      • java -jar app.jar

    • 启动端口,如 9000,需与代码中服务监听端口一致。

    说明

    使用官方模板(如上述 Python 示例)时,一般保持默认配置即可。

    容器镜像模式
    • 启动命令通常由镜像内 Dockerfile 的 CMD/ENTRYPOINT 决定。

    • 需要指定启动端口,与容器内应用监听端口一致。

步骤3:资源配置、环境变量与高级配置

资源配置高级配置中设置运行参数。

  1. 计算资源

    • CPU(核)内存:为每个 Agent 实例分配的计算资源。资源越多,处理复杂任务的速度越快,但成本也相应增加。

    • 单实例并发会话数上限:单个 Agent 实例能同时处理的会话数量上限。提高此值可减少所需实例数,从而节约成本,但需确保代码线程安全且单个实例的 CPU 和内存资源充足。

    • 会话空闲超时时间(秒):实例上最后一个会话结束后,空闲超过该时间即自动释放实例。

  2. 环境变量

    为 Agent 配置运行时环境变量,用于向代码传递参数。使用官方示例时,需配置以下环境变量:

    • MODEL_NAME:必选,填写模型管理中已创建的模型名称。

    • SANDBOX_NAME:可选,填写已创建的 Sandbox 名称。

  3. 网络配置

    • 允许访问VPC:Agent 需要访问 VPC 内的云资源(如 RDS、OSS 等)时开启。

    • 允许默认网卡访问公网

  4. 日志配置

    开启日志功能,可将 Agent 的运行日志保存在日志服务中。可指定日志项目(Project)与日志库(Logstore),也可选择自动配置自定义配置中的一键配置功能使用默认值。

  5. 健康检查配置

    启用健康检查后,可配置检查路径(如 /health)、检查间隔(秒)超时时间(秒)失败阈值。系统将定期向指定路径发送 HTTP 请求检查服务状态,连续失败达到阈值时自动重启服务实例,有助于提高服务可用性和自动故障恢复能力。

步骤4:按需配置执行角色

执行角色用于授予 Agent 代码访问其他云资源(如模型服务、OSS)的权限。AgentRun 通过执行角色(RAM 角色)管理权限,代码在运行时将扮演此角色以获得相应的操作权限。

授权主体:函数计算服务(fc.aliyuncs.com)

所需权限:根据实际使用的服务添加相应策略

执行角色ARN中选择已有角色。如果没有符合要求的角色,可参考以下步骤创建。

  1. 单击执行角色ARN下拉框右侧的添加按钮image,进入RAM访问控制 > 角色列表。

  2. 单击创建角色

  3. 创建角色页面,信任主体类型选择云服务

  4. 信任主体名称选择函数计算/FC

  5. 单击确定,输入角色名称,再次单击确定,并按照提示完成安全验证

  6. 创建成功后进入角色详情页,单击新增授权

  7. 根据实际使用的服务添加相应策略,常用策略示例:

    • AliyunOSSFullAccess:Agent 需要使用 OSS 中的资源时,需配置对象存储服务(OSS)管理权限。

    • AliyunAgentRunFullAccess:使用官方示例创建时必须配置 AgentRun 服务管理权限。

    • AliyunDevsFullAccess:Serverless 开发平台(Devs)管理权限。

步骤5:配置访问凭证

为 Agent 配置访问凭证(如 API Key 等),用于保护 Agent 防止未经授权的调用。凭证由 AgentRun 的凭证管理统一管理和注入。

  1. 访问凭证模块,单击入站:访问凭证

  2. 选择凭证模式:

    • 不使用凭证(不推荐):Agent 的调用地址可被公网匿名访问,存在安全风险。此模式仅适用于功能测试,严禁用于生产环境。

    • 使用已有凭证(推荐):为保障 Agent 安全,建议选择此项。如果尚未创建凭证,可单击image参考凭证管理进行创建。

步骤6:完成配置并测试

完成上述配置后,单击右上角开始部署完成创建。系统将自动跳转至 Agent 详情页,选择代码与调试,在调试工具中进行测试。

步骤7:发布版本并进行灰度

AgentRun 支持版本管理与灰度发布。对 Agent 的提示词、工具或模型进行变更后,建议先发布版本,再通过创建 Endpoint 并启用次要版本(灰度发布),将少量流量分配给新版本。确认新版本稳定后,逐步增加流量比例,最终完成全量上线。

  1. 在左侧目录中选择版本与灰度

  2. 发布当前版本:单击发布版本,输入版本描述说明主要变更和功能后,再次单击发布版本

  3. 创建Endpoint

    1. 输入Endpoint名称,在主要版本下拉框中选择上一步发布的当前版本号。

    2. 启用次要版本(灰度发布):勾选启用次要版本(灰度发布),选择次要版本,并为主要版本和次要版本配置流量分配百分比。

后续步骤

在应用中集成Agent

在左侧集成与发布模块参考Agent集成与发布文档,将开发的 Agent 快速集成到前端网页、后端应用等。支持UI集成代码集成生态集成三种方式。

开通智能体可观测

Agent 创建后,可配置可观测能力便于调试和运维。

  1. 查看基础监控(默认开启):在左侧目录选择可观测性 > 基础监控页面,可查看:

    • 调用次数、成功率、平均/最大延迟。

    • 最近一段时间的调用趋势与延迟曲线。

  2. 开启日志采集(推荐)。

    • 在 Agent 详情页左侧选择可观测性 > 日志

    • 首次进入时提示日志未开启,单击开通日志

    • 选择配置方式:

      • 自动配置:一键创建默认的 SLS Project 和 Logstore,适合快速接入。

      • 自定义配置:选择已有 Project/Logstore,适合企业统一日志管理。

    • 保存后,Agent 的运行日志将自动写入对应 Logstore,可在 SLS 控制台进行检索、分析和告警。

  3. 接入应用监控链路追踪(进阶,可选)。

    • 首次进入需开通 ARMS 服务,在可观测性 > 应用监控(或链路追踪)页面,单击一键开通。

    • 按提示或参考智能体大模型可观测文档,在 Agent 代码中引入应用监控,即可进行应用监控与链路追踪。

    • 配置完成后,可在应用监控面板中查看业务指标和趋势(如 Token 消耗分析、性能分析),在链路追踪面板中查看每次请求的 Span 详情和调用拓扑,快速定位慢请求和异常节点。

常见问题与故障排查

Q1: 启动 Agent 时,日志提示 ModuleNotFoundError: No module named 'xxx'

A: 这是典型的 Python 依赖缺失问题。请检查:

  1. 使用上传代码包模式时,是否已遵循准备工作准备运行时依赖的指导,将所有依赖库打包到代码包的 /python 目录下。

  2. 如果依赖包含 C/C++ 扩展且编译环境复杂,建议切换到容器镜像模式。

Q2: Agent 启动失败,日志显示端口监听错误或超时。

A: 请检查代码:

  1. Web 服务是否监听在 0.0.0.0 而非 127.0.0.1

  2. 代码中监听的端口号是否与控制台启动端口中配置的一致。最佳实践是从 AGENT_PORT 环境变量动态获取端口号。

Q3: 是否只有 Python 3.10 提供官方模板?其他语言如何开始?

A: 目前官方的 LangChain 示例模板仅支持 Python 3.10。对于其他运行时(如 Node.js、Java),需要选择高代码模式并上传自定义代码包或使用自定义镜像。可参考官方 Python 示例的逻辑,迁移到目标语言和框架中,核心是实现一个符合规范的 HTTP 服务。