ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PanWatch 盯盘侠:GenAI 语义约定落地,让 LLM Token 消耗在 APM 里看得清清楚楚

PanWatch 盯盘侠:GenAI 语义约定落地,让 LLM Token 消耗在 APM 里看得清清楚楚 PanWatch 盯盘侠:GenAI 语义约定落地,让 LLM Token 消耗在 APM 里看得清清楚楚【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatchPanWatch(盯盘侠)是一款覆盖 A 股、港股、美股的自托管 AI 盯盘助手,内置 TradingAgents 多 Agent 投研团队。每次 AI 分析都会产生 LLM 调用与 Token 消耗——PanWatch 落地了 OpenTelemetry 的 GenAI 语义约定,把每次 LLM 调用的输入/输出 Token 打成标准 span,接入 Jaeger、Tempo、Langfuse 等 APM 后,Token 消耗一目了然。 什么是 GenAI 语义约定,为什么值得做很多自研 AI 应用统计 Token 的方式是打日志 翻控制台,一旦 Agent 一天跑几十次任务,成本就成了一笔糊涂账。OpenTelemetry 的 GenAI 语义约定(GenAI Semantic Conventions)定义了一组标准属性,比如:属性含义gen_ai.system模型提供方(如openai)gen_ai.request.model/gen_ai.response.model请求与响应模型名gen_ai.usage.input_tokens输入 Token 数gen_ai.usage.output_tokens输出 Token 数只要 span 带上这些属性,任何标准 APM 都能自动把它识别为一次模型调用并聚合统计。PanWatch 的导出层就定义在这组常量里:src/platform/observability/otel.py。 3 类 span 映射:一次 Agent 运行的完整链路PanWatch 的桥接非常薄,只在既有埋点处包一层 context manager,把自建可观测体系映射为标准 trace:一次 Agent 运行 → root span:定时任务触发时,调度器在创建 trace 的同时开启 root span,并复用agent_runs的trace_id做关联,见 src/modules/automation/agent_scheduler.py;单次 LLM 调用 → gen_ai 子 span:AI 客户端在每次 chat 调用外围包一层 span,拿到响应后再回填 Token 用量,见 src/platform/ai/ai_client.py;TradingAgents 节点 → 子 span:多 Agent 投研的每个阶段(分析师、辩论、风控、PM 决策)都生成独立 span,并打上panwatch.tradingagents.stage自定义属性,方便在 APM 里对齐内置的阶段进度,见 src/modules/automation/tradingagents/observability.py。这样在 APM 里点开一条 trace,你能看到:一次定时盯盘 → 若干次 LLM 调用 → 各自的 Token 消耗,整条成本链路清清楚楚。⚙️ 最快配置方法:1 个依赖文件 1 个环境变量导出能力是可选的,两步即可启用:安装可选依赖(就两个包):pip install -r requirements-otel.txt配置 OTLP 端点后正常启动服务:export OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318 python server.py启动日志出现 OTel 导出已启用 即生效——初始化入口在 server.py,依赖清单见 requirements-otel.txt。本地验证也很简单,一条 Docker 命令拉起 Jaeger,触发任意 Agent 运行后打开http://localhost:16686,选servicepanwatch就能看到带 Token 用量的完整 trace。️ 默认关闭、零副作用:新手最关心的会不会影响我的部署会。不会。这正是该设计的原则:未配置OTEL_EXPORTER_OTLP_ENDPOINT,或未安装 opentelemetry SDK 时,init_otel()直接返回 False,所有 span 接口降级为 no-op——不抛错、零运行时依赖、不改变任何既有行为;懒加载:模块顶层不 import opentelemetry,导入本身永远安全零成本;初始化异常兜底:即使配置有问题,也只打警告日志,绝不阻断服务启动。对应的行为回归测试(含 no-op 降级、trace 父子关联、Token 回填断言)在 tests/test_otel_export.py,可以放心跟进。Token 数据的来源也不重复造轮子:ai_client原本就记录 usage,导出层只是顺手把它回填到 span 上,且统一经过 packages/pan-agent-token-meter 的normalize_provider_usage归一化,兼容不同厂商的字段命名。 相关文件速查内容路径OTel 导出桥接层src/platform/observability/otel.pyLLM 调用埋点与 Token 回填src/platform/ai/ai_client.pyTradingAgents 节点观测src/modules/automation/tradingagents/observability.py可选依赖清单requirements-otel.txt导出层测试tests/test_otel_export.py官方说明README.zh-CN.md✅ 小结PanWatch 用薄桥接 标准语义的方式,把 AI 盯盘场景里最容易被忽略的LLM Token 成本带进了标准 APM 的观测视野:自建可观测开箱即用,标准 OTel 导出可选启用,两者互不绑架。想让盯盘侠在更多地方跑起来,可从仓库https://gitcode.com/GitHub_Trending/pa/PanWatch克隆源码,按 README 快速开始即可。【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表