注: 以下の翻訳の正確性は検証されていません。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_message | LLM に送信されたユーザーメッセージの内容を含みます。 |
assistant_chat_message | LLM のレスポンスの内容を含みます。テキストやツール呼び出しが含まれる場合があります。 |
tool_call | ツール名およびパースされた入力を含む、ツールの呼び出しを記録します。 |
tool_call_result | 成功または失敗の結果と所要時間を含む、ツールの呼び出し結果を記録します。 |
final_response | ユーザーに返されたチャットボットの最終レスポンスを含みます。 |
execution_error | 実行中に発生したエラーを記録します。 |
実行開始時に、チャットボットとセッションの識別情報とともに1回記録されます。
| フィールド | データ型 | 説明 |
|---|---|---|
agent_rid | 文字列 | チャットボットのリソース識別子。 |
agent_version | 文字列 | チャットボットのバージョン。 |
session_rid | 文字列 | セッションのリソース識別子。 |
caller_identifier | 文字列 | 実行を開始した呼び出し元の識別子。 |
この実行で解決された取得コンテキストおよびアプリケーション変数を含め、ユーザーのメッセージの完全なコンテキストを記録します。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
user_query | UserQuery | ユーザーのメッセージの内容。テキストとメディアが含まれる場合があります。 |
contexts_from_profile | List<Context> | チャットボットに設定されたコンテキストソースから解決された取得コンテキスト。各コンテキストは、オントロジー、ドキュメント、関数ベース、カスタムドキュメントなど、特定の種類のコンテキストを表します。 |
contexts_from_user_input | List<Context> | ユーザーの入力から解決された取得コンテキスト。 |
application_variables | List<ApplicationVariable> | リクエスト時点のアプリケーション変数とその値。各変数には、識別子、名前、値、およびプロンプトでの表示設定が含まれます。 |
node_id | 文字列 | 実行ノードの識別子。 |
parent_node_id | 文字列(任意) | この実行の継続元となったセッションノードの識別子。 |
system_chat_message、user_chat_message、および assistant_chat_message イベントは、同様の構造を持ちます。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
content | List<Content> | メッセージの内容。テキスト、Media Reference、またはツール呼び出しが含まれる場合があります。 |
native_tools | List<NativeTool> | ネイティブツール呼び出しモードで LLM が利用可能なツール。system_chat_message にのみ存在します。プロンプトによるツール呼び出しモードで設定されたツールは、代わりに content フィールドに含まれます。 |
tool_call イベントは、チャットボットがツールを呼び出したときに記録されます。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
tool_name | 文字列 | 呼び出されたツールの名前。 |
parsed_tool_input | Map<String, String> | 入力パラメーター名をその値に対応付けるマップ。 |
tool_call_result イベントは、ツール呼び出しの結果を記録します。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
tool_name | 文字列 | 呼び出されたツールの名前。 |
tool_call_id | 文字列(任意) | 特定のツール呼び出しの識別子。 |
duration_milliseconds | Long | ツール呼び出しの実行にかかった時間(ミリ秒)。 |
result | ToolResult | ツール呼び出しの結果。以下のいずれかです。 |
ToolResult 型は、以下のいずれかです。
llm_value(文字列)と、更新されたアプリケーション変数の変数名および新しい値を持つ variable_updates リストを含みます。error_message(文字列)と、ツール呼び出しに失敗した理由を説明する reason(文字列)を含みます。ユーザーに対するチャットボットの最終レスポンスを含みます。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
response | FinalResponse | レスポンスの内容。以下のいずれかです。 |
FinalResponse 型は、以下のいずれかです。
実行中にエラーが発生したときに記録されます。
| フィールド | データ型 | 説明 |
|---|---|---|
session_rid | 文字列 | セッションの識別子。 |
error_name | 文字列 | エラーの名前または種類。 |
特定のチャットボットとのチャットの会話を再構成するには、次の手順を実行します。
owning_rid がチャットボットの RID と一致するログに絞り込みます。session_rid でさらに絞り込み、1つの会話を特定します。event_name が user_request であるエントリーを探し、ペイロードから user_query を抽出します。event_name が final_response であるエントリーを探し、ペイロードから response を抽出します。ツールのパフォーマンスを分析するには、次の手順を実行します。
event_name が tool_call_result であるエントリーを探します。各エントリーには、tool_name、duration_milliseconds、および呼び出しが成功したか失敗したかが含まれます。duration_milliseconds で並べ替えます。traceId 内で同じ tool_name を持つ tool_call と tool_call_result のペアが複数あるかを確認します。失敗の後に同じツールが再び呼び出されている場合は、チャットボットが再試行したことを示します。