跳转到内容
集成指南

CrewAI 工作流程 Telemetry

观察无流式输出的 CrewAI 同步 kickoff 调用,不保留输入或输出。分别查询返回、失败和中断的调用。

审阅者 Telemetry产品团队 上 . 我们检查了要发送的事件、要排除的数据和代码添加方法. 谁负责审核此页面

有用于
  • 多智能体工作流程可观测性
  • 机组任务可靠性
  • 交接和结果分析
实施证据

使用 CrewAI workflow telemetry 发送并验证事件

在受控应用程序边界使用 CrewAI workflow telemetry,保持事件契约较小,并在构建聚合视图之前验证已知结果。

  1. 1

    选择结果

    多智能体工作流程可观测性

  2. 2

    定义合同

    run_id、crew_name 和调用状态

  3. 3

    在结果处发出

    将已有的 Crew 和输入传给 run_research_crew。此包装仅支持同步 kickoff;异步方法、流和恢复的检查点需要各自的生命周期处理。

  4. 4

    核实证据

    Exercise a known fixture, then inspect crew_invocation for one correctly typed terminal row.

开始之前

开始之前

  • 已存在的同步 Crew,配置 stream=False,并使用应用自身的输入
  • 服务端 TELEMETRY_API_KEY;本示例使用 Python 标准库 HTTP,而非 Telemetry SDK
  • 内容策略涵盖任务输入、智能体输出、内存、知识和工具负载

交货设置

安装并初始化服务器端

此同步 Crew 包装使用 Python 标准库 HTTP 发送事件;不需要安装或初始化 Telemetry SDK。 将摄取凭据保留在浏览器包、客户端可见的环境变量、源代码控制、日志和异常消息之外。

  1. 1使用 run_research_crew 包装已有的同步 Crew,并保持 stream=False。
  2. 2在成功、失败、重试或超时边界处添加结果事件。
  3. 3在启用警报之前发送受控装置并检查存储的行。

片段

从一个结构化事件开始

在工作流程完成、失败或重试的位置添加此形状。然后从真实的字段构建仪表板。

crewai

CrewAI workflow telemetry事件

python
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 导出使用一秒套接字超时,并非严格的总时限。导出和诊断失败不改变原始结果或异常;同步交付仍可能增加延迟。不提供持久队列、重试或关闭排空。

检查站 5

当需要步骤级诊断时,使用 CrewAI 自己的跟踪或回调,并与批准的运行 ID 相关联。

验证

证明事件已到达

在演练已知的成功和失败案例后运行此命令。如果您的最终事件契约与代码片段不同,请替换后备表名称。

crewai-验证

CrewAI workflow telemetry 验证查询

sql
SELECT *
FROM crew_invocation
ORDER BY timestamp_utc DESC
LIMIT 20;
确认每个逻辑结果的一个终端行,以及预期状态、标识符、单位和 UTC 时间。
检查推断的架构并验证重试不会更改字段类型或生成新的逻辑事件 ID。
在存储的字段中搜索凭据、原始有效负载、提示、私有内容和无限制的错误消息。
在将仪表板视为完整之前,请执行提供程序超时、摄取拒绝和进程关闭。

实施参考

在启用新的生产路径之前,请检查事件合同、数据安全指南和上游主要文档。

在哪里记录事件

保持结果事件小且可恢复

该模式提供了

  • 除了上游工作流程之外,还有一个有界的、SQL 就绪的结果。
  • 用于仪表板、警报和跨事件关联的稳定字段。
  • 用于验证成功、失败、重试和超时行为的夹具驱动路径。

该模式不提供

  • OTLP 导出器、自动收集管道或详细跟踪和诊断日志的替代品。
  • 仅因为有效负载包含事件 ID,所以仅传送一次。
  • 收集原始提供商有效负载、用户内容、凭证或受监管数据的权限。

事件模式示例

在将查询或代码片段适应生产之前,请检查行粒度、发出边界、所需类型、隐私类、示例有效负载和验证清单。

相关产品功能

继续此工作流程 AI代理监控

通过可审查的 SQL 连接智能体运行、工具使用、模型成本、质量和产品结果。

相关 SQL 查询示例

更多 SQL 示例

针对此工作流程中的结构化字段运行查询,检查示例结果,并将有用的答案转换为仪表板或警报。

浏览所有查询示例

按实施系列浏览

比较相关集成模式

与此集成配对的模板

更多集成