Skip to content

OpenTelemetry GenAI Observability:大模型应用可观测怎么接入 ​

这篇文章解决什么问题 ​

大模型应用的可观测不能只看 HTTP 200。一次 Agent Run 里可能有模型调用、RAG 检索、rerank、工具调用、审批、重试、评测和前端等待。OpenTelemetry 的价值是把这些事件用统一 Trace / Metrics / Logs 串起来。

这篇文章关注如何用 GenAI 语义约定设计 LLM / Agent 可观测。

需要观测什么 ​

层级指标 / Trace
LLM 调用model、provider、tokens、latency、finish_reason
RAGquery、retriever、top_k、hit_count、rerank_latency
Tooltool_name、status、latency、error_code
Agent Stepstep_type、state、retry_count、handoff
Safetyguardrail_triggered、policy_denied、redaction
Costcost_per_request、cost_per_run、cache_hit
UXfirst_token_latency、time_to_complete、handoff_rate

Trace 结构 ​

mermaid
flowchart TD
  Run[agent.run span] --> LLM1[gen_ai.request]
  Run --> RAG[rag.retrieve]
  RAG --> Rerank[rag.rerank]
  Run --> Tool[tool.call]
  Tool --> Policy[policy.check]
  Run --> Eval[eval.score]
  Run --> UI[frontend.event]

Span 属性建议 ​

属性示例
gen_ai.systemopenai
gen_ai.request.modelgpt-4.1
gen_ai.usage.input_tokens1200
gen_ai.usage.output_tokens300
agent.run_idrun_123
agent.step_typetool_call
rag.index_versionkb_2026_06
tool.namecreate_ticket
tool.risk_levelR3
policy.decisionapproval_required
eval.score0.82

注意不要把完整 Prompt、用户隐私和 Secret 放进 span attribute。

Metrics 面板 ​

面板指标
成本cost_per_run、token_per_success、cache_saving
延迟p50/p95 latency、first_token_latency、tool_latency
质量task_success、grounding_score、format_pass_rate
RAGrecall@k、citation_coverage、no_answer_rate
Tooltool_success_rate、approval_timeout、retry_rate
安全policy_denied、injection_detected、pii_redacted

日志分级 ​

日志是否可长期保存
request_id / run_id可以
token 数和成本可以
参数摘要脱敏后可以
原始用户输入谨慎,按数据治理
Prompt 完整内容谨慎,可能含策略和隐私
Secret / Token禁止

面试表达 ​

可以这样讲:

> 我会用 OpenTelemetry 思路把 Agent Run 拆成 agent.run、gen_ai.request、rag.retrieve、tool.call、policy.check 和 eval.score 等 span。每个 span 记录模型、token、延迟、工具、风险等级、策略决策和评测分数,但不记录原始 Secret 和敏感 Prompt。这样可以从一次用户反馈 drill down 到模型调用、检索、工具和安全策略。

落地检查清单 ​

  • [ ] 每次 Agent run 是否有统一 trace_id / run_id?
  • [ ] LLM 调用是否记录模型、token、latency、cost?
  • [ ] RAG / Tool / Policy 是否有独立 span?
  • [ ] 是否有成本、延迟、质量、安全四类 dashboard?
  • [ ] 是否避免记录 PII、Secret 和完整敏感 Prompt?
  • [ ] 用户反馈是否能关联到 Trace?