Skip to main content
AIエージェントが本番環境で何をしたかを正確に把握する: すべてのエージェント実行、ツール呼び出し、モデルリクエスト、フック、および人間の介入。Failproof AI Observability Python SDKは、エージェントコードの内側からその実行履歴を記録し、何が起きたかをデバッグ・監査・評価できるようにします。Failproof AI Observabilityでエージェントを観測したい場合にご利用ください。 内部では、SDKが構造化イベントをローカルのJSONLファイルに書き込み、コレクターデーモンがそれらを自動的に収集してプラットフォームに送信します。これらのファイルを自分で管理する必要はありません。
ヒント: Failproof AI Observabilityを初めてお使いですか?このページはSDKイベントの完全なリファレンスです。

インストール

SDKは公開パッケージインデックスではなく、プライベートホイールとしてお客様に配布されます。取得・インストール・バージョン固定の方法はオンボーディングで説明しています。アクセスが必要な場合は Failproof AI の担当者にお問い合わせください。 インストール後、以下で確認してください:
コーディングエージェントに統合作業をすべて任せたい場合は、Python SDK Agent Skill をご利用ください。インストールパスを把握し、計装ポイントを計画・実装して、イベントが正しく届いているか検証します。

クイックスタート

実際の呼び出しへの計装

実際には、既存のエージェントコードをラップします。モデル呼び出しの前に model_request、後に model_response を配置することで、2つのイベントが実際のリクエストをまたぎ、Failproof AI Observabilityがペアとして関連付けられるようになります:
ツール呼び出しも同様に tool_usetool_result でラップし、ペア間で同じ tool_call_id を使い回します。 ダッシュボードに届いたイベントは、タイプ別に色分けされ、環境・エージェント・セッションでフィルタリングできます: ライブイベントストリーム。イベントタイプ別に色分けされ、環境・エージェント・セッションでフィルタリング可能

configure()

event.* を呼び出す前に一度だけ呼び出してください。省略しても問題ありません。デフォルト設定でそのまま動作します。すべての引数はキーワード専用です。上記のように名前で渡してください。 base_dirNone(デフォルト)の場合、SDKは $AGENTEYE_HOME が設定されていればそれを使用し、未設定の場合は ~/.agenteye にフォールバックします。これはコレクター自身の解決方法と一致しているため、AGENTEYE_ENVIRONMENT 環境変数ひとつで SDK とコレクター両方のイベントスプールを共有設定できます。

環境

すべてのイベントにデプロイ環境のラベルを付けます(productionstagingqacanary など)。一度設定するだけで、SDKがすべてのイベントに自動的に付加します。 オプション1: configure() 経由:
オプション2: 環境変数経由:
優先順位: configure(environment=...) が環境変数より優先されます。どちらも設定されていない場合、デフォルトは "dev" です。 環境の値はダッシュボードのファーストクラスフィルターとして表示され、高速クエリのためサーバーに保存されます。
警告: 環境の値にリテラルのカンマ , を含めることはできません。ダッシュボードのフィルターはワイヤー上でカンマ区切りのマルチセレクトを使用するため(?environment=prod,staging)、prod,blue という名前の環境は2つの値に分割されます。カンマを含む環境名のイベントはインジェスト時に拒否されます。

データとプライバシー

SDKは明示的に渡したフィールドのみを記録します。プロンプト、メッセージ、ツールの入出力、モデルのコンテンツは、event.* 呼び出しに渡した場合にのみキャプチャされます。プロセスからの暗黙的な読み取りやキャプチャは一切行いません。未設定のフィールドはイベントから完全に省略され、ディスクに書き込まれません。 そのため、データのマスキングはお客様の判断と責任で行ってください。プロンプトやツールのペイロードに保存したくないPIIや機密情報が含まれている場合は、イベントメソッドに渡す前にそれらを除去またはマスクしてください。

イベントリファレンス

ほとんどのイベントは相関IDを共有する開始/終了ペアで構成されています: tool_usetool_resulttool_call_id を共有し、hook_triggeredhook_completedhook_id を共有し、human_waithuman_inputinput_id を共有します。開始イベントを発行し、処理を実行してから、同じIDで終了イベントを発行してください。Failproof AI Observabilityがペアを照合し duration_ms を自動計算するため、duration_ms を自分で渡す必要はありません。 セッションのgit形式の実行グラフとイベントタイムライン。ペアイベントから再構築され、ツール・モデル・フックの内訳パネルを表示 すべてのイベントメソッドに以下の2フィールドが必須です: すべてのメソッドはカスタムメタデータ用の任意の **kwargs も受け付けます(カスタムフィールド 参照)。

event.agent_start()

エージェントが作業を開始したときに発行されます。

event.agent_end()

エージェントが作業を完了したときに発行されます。

event.tool_use()

エージェントがツールを呼び出したときに発行されます。tool_result とペアにしてください。SDKが duration_ms を自動計算します。

event.tool_result()

ツールが返答したときに発行されます。tool_call_id を通じて tool_use と関連付けられます。

event.model_request()

LLMにプロンプトを送信する直前に発行されます。
messages のエントリはプレーン文字列の content でも、Anthropic形式のブロックリストの content でも受け付けます。サンプリングパラメータ(temperaturemax_tokens など)は追加のkwargsとして渡せます。

event.model_response()

LLMがレスポンスを返したときに発行されます。
content はプレーン文字列(汎用プロバイダー)またはAnthropic形式のコンテンツブロックのリストを受け付けます。ツール呼び出しは {"type": "tool_use", ...} ブロックとして content 内に含まれます。別途 tool_calls フィールドはありません。

event.hook_triggered()

フックが発火したときに発行されます。hook_completed とペアにしてください。SDKが duration_ms を自動計算します。

event.hook_completed()

フックが完了したときに発行されます。hook_id を通じて hook_triggered と関連付けられます。

event.error()

未処理のエラーが発生したときに発行されます。

ヒューマン・イン・ザ・ループ イベント

ヒューマン・イン・ザ・ループイベントは、エージェントの実行に人間が介入する瞬間(承認待ち、入力提供、一時停止、またはエージェントの停止)を監視するためのものです。これらのイベントにより、人間が応答するまでの時間を計測し(SDKがペアイベントの duration_ms を自動計算します)、誰がエージェントを一時停止または中断したかを監査し、ダッシュボードに表示される承認・監視ワークフローを構築できます。

event.human_wait()

エージェントが人間からの入力を待つために実行を一時停止したときに発行されます。human_input とペアにしてください。SDKが duration_ms(人間が応答するまでの時間)を自動計算します。

event.human_input()

人間が入力を提供してエージェントが再開したときに発行されます。input_id を通じて human_wait と関連付けられます。duration_ms は自動計算されるため、呼び出し元から渡してはいけません。

event.human_pause()

人間がエージェントを能動的に一時停止したとき(例: ダッシュボードのコントロール経由)に発行されます。エージェントは中断されますが、終了はしません。

event.human_interrupt()

人間がエージェントの実行中に能動的に停止させたときに発行されます。human_pause とは異なり、エージェントの作業は中断ではなく終了します。

カスタムフィールド

追加のキーワード引数は、標準フィールドの後にイベントへ付加されます:
timestamptypeenvironment は予約済みであり、カスタムフィールドとして渡すと ValueErrorReserved field names cannot be used as custom fields: [...])が発生します。session_idagent_id はすべてのイベントメソッドの必須パラメータであり、2回渡すことはできません。その場合、Pythonは TypeError を発生させます。環境の設定には configure(environment=...) または AGENTEYE_ENVIRONMENT 変数を使用してください。 ペイロードのフィールドをクエリしたい場合は、構造化JSONで保持してください。JSON がネイティブにサポートしない値(日時、UUID、Decimal、セット、バイト、モデルオブジェクトなど)は文字列に変換されるため、記録は安全に続行されます。

イベントの書き込み方法

イベントはプロセス内でバッファリングされ、flush_interval 秒ごと(デフォルト500ms)にディスクにフラッシュされます。各フラッシュは1つのJSONLファイルを書き込みます:
コレクターはこのディレクトリを監視し、ファイルを自動的にアップロードします。これらのファイルを直接管理する必要はありません。 各ファイルはアトミックに書き込まれます: SDKは一時ファイルに書き込んだ後、所定の場所にリネームするため、コレクターが書きかけのファイルを読み取ることはありません。プロセス終了時にも最終フラッシュが実行されるため、最後のインターバルでバッファリングされたイベントが失われることはありません。コレクターがオフラインの場合、イベントはディスク上にファイルとして蓄積され、コレクターが復帰次第送信されます。

次のステップ

  • イベントストリーム: これらのイベントがリアルタイムで届く様子を、タイプ別の色分けと環境・エージェント・セッションによるフィルタリングで確認できます。
  • セッション: ペアイベントが各エージェント実行を実行グラフとタイムラインとしてどのように再構築するかを確認できます。