更新时间:2026-11-04 GMT+08:00
分享

OpenJiuwen框架

观测功能支持通过Python探针对基于OpenJiuwen框架的JiuwenSwarm智能体应用进行观测,JiuwenSwarm是基于openJiuwen框架构建的多智能体协作平台。

前提条件

  • Python环境版本 >= 3.11,<3.14
  • Node.js环境版本 >= 18.x
  • 已安装JiuwenSwarm,版本 >= 0.2.4
  • 在AgentArts观测界面查看数据不收费。
  • 但数据上报会产生费用:
    • 调用链上报到APM(应用性能管理服务),费用明细请参考APM计费说明。
    • 指标上报到AOM(应用运维管理服务),费用明细请参考AOM计费说明。
  • AOM和APM都是按需计费,并有一定量的免费额度,超出后按实际使用量收费。

框架介绍

JiuwenSwarm是基于OpenJiuwen框架构建的多智能体协作平台,提供开箱即用的智能体应用,包含Web前端界面、多智能体协作(Agent Team)、记忆管理、技能系统、工具调用等能力。用户安装后通过jiuwenswarm-start命令即可启动服务,在浏览器中访问Web界面与智能体交互。

JiuwenSwarm内部基于openJiuwen的Runner运行Agent,探针通过Runner.callback_framework回调机制自动采集观测数据。

接入后,以下能力将被自动监控:

  • Agent执行链路(invoke_agent,根Span)
  • LLM调用(chat):模型名称、Token用量、输入/输出内容、推理内容(reasoning_content)
  • 工具调用(execute_tool):工具名称、输入参数、返回结果
  • 流式响应场景的TTFT(首Token时延)和TPOT(Token间时延)
  • Skill调用:技能名称、调用次数、耗时、成功率
  • 会话数、响应成功率等业务指标

接入步骤

步骤一:获取接入参数

  1. 登录AgentArts 智能体平台。
  2. 在左侧导航栏选择“观测与优化 > 观测”。
  3. 在“智能体列表”页面,单击“接入智能体”,按照页面指引填写名称、智能体类型,创建一个“OpenJiuwen”框架的智能体,并获取各配置参数。

    图1 获取配置参数

步骤二:安装探针

  1. 安装探针。

    下载OpenJiuwen探针,探针下载到本地项目后执行安装。

    pip install huaweicloud_opentelemetry_instrumentation_jiuwen-1.0.0-py3-none-any.whl --force-reinstall

    安装OpenTelemetry依赖包:

    pip install opentelemetry-distro==0.60b1
    pip install opentelemetry-api==1.39.1
    pip install opentelemetry-exporter-otlp==1.39.1
    pip install opentelemetry-exporter-otlp-proto-grpc==1.39.1
    pip install opentelemetry-semantic-conventions==0.60b1
    pip install opentelemetry-semantic-conventions-ai==0.5.1

  2. 配置环境变量。

    您需要手动为Python应用添加以下环境变量,将参数值替换为步骤一:获取接入参数中获取的实际值。

    Windows PowerShell

    # 为本 SHELL 中所有进程添加环境变量
    $env:agentarts_agentops_otel_agent_apm_enable="true"     # 启用 APM Trace,默认false不开启
    $env:agentarts_agentops_otel_agent_aom_enable="true"     # 启用 AOM Metrics,默认false不开启
    
    # 智能体信息配置
    $env:agent_domain_id="<your-domain-id>"                  # 账号 domain ID
    $env:agentarts_project_id="<your-project-id>"            # 账号 Project ID
    $env:agent_resource_id="<your-resource-id>"              # 智能体 ID
    $env:resource_type="agent"                               # 智能体类型:agent,multiagents,workflow
    
    # APM 配置
    $env:agentarts_agentops_apm_token="<your-apm-token>"              # APM 接入凭证 Token
    $env:agentarts_agentops_apm_exporter_endpoint="<endpoint>"        # APM 数据上报地址
    
    # AOM 配置
    $env:agentarts_agentops_aom_access_code="<your-aom-access-code>"      # AOM 接入凭证
    $env:agentarts_agentops_aom_exporter_endpoint="<endpoint>"            # AOM 数据上报地址
    $env:agentarts_agentops_aom_prometheus_id="<your-prometheus-id>"      # Prometheus 实例 ID
    
    # Jiuwen 探针框架识别(推荐显式指定,避免 auto 模式加载全部框架探针)
    $env:AGENTARTS_AGENTOPS_FRAMEWORK="openjiuwen"

    Linux

    # 为本 SHELL 中所有进程添加环境变量
    export agentarts_agentops_otel_agent_apm_enable=true    # 启用 APM Trace,默认false不开启
    export agentarts_agentops_otel_agent_aom_enable=true    # 启用 AOM Metrics,默认false不开启
    
    # 智能体信息配置
    export agent_domain_id=<your-domain-id>          # 账号 domain ID
    export agentarts_project_id=<your-project-id>    # 账号 Project ID
    export agent_resource_id=<your-resource-id>      # 智能体 ID
    export resource_type=agent                       # 智能体类型:agent,multiagents,workflow
    
    # APM 配置
    export agentarts_agentops_apm_token=<your-apm-token>             # APM 接入凭证 Token
    export agentarts_agentops_apm_exporter_endpoint=<endpoint>       # APM 数据上报地址
    
    # AOM 配置
    export agentarts_agentops_aom_access_code=<your-aom-access-code>         # AOM 接入凭证
    export agentarts_agentops_aom_exporter_endpoint=<endpoint>               # AOM 数据上报地址
    export agentarts_agentops_aom_prometheus_id=<your-prometheus-id>         # Prometheus 实例 ID
    
    # Jiuwen 探针框架识别(推荐显式指定,避免 auto 模式加载全部框架探针)
    export AGENTARTS_AGENTOPS_FRAMEWORK=openjiuwen

  3. 启动JiuwenSwarm。

    如果尚未安装JiuwenSwarm,可通过以下命令安装:

    # 创建虚拟环境(推荐)
    python -m venv jiuwenswarm-env
    
    # 激活虚拟环境
    # Windows:
    jiuwenswarm-env\Scripts\activate
    # macOS/Linux:
    source jiuwenswarm-env/bin/activate
    
    # 安装 JiuwenSwarm
    ## 方式一:默认安装
    pip install jiuwenswarm
    
    ## 方式二:使用国内镜像源(推荐)
    # 清华源
    pip install jiuwenswarm -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    # 阿里源
    pip install jiuwenswarm -i https://mirrors.aliyun.com/pypi/simple/

    首次使用JiuwenSwarm需执行初始化命令,系统会自动创建配置目录(Windows为C:\Users\<用户名>\.jiuwenswarm\,Linux/Mac为~/.jiuwenswarm/):

    # 初始化 JiuwenSwarm(首次启动)
    jiuwenswarm-init

    启动JiuwenSwarm服务,在配置好探针环境变量的终端中执行以下命令启动服务:

    # 启动 JiuwenSwarm
    jiuwenswarm-start

    配置模型并开始对话。

    在浏览器中访问http://localhost:5173进入JiuwenSwarm Web界面。配置模型信息后,与智能体对话交互即可产生观测数据。

步骤三:验证数据上报

OpenJiuwen应用启动并产生调用后,可通过以下方式确认数据上报是否成功。

确认探针安装

执行以下命令,确认探针已正确安装:

pip show huaweicloud-opentelemetry-instrumentation-jiuwen

输出中应包含探针名称和版本号,且entry point信息完整。

日志确认

JiuwenSwarm启动时的日志会直接输出到启动jiuwenswarm-start命令的终端窗口中,同时也会保存到日志文件(位于~/.jiuwenswarm/logs/目录下)。在这些日志中搜索OTEL_PROBE关键字,确认探针已成功初始化。日志中应出现以下标识:

OTEL_PROBE | jiuwen instrumentor loaded
OTEL_PROBE | jiuwen callback handler registered 11 callbacks
OTEL_PROBE | SysOperation log handler installed on root logger

如果日志中出现OTEL_PROBE | jiuwen instrumentor loaded,说明探针已正常装配。如果未出现,请参考常见问题进行排查。

AgentArts平台确认

登录AgentArts智能体平台,在“观测与优化 > 观测”页面中找到已接入的智能体,查看各指标与会话数据。

环境变量说明

表1 环境变量说明

环境变量

说明

是否必填

示例值

agent_domain_id

账号domain ID

是

your-domain-id

agentarts_project_id

华为云项目ID

是

your-project-id

agent_resource_id

智能体ID

是

your-agent-id

resource_type

智能体类型:agent,multiagents,workflow

是

multiagents

agentarts_agentops_otel_agent_apm_enable

是否启用APM Trace

是

默认true

agentarts_agentops_otel_agent_aom_enable

是否启用AOM Metrics

是

默认true

agentarts_agentops_apm_token

APM接入凭证Token

APM启用时必填

your-apm-token

agentarts_agentops_apm_exporter_endpoint

APM OTLP数据上报地址

APM启用时必填

apm-endpoint

agentarts_agentops_aom_access_code

AOM接入凭证

AOM启用时必填

your-aom-access-code

agentarts_agentops_aom_exporter_endpoint

AOM OTLP数据上报地址

AOM启用时必填

aom-endpoint

agentarts_agentops_aom_prometheus_id

Prometheus实例ID

AOM启用时必填

your-prometheus-id

表2 可选环境变量

环境变量

说明

默认值

OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT

是否采集LLM输入/输出内容

true

agent_name

智能体名称

jiuwen-agent

agent_version

智能体版本

default

resource_version

资源版本

default

JIUWENSWARM_SESSION_ID

会话ID(未从Agent输入解析到时回退使用)

空

JIUWENSWARM_DEBUG

是否输出探针调试日志(含result结构dump)

false

AGENTARTS_AGENTOPS_FRAMEWORK

指定要加载的框架探针:langchain/langgraph/agentscope/openjiuwen/all/auto

auto

查看监控数据

数据上报成功后,可在AgentArts智能体平台的观测功能中查看监控数据。

  1. 登录AgentArts 智能体平台。
  2. 在左侧导航栏选择“观测与优化 > 观测”。
  3. 在“智能体列表”页面,找到已接入的智能体,单击智能体名称进入详情页面。

查看业务指标

在“指标分析”页签中,可以查看关键业务指标:

  • Tokens消耗:Input Tokens和Output Tokens的消耗总量
  • 模型调用次数:应用调用大模型的累计次数
  • 模型调用平均耗时:模型调用的平均响应时间
  • 模型调用成功率:大模型调用成功的比例
  • 会话数:应用产生的会话总数
  • 响应成功率:服务响应的成功率
  • Skill调用次数/耗时/成功率:Skill技能的调用指标。

查看调用链信息

在“调用链分析”页签中,可以查看完整的Trace调用链路:

  • 查看AGENT(根Span)、LLM、TOOL等Span类型的层级关系及各节点耗时
  • 单击具体Span查看详细信息:
    • Agent根节点:可查看整体会话的输入/输出、Token消耗总量(子Span自动累计)
    • LLM节点:可查看模型名称、输入/输出内容、推理内容(reasoning_content)、Token消耗等
    • Tool节点:可查看工具名称、输入参数、返回结果
  • 同一会话的多轮调用通过gen_ai.conversation.id关联

查看会话分析

在“会话分析”页签中,可以查看智能体与用户对话的历史数据:

  • 追踪对话上下文
  • 分析模型响应耗时
  • 统计Token消耗
  • 快速定位对话异常问题

更多参考

控制内容采集

默认情况下,探针会采集LLM的输入/输出内容。如需关闭:

export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false

探针初始化日志

探针初始化成功后,应用日志中会出现以下标识(用于确认探针已生效):

OTEL_PROBE | jiuwen instrumentor loaded
OTEL_PROBE | jiuwen callback handler registered 11 callbacks
OTEL_PROBE | SysOperation log handler installed on root logger

常见问题

无数据上报

  1. 检查环境变量是否正确配置,特别是agentarts_agentops_apm_token、agentarts_agentops_apm_exporter_endpoint等关键参数是否完整且无多余空格。
  2. 确认agentarts_agentops_otel_agent_apm_enable和agentarts_agentops_otel_agent_aom_enable已设置为true,取值为false不会上报数据。
  3. 检查网络连接,确保运行环境能访问APM/AOM数据上报地址。可通过curl <endpoint>命令验证连通性。
  4. 检查凭证是否有效且未过期,可在AgentArts平台的接入指南页面重新获取最新凭证。
  5. 查看JiuwenSwarm启动日志,搜索OTEL_PROBE关键字,排查探针初始化是否报错。正常情况下应出现OTEL_PROBE | jiuwen instrumentor loaded。

探针未加载

  1. 确认已安装探针whl(site-packages中存在huawei_auto_instrumentation.pth)。
  2. 确认JiuwenSwarm已正确安装。
  3. 确认AGENTARTS_AGENTOPS_FRAMEWORK=openjiuwen或auto模式下主脚本导入了openjiuwen。
  4. 确认环境变量在启动jiuwenswarm-start的终端中已正确设置。

JiuwenSwarm启动失败

  1. 确认Python版本 >= 3.11。
  2. 确认已执行jiuwenswarm-init初始化配置目录。
  3. 如端口被占用,JiuwenSwarm会自动切换到备用端口,查看终端输出的实际端口信息。
  4. 确认已正确配置JiuwenSwarm的模型API,模型配置错误会导致智能体无法响应。

模型连接错误(Connection error / ProxyError: 504 Gateway Time-out)

  1. JiuwenSwarm内部使用httpx调用模型,httpx默认trust_env=True会读取系统代理,若代理无法访问模型端点会返回504。
  2. 确认在JiuwenSwarm中填写的模型地址正确。
  3. 确认model_provider选择了正确的提供商类型(如OpenAI、DeepSeek等),不同提供商的API格式不同。
  4. 内网模型端点可能被公司代理拦截,需确认端点对当前网络放行。

探针重复加载警告(Attempting to instrument while already instrumented)

  1. 此为探针已知问题(opentelemetry-instrument CLI的distro机制与.pth sitecustomize两条路径均触发pre_custom_instrument)。
  2. 升级到最新探针版本(_apply_instrumentation_patches.py已加幂等保护),或重新执行pip install --force-reinstall命令安装探针。
  3. 警告不影响业务,但会产生重复span/指标。确认日志中只出现一次OTEL_PROBE | openjiuwen instrumentor loaded。

部分Span缺失

  1. 确认通过jiuwenswarm-start命令启动服务时,环境变量已在当前终端中正确设置。探针通过.pth → sitecustomize机制自动加载,需确保环境变量在启动前已生效。
  2. 如使用opentelemetry-instrument jiuwenswarm-start启动,可获得更完整的自动插桩支持。
  3. 确认JiuwenSwarm已正确安装且openjiuwen模块可用(jiuwenswarm依赖openjiuwen框架)。
  4. 流式场景确认LLM返回usage(某些模型可能不返回)。

Token统计不准确

  1. 确保使用最新版本的探针。
  2. 流式场景下确认模型返回了usage字段,探针只在携带usage_metadata的final chunk记录Token。
  3. 模型在响应中不返回usage字段或返回的Token数为近似值,此为模型侧行为,非探针问题。可在AgentArts调用链详情中确认模型节点的usage字段是否为空。
  4. 设置JIUWENSWARM_DEBUG=true查看result结构与usage提取情况。

相关文档