307 Views
October 27, 25
スライド概要
2025/10/27 に行われた Observability Conference Tokyo 2025 で利用した資料です。
Slides are just my own.
LLMオブザーバビリティにおける トレースの拡張(後半) Shuhei Kawamura © Kong Inc.
自己紹介 川村 修平 / Shuhei Kawamura 所属: Kong 株式会社 - Senior Field Engineer 趣味: サウナ / ゴルフ / スノーボード ひとこと: 筋トレ始めました @shukawam (X/Zenn) © Kong Inc.
Semantic Conventions for GenAI Systems © Kong Inc. 3
SemConv for GenAI Systems status: development OpenTelemetry配下で生成AIのシグナルに対するセマンティック規約を定義 シグナル 概要 イベント モデルに送られた入力や応答を記録するもの メトリクス 生成AIに関するメトリクスを記録するもの(トークン、TTFT、など) モデル・スパン 生成AIモデル or サービスへのクライアント呼び出しを記録するスパン エージェント・スパン エージェント関連の操作を記録するスパン 特定サービス向けのセマンティック規約も一部定義がされていたりする(今日は対象外): ● Azure AI Inference, OpenAI, Amazon Bedrock SemConv for GenAI Systemの設計が実装に反映されたりする: ● ● [Bug]: Incompatibilities with OpenTelemetry LLM semantics pending release feat(otel): map gen_ai.tool.call.arguments/result to input/output © Kong Inc.
改善のためにこういう要望を満たしたい © Kong Inc.
イベント https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/ イベント名 概要 event.gen_ai.client.inference.operation.details モデルに送られた入力や応答を記録する 属性名 概要 gen_ai.operation.name 操作名 gen_ai.conversation.id 会話に付与する一意な ID gen_ai.request.temperature LLMの推論パラメータの一種(温度:出力のランダム性を制御) gen_ai.usage.input_tokens 入力トークン数 gen_ai.usage.output_tokens 出力トークン数 イベントで利用される主な属性例 © Kong Inc.
メトリクス (1) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/ クライアントとサーバのメトリクスに分類される ● クライアント:生成AIアプリケーション側 ● サーバ:LLMをホストするサーバ側 メトリクス名 概要 gen_ai.client.token.usage 利用トークン数 gen_ai.client.operation.duration クライアント操作の実行時間 gen_ai.server.request.duration LLMリクエストの実行時間( TTLB[1]) gen_ai.server.time_per.output_token 単位時間あたりに出力したトークン数 gen_ai.server.time_to_first_token 最初のトークン生成までに要した時間 [1] time-to-last-byte: 最後のバイト(トークン)が生成されるまでの時間 © Kong Inc.
メトリクス (2) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/ 属性名 概要 gen_ai.operation.name 操作名 gen_ai.provider.name モデルのプロバイダー名( openai, gcp.gen_ai, …) gen_ai.request.model リクエストしたモデル名( gpt-4) gen_ai.response.model レスポンスに使用されたモデル名( gpt-4-0613) gen_ai.token_type トークンの種別( input/output) メトリクスで利用される主な属性例 © Kong Inc.
モデル・スパン (1) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/ セマンティック規約は、推論・埋め込み・ツールの実行で異なる 属性名 概要 gen_ai.operation.name 操作名 gen_ai.provider.name モデルのプロバイダー名( openai, gcp.gen_ai, …) gen_ai.request.model リクエストしたモデル名( gpt-4) gen_ai.response.model レスポンスに使用されたモデル名( gpt-4-0613) gen_ai.output_type クライアントが要求したコンテンツの種別( text, json, image) 推論で利用される主な属性例 © Kong Inc.
モデル・スパン (2) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/ 属性名 概要 gen_ai.operation.name 操作名 gen_ai.request.model リクエストしたモデル名( gpt-4) gen_ai.request.encoding_formats 埋め込みで要求したエンコード形式( base64, float, binary) gen_ai.usage.input_tokens 入力トークン数 埋め込みで利用される主な属性例 © Kong Inc.
モデル・スパン (3) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/ 属性名 概要 gen_ai.operation.name 操作名 gen_ai.tool.call.id ツール呼び出しに割り当てられる ID gen_ai.tool.description ツールの詳細情報 gen_ai.tool.name ツールの名前 gen_ai.tool.type ツールの種別( function, extension, datastore, …) ツール実行で利用される主な属性例 © Kong Inc.
エージェント・スパン https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-agent-spans/ 属性名 概要 gen_ai.operation.name 操作名 gen_ai.provider.name モデルのプロバイダー名( openai, gcp.gen_ai, …) gen_ai.agent.description エージェントの詳細情報 gen_ai.agent.id エージェントに割り当てられる ID gen_ai.agent.name エージェントの名前 gen_ai.request.model リクエストしたモデル名 gen_ai.system_instruction システムプロンプト エージェント呼び出しで利用される主な属性例 © Kong Inc.
メトリクス (1) https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/ クライアントとサーバのメトリクスに分類される ● クライアント:生成AIアプリケーション側 ● サーバ:LLMをホストするサーバ側 具体的な属性名を見ても面白くないので、 概要 もう少し深掘りして考えてみる gen_ai.client.token.usage 利用トークン数 メトリクス名 gen_ai.client.operation.duration クライアント操作の実行時間 gen_ai.server.request.duration LLMリクエストの実行時間( TTLB[1]) gen_ai.server.time_per.output_token 単位時間あたりに出力したトークン数 gen_ai.server.time_to_first_token 最初のトークン生成までに要した時間 [1] time-to-last-byte: 最後のバイト(トークン)が生成されるまでの時間 © Kong Inc.
例えば ● プロンプトや出力の保存先について ● トークン数の取得について © Kong Inc.
プロンプトや出力の保存先について LLMに渡すプロンプトや出力はスパンの属性でもイベントのボディとしても 保存できそうだけど、どっちにするべきなんだろう? © Kong Inc.
プロンプトや出力の保存先について スパンの属性 派閥 イベント 派閥 メリット ● 全体像を見たいケースが多く、その場合、 スパンと一緒に表示ができた方が有効 ● 可視化ツールやクエリの処理が簡単 メリット ● サイズ制限が属性に比べて大きい ● 構造化されている ● 検索の分離も可能で、拡張性も高い デメリット ● ベンダー側で属性にサイズ制限がある ● 構造化されていないため、mimeタイプの ような定義が必要 デメリット ● あまり計装ライブラリ側で実装が広まっ ていない 議論の末、イベントに決まる! [1] [1] https://github.com/open-telemetry/semantic-conventions/issues/2010 © Kong Inc.
プロンプトや出力の保存先について スパンの属性 派閥 イベント 派閥 決まったが、、、実際は メリット メリット ●スパンの属性として使用されるケースが多かった 全体像を見たいケースが多く、その場合、 ● サイズ制限が属性に比べて大きい ● スパンと一緒に表示ができた方が有効 可視化ツールやクエリの処理が簡単 ● ● 構造化されている 検索の分離も可能で、拡張性も高い 設計と実装の分離が見られたので、 デメリット ● あまり計装ライブラリ側で実装が広まっ スパンの属性 も利用する方向に軌道修正 ていない デメリット ● ベンダー側で属性にサイズ制限がある ● 構造化されていないため、mimeタイプの ような定義が必要 議論の末、イベントに決まる! [1] [1] https://github.com/open-telemetry/semantic-conventions/issues/2010 © Kong Inc.
トークン数の取得について トークン数は、メトリクスでも取得できるし、イベントやスパンの属性でも取得できる けどどういう風に使い分ければいいの? © Kong Inc.
トークン数の取得について コミュニティでの議論[1] ● メトリクスは、何か問題が発生しているか or 望ましくない方向に進ん でいるかを検出するための手段 👉 傾向の把握が可能 ● スパンは問題の原因を詳細に分析し、修正するための手段 👉 単一リクエストレベルで詳細を確認可能 適材適所の使い分けが大切 [1] https://cloud-native.slack.com/archives/C06KR7ARS3X/p1733435941499349 © Kong Inc.
SemConv for Gen AI Systems で進む議論 ● ● MCP ( Model Context Protocol ) 関連 ○ SemConv側 / MCP側 で Issue / PRが作成され議論中 ■ Semantic Conventions for Model Context Protocol ■ Include OpenTelemetry Trace identifier as part of the MCP client -> server protocol Agent2Agent 関連 ○ 組み合わせる為のフレームワークを議論中 ■ Add MultiAgent Semantic Conventions ■ AI Agent framework Semantic Convention ○ 他のコミュニティにも声掛け中 ■ [Collaboration] AI Agent Framework Semantic Convention © Kong Inc.
デモ © Kong Inc. 21
デモの構成 LLM用に拡張された属性の見え方・ 活用方法を一緒に見てみましょう! © Kong Inc.
まとめ © Kong Inc. 23
まとめ ● ● ● 複雑なシステムの理解には分散トレーシングが有効 LLMアプリケーションの特性 ○ 複雑になりがち 👉 分散トレーシングが有効 ○ 固有の要件 👉 (従来の) Semantic Conventions だと表現の限界 Semantic Conventions for Generative AI ○ GenAI向けのSemantic Conventionsで、ステータスは開発中 ■ あくまで設計なので、実装は別 ○ 標準化の波 🌊 ■ 入出力やトークン数などの共通化が進む ■ MCPサーバーやAgent2Agentの共通化も期待! © Kong Inc.
Thank you! © Kong Inc.