摘要
OpenTelemetry 是監控 AI Agent 的可觀測性標準(span、trace、指標)。OSOP 是定義和記錄 AI Agent 行為的流程標準(工作流程定義 + 執行記錄)。它們在不同層次運作,設計為協同工作。
兩個層次
two-layers.txt
┌─────────────────────────────────────────────┐ │ OSOP Layer (Process) │ │ .osop = "Here's the workflow" │ │ .osoplog = "Here's what actually happened" │ │ Human-readable, auditable, optimizable │ ├─────────────────────────────────────────────┤ │ OpenTelemetry Layer (Observability) │ │ Spans = "This function took 200ms" │ │ Traces = "Request A → Service B → DB C" │ │ Metrics = "P99 latency is 500ms" │ │ Machine-readable, dashboards, alerting │ └─────────────────────────────────────────────┘
主要差異
| 維度 | OSOP | OpenTelemetry GenAI |
|---|---|---|
| 主要目的 | 定義工作流程 + 記錄執行證據 | 監控效能 + 偵測異常 |
| 抽象層次 | 流程步驟(人類可讀) | 函數呼叫、span(機器可讀) |
| 格式 | YAML(.osop + .osoplog) | Protocol Buffers / OTLP |
| 受眾 | 流程負責人、稽核員、AI 工程師 | SRE、平台工程師 |
| 定義意圖 | 是(.osop = 應該發生什麼) | 否(僅記錄發生了什麼) |
| 人工監督 | 第一級人工節點 + 核准閘門 | 未建模 |
| 自我最佳化 | 比較 .osop vs .osoplog | 儀表板/告警 |
何時使用哪個
- OSOP — 使用 OSOP 當你需要定義 Agent 應該做什麼、以人類可讀形式記錄它做了什麼、比較意圖與實際、或提供合規的稽核證據。
- OpenTelemetry — 使用 OpenTelemetry 當你需要系統級效能監控、跨服務的分散式追蹤、即時儀表板、或延遲/錯誤率告警。
- Both — 同時使用兩者當你需要全貌——流程級理解(OSOP)加上基礎設施級可觀測性(OTel)。它們是互補的,而非競爭的。
橋樑:osop-interop
OSOP 的 osop-interop 專案包含雙向 OTel 橋樑:
- OSOP → OTel: OSOP 到 OTel:每個 .osoplog 節點記錄成為一個 OTel span。持續時間對應 span 持續時間。工具呼叫成為子 span。AI 後設資料成為 span 屬性。
- OTel → OSOP: OTel 到 OSOP:OTel trace 可以聚合為 .osoplog 記錄進行流程級分析。Span 成為節點記錄。Trace ID 對應 run_id。
具體範例:醫療診斷工作流程
考慮一個 AI 輔助的醫療診斷工作流程。以下是每個層次捕捉的內容:
OSOP 層(.osoplog)
diagnosis.osoplog.yaml
node_records:
- node_id: "ai_diagnosis"
status: "COMPLETED"
duration_ms: 8500
ai_metadata:
model: "med-llm-v3"
prompt_tokens: 15000
reasoning:
question: "What is the likely diagnosis?"
selected: "Type 2 diabetes"
alternatives:
- { option: "Pre-diabetes", reason: "Borderline A1C" }
- { option: "Type 2 diabetes", reason: "A1C 7.2%" }
confidence: 0.89
- node_id: "doctor_review"
human_metadata:
actor: "dr_smith"
decision: "confirmed"
notes: "Agreed. Order glucose tolerance test."OpenTelemetry 層
otel-trace.json
{
"traceId": "abc123",
"spans": [{
"name": "llm.chat.completions",
"duration": 3200,
"attributes": {
"gen_ai.system": "med-llm",
"gen_ai.usage.prompt_tokens": 15000,
"gen_ai.response.model": "med-llm-v3"
}
}]
}OSOP 層告訴你決定了什麼以及為什麼——診斷、考慮的替代方案、醫生的確認。OTel 層告訴你多快和多可靠——延遲、token 使用量、錯誤率。兩者都有價值。兩者都不能替代另一方。
結論
OSOP 和 OpenTelemetry 回答關於 AI Agent 行為的不同問題。OSOP 問「Agent 做了什麼以及為什麼?」OpenTelemetry 問「系統表現如何?」成熟的 AI 技術棧同時使用兩者——OSOP 用於流程理解和合規,OpenTelemetry 用於運營監控。