大模型可观测支持通过Python探针对AgentScope应用进行可观测,Python探针是阿里云可观测产品自研的Python语言的可观测采集探针,其基于OpenTelemetry标准实现了自动化埋点能力。本文介绍如何将AgentScope应用接入云监控2.0,以帮助用户实时了解 AI 应用运行状态。
框架介绍
AgentScope 是阿里巴巴开源的多 Agent 应用开发框架,提供 ReActAgent 等多种 Agent 类型,内置 DashScope、OpenAI 等模型适配器,支持工具调用、记忆管理和多 Agent 协作。
接入后,以下能力将被自动监控:
Agent 执行链路
LLM 调用(模型调用的 Token 用量、输入/输出内容)
工具调用链路(Toolkit 中各工具的调用详情)
ReAct Step(每一步循环轮次的行动观察)
接入方式
容器服务 ACK 和容器计算服务 ACS 接入
步骤一:探针接入助手(ack-onepilot)安装
登录容器服务管理控制台,在集群列表页面单击目标集群名称。
在左侧导航栏单击组件管理,然后在右上角通过关键字搜索ack-onepilot。
在ack-onepilot卡片上单击安装。配置相关的参数,建议使用默认值,单击确认。
说明需要保证ack-onepilot组件版本大于等于5.1.1版本,在上述步骤3中会展示当前安装的ack-onepilot版本。如果已经安装较低版本ack-onepilot,可重复上述步骤1、2,在步骤3中点击升级即可
步骤二:修改配置以启动 AI 应用监控
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。
切换命名空间,找到待监控的工作负载,点击最右侧操作列的更多图标
后,在弹出的对话框中点击YAML编辑。在YAML文件中将以下
labels添加到spec > template > metadata层级下。添加完成后点击 更新。labels: aliyun.com/app-language: python # Python应用必填,标明此应用是Python应用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # 应用在ARMS中的展示名称 armsPilotAppWorkspace: "workspace" # 替换为当前workspace名称,如未指定则使用默认工作空间。
手动接入探针
步骤一:下载探针安装器 aliyun-bootstrap
从PyPI仓库下载探针安装器。
pip3 install aliyun-bootstrap步骤二:配置环境变量
您需要手动为Python应用添加以下环境变量:
# 方式一:为本SHELL中所有进程添加环境变量
export ARMS_APP_NAME=xxx # 应用名称。
export ARMS_WORKSPACE=xxx # 替换为当前Workspace名称。
export ARMS_REGION_ID=xxx # 对应的阿里云账号的RegionID。
export ARMS_LICENSE_KEY=xxx # 阿里云 LicenseKey。# 方式二:为某个进程单独添加环境变量
ARMS_APP_NAME=xxx ARMS_WORKSPACE=xxx ARMS_REGION_ID=xxx ARMS_LICENSE_KEY=xxx aliyun-instrument xxx.py其中LicenseKey可以通过OpenAPI获取,具体参见获取应用可观测接口返回值中的authToken字段。
(可选)Docker环境安装参考
对于Docker环境,可以参考以下Dockerfile示例修改您的Dockerfile文件。
# 添加环境变量
ENV ARMS_APP_NAME={AppName}
ENV ARMS_REGION_ID={regionId}
ENV ARMS_LICENSE_KEY={licenseKey}
ENV ARMS_WORKSPACE={worksapce}
## 原有环境步骤三:使用aliyun-bootstrap安装Python探针
为了加快安装,建议您使用如下命令先配置镜像仓库。
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && pip config set install.trusted-host mirrors.aliyun.com安装探针。
aliyun-bootstrap -a install
步骤四:启动应用
通过ARMS Python探针启动应用
aliyun-instrument python app.py示例代码
import asyncio
import os
from agentscope.agent import ReActAgent
from agentscope.formatter import DashScopeChatFormatter
from agentscope.message import Msg, TextBlock
from agentscope.model import DashScopeChatModel
from agentscope.tool import Toolkit, ToolResponse
def get_weather(city: str) -> ToolResponse:
weather_data = {
"Beijing": "Sunny 25°C",
"Shanghai": "Cloudy 22°C",
"Hangzhou": "Light rain 20°C",
}
result = weather_data.get(city, f"{city}: No weather data available")
return ToolResponse(content=[TextBlock(type="text", text=result)])
def search_info(keyword: str) -> ToolResponse:
info = {
"West Lake": "West Lake in Hangzhou is a famous freshwater lake, UNESCO World Heritage",
"Great Wall": "Ancient Chinese defensive structure, UNESCO World Heritage",
}
result = info.get(keyword, f"No information found for '{keyword}'")
return ToolResponse(content=[TextBlock(type="text", text=result)])
async def main():
model = DashScopeChatModel(
model_name=os.environ.get("MODEL_NAME", "qwen-plus"),
api_key=os.environ.get("DASHSCOPE_API_KEY"),
)
toolkit = Toolkit()
toolkit.register_tool_function(get_weather)
toolkit.register_tool_function(search_info)
agent = ReActAgent(
name="TravelAgent",
sys_prompt="You are a travel assistant. Use tools to query weather and travel info.",
model=model,
formatter=DashScopeChatFormatter(),
toolkit=toolkit,
max_iters=5,
)
msg = Msg(
name="user",
content="What's the weather in Hangzhou today? Is West Lake worth visiting?",
role="user",
)
result = await agent(msg)
print(result.content)
asyncio.run(main())
查看监控详情
登录云监控2.0控制台,选择目标工作空间,在左侧导航栏选择。
在AI应用列表页面可以看到已接入的应用,单击应用名称可以查看详细的应用监控数据。
