当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > AI 调用可观测架构:从散乱日志到 OpenTelemetry GenAI 字段统一

AI 调用可观测架构:从散乱日志到 OpenTelemetry GenAI 字段统一

来源:17golang原创 2026-07-01 16:46:05 0浏览 收藏

AI 能力从一个聊天入口扩展到客服、搜索、报表、批处理和内部助手以后,最先暴露的问题往往不是“模型不会答”,而是线上看不清:哪条业务用了哪个模型、输入输出 token 各是多少、首字延迟为什么变高、失败是供应商返回还是网关拦截。要把 AI 调用做成可运维能力,第一步就是把观测字段统一起来。

目录
  • 规模背景:AI 调用从单点接入变成平台依赖
  • 原架构瓶颈:日志能查,但没法横向比较
  • 新架构:用 GenAI 语义字段统一采集层
  • 关键取舍:内容隐私、token 精度和采样比例
  • 上线结果:用四类指标判断架构是否有效
  • 后续改进:把观测数据反推路由和预算策略
  • 总结

规模背景:AI 调用从单点接入变成平台依赖

很多团队最早接入大模型时,代码结构很简单:某个业务服务直接调用某个模型 SDK,失败就打日志,费用靠账单平台月底复查。这在低频试验阶段没有明显问题,但一旦进入多业务、多模型、多供应商阶段,调用链会变得很散。

典型变化有三类:

  • 入口变多:Web 问答、后台助手、离线生成任务、知识库摘要都开始调用模型。
  • 模型变多:同一个场景可能按成本、延迟、上下文长度选择不同模型。
  • 结果变复杂:一次请求不只返回文本,还可能包含工具调用、检索片段、流式片段和安全拦截状态。

这时如果每个业务自己写日志字段,排查会很痛:一个服务叫 model,另一个叫 llm_model;一个记录 prompt_tokens,另一个只记录总 token;流式响应只看总耗时,看不到首个片段延迟。

原架构瓶颈:日志能查,但没法横向比较

散乱日志最大的问题不是完全没有数据,而是数据不能放在一起比较。比如客服助手说今天很慢,搜索摘要说费用突然升高,批处理说失败率上来了,如果字段不统一,平台侧只能临时写脚本拼数据。

AI 调用从业务直连模型到 OpenTelemetry Collector 统一采集和告警看板的架构检查板

原架构常见瓶颈可以整理成一张表:

问题散乱写法平台需要的能力
模型字段不统一modelenginellm 混用能按请求模型和响应模型聚合
token 不可比较只记录总数或只记录供应商原始字段输入、输出、缓存命中分别看
流式延迟看不见只记录总耗时能区分首个片段延迟和完整耗时
错误分类太粗统一写成 failed能区分超时、限流、网关拒绝和上游错误
隐私边界不清把完整输入输出写进日志默认脱敏,按需抽样保留摘要

这就是为什么 AI 观测不适合只靠业务日志自然生长。日志仍然有价值,但平台层需要一套稳定字段,让不同业务、不同模型、不同供应商的调用能进入同一张看板。

新架构:用 GenAI 语义字段统一采集层

OpenTelemetry 的 GenAI 语义约定把生成式 AI 调用拆成 spans、metrics、events 等信号,并定义了一批 gen_ai.* 字段。工程落地时可以先从最小字段集开始,不必一口气记录所有可选内容。

一个可落地的架构是:业务服务不直接把原始日志散落到各处,而是通过 AI 网关或统一 SDK 生成 span 和指标,再交给 OTel Collector,最后进入日志、指标、链路和告警系统。

type AITraceAttrs struct {
    Operation    string
    Provider     string
    RequestModel string
    Stream       bool
    InputTokens  int
    OutputTokens int
    ErrorType    string
}

func fillGenAIAttrs(span SpanLike, a AITraceAttrs) {
    span.Set("gen_ai.operation.name", a.Operation)
    span.Set("gen_ai.provider.name", a.Provider)
    span.Set("gen_ai.request.model", a.RequestModel)
    span.Set("gen_ai.request.stream", a.Stream)

    if a.InputTokens > 0 {
        span.Set("gen_ai.usage.input_tokens", a.InputTokens)
    }
    if a.OutputTokens > 0 {
        span.Set("gen_ai.usage.output_tokens", a.OutputTokens)
    }
    if a.ErrorType != "" {
        span.Set("error.type", a.ErrorType)
    }
}

这里的关键不是代码多高级,而是字段稳定。先把 operationproviderrequest.modelinput_tokensoutput_tokenserror.type 这几类字段统一,平台就能做三件事:按模型看延迟,按业务看 token,按错误类型看可靠性。

OpenTelemetry GenAI 字段落地清单:模型字段、输入输出 token、隐私脱敏、采样 span 和告警状态

建议从下面这组最小清单开始:

  • gen_ai.operation.name:区分聊天、补全、向量、检索等操作。
  • gen_ai.provider.name:区分供应商或内部模型平台。
  • gen_ai.request.model:记录请求时指定的模型。
  • gen_ai.response.model:记录实际响应模型,方便发现路由变化。
  • gen_ai.usage.input_tokens:记录输入 token。
  • gen_ai.usage.output_tokens:记录输出 token。
  • gen_ai.response.time_to_first_chunk:流式响应首个片段延迟。
  • error.type:低基数字段,用来聚合错误类型。

关键取舍:内容隐私、token 精度和采样比例

AI 调用观测最容易踩坑的地方,是把“看得见”误解成“什么都记录”。OpenTelemetry 的 GenAI 约定里,输入消息、输出消息、系统指令等内容字段通常属于可选或需要特别谨慎处理的部分,因为它们可能包含个人信息、内部资料、订单内容或业务密钥。

实际落地可以按三层处理:

1. 默认只记录结构化指标

模型名、供应商、token、耗时、错误类型、是否流式,这些字段足够支撑大多数平台看板。默认不要记录完整 prompt 和完整回复。

2. 对内容做摘要和脱敏

如果某些排查必须看输入输出,可以只记录摘要、哈希、长度、模板名、模板版本和风险标签。比如记录 prompt_name=refund_helperprompt_version=v3,比记录完整用户对话更稳。

3. 高风险场景单独采样

客服、医疗、金融、内部代码助手这类场景,内容采样要有明确开关、保留期和访问权限。采样不是为了“多存点以后可能有用”,而是为了能复盘特定问题。

token 精度也要做取舍。有的供应商直接返回计费口径,有的返回模型消耗口径,有的还有缓存读写 token。平台最重要的是统一口径:报表里展示哪一种,就在接入层明确转换规则,并在字段说明里写清楚。

上线结果:用四类指标判断架构是否有效

统一字段上线后,先不要急着做复杂智能路由。第一阶段只看四类指标,判断观测架构是否真的生效:

指标看什么异常信号处理动作
延迟p50、p95、首个片段延迟首字慢但总耗时正常检查流式、网关缓冲、上游排队
成本输入输出 token、缓存 token某业务输入 token 突增检查 prompt 拼接和上下文压缩
可靠性错误类型、限流、超时单供应商错误集中上升触发降级或切换备用模型
质量旁路人工确认、用户重试、拒答比例重试率高但模型错误少检查检索结果和业务提示模板

如果统一字段做对了,问题定位会从“去每个业务服务翻日志”变成“先在平台看哪类模型、哪类业务、哪类错误异常”。这对规模化团队尤其重要,因为 AI 调用已经不再是某个单点功能,而是多个业务共享的基础能力。

后续改进:把观测数据反推路由和预算策略

观测架构稳定后,下一步可以把数据反推到治理策略里:

  • 模型路由:低风险短文本走低成本模型,高风险长上下文走更强模型。
  • 预算保护:按业务、租户、用户、任务类型设置 token 上限。
  • 降级策略:当某个供应商 p95 延迟或错误率异常时,切换备用路径。
  • 提示模板治理:prompt.nameprompt.version 看成本与失败率。
  • 隐私审计:定期检查是否有人把完整输入输出写进高保留期日志。

这也是规模化架构深挖的核心:AI 网关、OTel Collector、指标库和告警系统不是为了“看起来专业”,而是为了让路由、成本、可靠性和隐私策略都能有数据支撑。

总结

AI 调用的可观测性建设,不应该停留在“每次请求打一行日志”。当业务入口、模型供应商、调用模式和计费口径都变多时,团队需要的是统一字段、统一采集、统一看板和明确的隐私边界。

落地建议按三步走:第一,把 AI 调用收口到统一 SDK 或 AI 网关;第二,按 OpenTelemetry GenAI 语义字段记录模型、供应商、token、耗时和错误类型;第三,在上线后用延迟、成本、可靠性和隐私四类指标复查。这样一来,AI 能力从“能调用”走向“能运维”,后续做模型路由、预算保护和质量治理才有稳固基础。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go http.ResponseController 有什么用?Flush、写超时和 FullDuplex 这样理解Go http.ResponseController 有什么用?Flush、写超时和 FullDuplex 这样理解
上一篇
Go http.ResponseController 有什么用?Flush、写超时和 FullDuplex 这样理解
diagrams.net 导出高清 PNG:透明背景、缩放比例和回导核对流程
下一篇
diagrams.net 导出高清 PNG:透明背景、缩放比例和回导核对流程
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    3184次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    2938次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    2895次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    3099次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    3057次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码