注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

セッションログ

AIP Chatbot でのチャットボットの実行は、構造化イベントとしてログに記録され、監視と分析のために Foundry のストリーミングデータセットにエクスポートできます。チャットボットに送信された各メッセージは1回の実行として数えられ、すべての実行に、関連するすべてのログエントリーを結び付ける一意のトレース識別子が割り当てられます。

チャットボットのセッションログのエクスポートには、ログの設定機能を使用します。イベントのスキーマとイベントの種類は変更される場合があります。新しいイベントが追加されたり、既存のスキーマが変更されたりする場合があります。

前提条件

チャットボットのセッションログをエクスポートするには、ログエクスポート機能が必要です。必要なロールについては、エクスポート権限を参照してください。チャットボットの実行ログには、メッセージを送信したユーザーを特定できるユーザー識別子が含まれるため、エクスポートされたログデータへのアクセスは慎重に管理する必要があります。

ログのエクスポートを設定するには、ログの設定ドキュメントの手順に沿って進めてください。ログデータへのアクセスを制御するために、出力ストリーミングデータセットにセキュリティマーキングを適用する、推奨のマーキングを適用ステップも実施してください。

セッションログには、ユーザーのプロンプト、識別子、アプリケーション変数、取得コンテキスト、ツールの入力と結果が含まれる場合があります。エクスポートする前に、監視の目的を定義し、出力データセットへのアクセスを必要とする人に限定し、適切な保持期間を設定してください。これらの制御により、個人を特定できるデータや機密性の高いワークフローデータが広範囲に公開されたり、必要以上に長く保持されたりするリスクを軽減できます。目的の限定、アクセスガバナンス、説明責任、保持に関するガイダンスについては、プライバシーと市民的自由の実践を確認してください。

オントロジーと AIP の観測可能性を使用して、プラットフォーム内でログを閲覧する方法について説明します。

チャットボットの実行ログを理解する

各ログエントリーには、ログスキーマで定義される共通フィールドと、チャットボット固有のイベントデータが含まれます。チャットボット固有のデータは、event_name と、実行中に何が起きたかを記述する payload で構成されます。

共通のログフィールド

以下のフィールドはすべてのログエントリーに含まれ、ログの絞り込みや相関付けに役立ちます。関数の実行や言語モデルの使用など、実行フロー全体にわたる製品のログにもこれらのフィールドが共通して含まれるため、実行リクエスト全体を追跡できます。

フィールドデータ型説明
traceId文字列各実行に割り当てられる Foundry のトレース識別子です。同じ実行のすべてのログエントリーは、同じ traceId を共有します。これを使用して、リクエストを最初から最後まで追跡します。
uid文字列メッセージを送信したユーザーの識別子です。
owning_rid文字列チャットボット、関数、Workshop アプリケーションなど、実行を開始したソースエグゼキューターのリソース識別子です。たとえば、チャットボット A がチャットボット B を呼び出す関数を呼び出した場合、生成されるすべてのログの owning_rid はチャットボット A の RID になります。これを使用して、呼び出しチェーンの深さに関係なく、特定のソースエグゼキューターに由来するすべてのログを検索します。

チャットボットのイベントデータ

各チャットボットイベントには、イベントの種類を識別する event_name と、イベント固有のフィールドを持つ payload が含まれます。すべてのイベントペイロードには、チャットボットのセッションを識別する session_rid が含まれます。これを使用して、1つの会話のすべてのイベントをグループ化します。

ログ構造のサンプル

以下は、user_request イベントのログエントリーを簡略化した例です。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { "time": "2024-01-15T09:30:00.000Z", "uid": "<USER_ID>", "traceId": "<TRACE_ID>", "content": { "event_name": "user_request", "payload": { "session_rid": "ri.aip-agents..session.<SESSION_ID>", "user_query": { "content": [ { "text": { "content": "Summarize the key points from the latest press conference transcript." } } ] } } } }

イベントの種類

チャットボットの実行中には、次の種類のイベントがログに記録されます。

イベント名説明
session_metadata実行開始時に、チャットボットの RID、チャットボットのバージョン、セッションの RID、および呼び出し元の識別子を記録します。
user_requestユーザーのメッセージを、取得コンテキストおよびアプリケーション変数とともに記録します。
system_chat_messageツール定義を含む、LLM に送信されたコンパイル済みのシステムプロンプトを含みます。
user_chat_messageLLM に送信されたユーザーメッセージの内容を含みます。
assistant_chat_messageLLM のレスポンスの内容を含みます。テキストやツール呼び出しが含まれる場合があります。
tool_callツール名およびパースされた入力を含む、ツールの呼び出しを記録します。
tool_call_result成功または失敗の結果と所要時間を含む、ツールの呼び出し結果を記録します。
final_responseユーザーに返されたチャットボットの最終レスポンスを含みます。
execution_error実行中に発生したエラーを記録します。

セッションメタデータ

実行開始時に、チャットボットとセッションの識別情報とともに1回記録されます。

フィールドデータ型説明
agent_rid文字列チャットボットのリソース識別子。
agent_version文字列チャットボットのバージョン。
session_rid文字列セッションのリソース識別子。
caller_identifier文字列実行を開始した呼び出し元の識別子。

ユーザーリクエスト

この実行で解決された取得コンテキストおよびアプリケーション変数を含め、ユーザーのメッセージの完全なコンテキストを記録します。

フィールドデータ型説明
session_rid文字列セッションの識別子。
user_queryUserQueryユーザーのメッセージの内容。テキストとメディアが含まれる場合があります。
contexts_from_profileList<Context>チャットボットに設定されたコンテキストソースから解決された取得コンテキスト。各コンテキストは、オントロジー、ドキュメント、関数ベース、カスタムドキュメントなど、特定の種類のコンテキストを表します。
contexts_from_user_inputList<Context>ユーザーの入力から解決された取得コンテキスト。
application_variablesList<ApplicationVariable>リクエスト時点のアプリケーション変数とその値。各変数には、識別子、名前、値、およびプロンプトでの表示設定が含まれます。
node_id文字列実行ノードの識別子。
parent_node_id文字列(任意)この実行の継続元となったセッションノードの識別子。

チャットメッセージ

system_chat_message、user_chat_message、および assistant_chat_message イベントは、同様の構造を持ちます。

フィールドデータ型説明
session_rid文字列セッションの識別子。
contentList<Content>メッセージの内容。テキスト、Media Reference、またはツール呼び出しが含まれる場合があります。
native_toolsList<NativeTool>ネイティブツール呼び出しモードで LLM が利用可能なツール。system_chat_message にのみ存在します。プロンプトによるツール呼び出しモードで設定されたツールは、代わりに content フィールドに含まれます。

ツール呼び出し

tool_call イベントは、チャットボットがツールを呼び出したときに記録されます。

フィールドデータ型説明
session_rid文字列セッションの識別子。
tool_name文字列呼び出されたツールの名前。
parsed_tool_inputMap<String, String>入力パラメーター名をその値に対応付けるマップ。

ツール呼び出しの結果

tool_call_result イベントは、ツール呼び出しの結果を記録します。

フィールドデータ型説明
session_rid文字列セッションの識別子。
tool_name文字列呼び出されたツールの名前。
tool_call_id文字列(任意)特定のツール呼び出しの識別子。
duration_millisecondsLongツール呼び出しの実行にかかった時間(ミリ秒)。
resultToolResultツール呼び出しの結果。以下のいずれかです。

ToolResult 型は、以下のいずれかです。

  • 成功: LLM に返された値を持つ llm_value(文字列)と、更新されたアプリケーション変数の変数名および新しい値を持つ variable_updates リストを含みます。
  • 失敗: error_message(文字列)と、ツール呼び出しに失敗した理由を説明する reason(文字列)を含みます。

最終レスポンス

ユーザーに対するチャットボットの最終レスポンスを含みます。

フィールドデータ型説明
session_rid文字列セッションの識別子。
responseFinalResponseレスポンスの内容。以下のいずれかです。

FinalResponse 型は、以下のいずれかです。

  • チャットボットのレスポンス: コンテンツ項目のリストを含みます。テキストとメディアが含まれる場合があります。
  • クライアントツール呼び出し: チャットボットが直接レスポンスを返すのではなく、クライアント側のアクションに処理を委ねていることを示します。

実行エラー

実行中にエラーが発生したときに記録されます。

フィールドデータ型説明
session_rid文字列セッションの識別子。
error_name文字列エラーの名前または種類。

例

会話を再構成する

特定のチャットボットとのチャットの会話を再構成するには、次の手順を実行します。

  1. owning_rid がチャットボットの RID と一致するログに絞り込みます。
  2. session_rid でさらに絞り込み、1つの会話を特定します。
  3. ユーザーメッセージについては、event_name が user_request であるエントリーを探し、ペイロードから user_query を抽出します。
  4. チャットボットの返信については、event_name が final_response であるエントリーを探し、ペイロードから response を抽出します。

ツールのパフォーマンスを評価する

ツールのパフォーマンスを分析するには、次の手順を実行します。

  1. event_name が tool_call_result であるエントリーを探します。各エントリーには、tool_name、duration_milliseconds、および呼び出しが成功したか失敗したかが含まれます。
  2. 信頼性を測定するには、ツールごとに成功結果と失敗結果の件数を比較します。
  3. 遅いツールを特定するには、duration_milliseconds で並べ替えます。
  4. 再試行を検出するには、単一の traceId 内で同じ tool_name を持つ tool_call と tool_call_result のペアが複数あるかを確認します。失敗の後に同じツールが再び呼び出されている場合は、チャットボットが再試行したことを示します。