CrewAI workflow telemetry でイベントを送信して確認する
制御されたアプリケーション境界で CrewAI workflow telemetry を使用し、イベント コントラクトを小さく保ち、集約ビューを構築する前に既知の結果を検証します。
- 1
結果を選択してください
マルチエージェントワークフローの可観測性
- 2
契約を定義する
run_id、crew_name、呼び出し状態
- 3
結果で発行する
既存のCrewと入力をrun_research_crewに渡してください。このラッパーは同期kickoffのみ対応します。非同期メソッド、ストリーム、チェックポイント再開には別のライフサイクル処理が必要です。
- 4
証拠を検証する
Exercise a known fixture, then inspect crew_invocation for one correctly typed terminal row.
始める前に
始める前に
- stream=Falseに設定した既存の同期Crewとアプリケーションの入力
- サーバー側のTELEMETRY_API_KEY。この例はTelemetry SDKではなくPython標準ライブラリのHTTPを使います
- タスクの入力、エージェントの出力、メモリ、知識、ツールのペイロードをカバーするコンテンツ ポリシー
配信設定
サーバー側のインストールと初期化
この同期CrewラッパーはPython標準ライブラリのHTTPでイベントを送信します。Telemetry SDKのインストールや初期化は不要です。 ブラウザ バンドル、クライアントに表示される環境変数、ソース管理、ログ、および例外メッセージに取り込み資格情報が含まれないようにします。
- 1既存の同期Crewをrun_research_crewでラップし、stream=Falseを維持してください。
- 2成功、失敗、再試行、またはタイムアウトの境界に結果イベントを追加します。
- 3アラートを有効にする前に、制御されたフィクスチャを送信し、保存されている行を検査します。
スニペット
1 つの構造化されたイベントから始める
ワークフローが完了、失敗、または再試行される場所にこの図形を追加します。次に、実際のフィールドからダッシュボードを構築します。
CrewAI workflow telemetryイベント
import json
import os
import sys
from time import perf_counter
from urllib.request import Request, urlopen
from uuid import uuid4
def emit_crew_invocation(event):
try:
key = os.environ.get("TELEMETRY_API_KEY")
if not key:
return
request = Request(
"https://api.telemetry.sh/log",
data=json.dumps({"table": "crew_invocation", "data": event}).encode("utf-8"),
headers={"Authorization": key, "Content-Type": "application/json",
"User-Agent": "telemetry-crew-example/1"},
method="POST",
)
with urlopen(request, timeout=1) as response:
if not 200 <= response.status < 300:
raise RuntimeError("telemetry_delivery_unconfirmed")
except Exception:
try:
print("Telemetry delivery unconfirmed", file=sys.stderr)
except Exception:
pass
def run_research_crew(research_crew, inputs):
# Use an already configured, synchronous, non-streaming Crew.
if getattr(research_crew, "stream", False):
raise ValueError("This wrapper requires stream=False")
run_id = str(uuid4())
started_at = perf_counter()
status, error_type = "interrupted", None
try:
result = research_crew.kickoff(inputs=inputs)
status = "returned"
return result
except Exception as error:
status = "failed"
error_type = "timeout" if isinstance(error, TimeoutError) else "crew_error"
raise
finally:
# Neither metadata creation nor export may replace the crew outcome.
try:
emit_crew_invocation({
"run_id": run_id,
"crew_name": "research_crew",
"status": status,
"error_type": error_type,
"duration_ms": round((perf_counter() - started_at) * 1000),
"release": os.environ.get("APP_RELEASE"),
})
except Exception:
pass
# Pass your application's existing Crew and inputs:
# result = run_research_crew(research_crew, inputs)イベントスキーマ
run_id、crew_name、呼び出し状態
duration_ms、限定したerror_type、release
設定を確認する
チェックポイント 1
既存のCrewと入力をrun_research_crewに渡してください。このラッパーは同期kickoffのみ対応します。非同期メソッド、ストリーム、チェックポイント再開には別のライフサイクル処理が必要です。
チェックポイント 2
kickoffが戻っても、作業の承認や下流への配信は証明できません。レビューの判断は別に記録します。この例ではタスク数、委任、再試行、費用は測定しません。
チェックポイント 3
これらのイベントには入力、出力、メモリ、知識、ツールのデータ、例外の本文を含めないでください。
チェックポイント 4
HTTP送信には1秒のソケットタイムアウトがあり、厳密な総時間制限ではありません。送信や診断の失敗は元の結果や例外を置き換えませんが、同期送信は遅延を加えることがあります。永続キュー、再試行、終了時の排出はありません。
チェックポイント 5
ステップレベルの診断が必要な場合は、CrewAI 独自のトレースまたはコールバックを使用し、承認された実行 ID と関連付けます。
検証
イベントが到着したことを証明する
既知の成功例と失敗例を実行した後、これを実行します。最終的なイベント コントラクトがスニペットと異なる場合は、フォールバック テーブル名を置き換えます。
CrewAI workflow telemetry 検証クエリ
SELECT *
FROM crew_invocation
ORDER BY timestamp_utc DESC
LIMIT 20;実装の参考資料
新しい運用パスを有効にする前に、イベント契約、データ安全性に関するガイダンス、上流の主要ドキュメントを確認してください。
イベントを記録する場所
結果イベントを小さく、回復可能なものに保つ
このパターンが提供するのは、
- 上流のワークフローの横にある、制限付きの SQL 対応の結果。
- ダッシュボード、アラート、およびイベント間の相関関係の安定したフィールド。
- 成功、失敗、再試行、タイムアウトの動作を検証するためのフィクスチャ駆動のパス。
このパターンでは提供されません
- OTLP エクスポーター、自動収集パイプライン、または詳細なトレースと診断ログの代替。
- ペイロードにイベント ID が含まれているという理由だけで、1 回だけ配信されます。
- 生のプロバイダー ペイロード、ユーザー コンテンツ、資格情報、または規制されたデータを収集する許可。
イベントスキーマの例
このワークフローのイベントスキーマ
クエリまたはスニペットを運用環境に適用する前に、行粒度、出力境界、必要なタイプ、プライバシー クラス、サンプル ペイロード、および検証チェックリストを確認してください。
関連製品の機能
このワークフローを続行します AIエージェントの監視
レビュー可能な SQL を使用して、エージェントの実行、ツールの使用、モデルのコスト、品質、製品の結果を結び付けます。
関連する SQL レシピ
その他のSQL例
このワークフローの構造化フィールドに対してクエリを実行し、結果の例を検査して、有用な回答をダッシュボードまたはアラートに変換します。
AI エージェントのタスクの成功と人間による引き継ぎを測定する
どのエージェントのワークフローが正常に終了し、受け入れられた結果をもたらしますか?
レシピを開くネストされた AI ツール呼び出しイベントのクエリ
最も失敗した呼び出しに関連する AI ツールと引数はどれですか?
レシピを開く繰り返しを検出する AI エージェント ツール Loops
どのエージェントの実行が繰り返しのツール ループに陥っているように見えますか?
レシピを開く相関のあるワークフローのタイムラインを再構築する
最近失敗したワークフロー中に、順番に何が起こったのでしょうか?
レシピを開く1 ドルあたりの受け入れられた AI 出力を測定する
どのモデルと機能の組み合わせが、1 ドルあたり最も受け入れられる出力を生成しますか?
レシピを開く実装ファミリーごとに参照する
関連する統合パターンを比較する
この統合と組み合わせるテンプレート
さらなる統合
クロード エージェント SDK Telemetry
プロンプトやツールのペイロードを保存せずに、クロード エージェント SDK の実行結果、期間、ツール アクティビティ、ターン、コスト、および承認された製品シグナルを追跡します。
オープンガイドOpenAI エージェント Telemetry
OpenAI エージェントの実行、ツール呼び出し、モデルの使用状況、レイテンシー、コスト、および構造化イベントによる最終結果をログに記録します。
オープンガイドLangChain エージェントの結果 Telemetry
生のトレースを複製することなく、LangChain エージェントの実行とツールの結果を製品に関わるコスト、信頼性、ハンドオフ、および受け入れメトリクスに結び付けます。
オープンガイド