主题
遥测
了解 CrewAI 收集的遥测数据,以及它如何助力该库的改进。
遥测
NOTE
默认情况下,我们不会收集任何在 GDPR 和其他隐私法规下被视为个人信息的数据。 我们确实会收集工具的名称和智能体的角色,因此请注意不要在工具名称或智能体角色中包含任何个人信息。 由于不收集个人信息,因此无需担心数据驻留问题。 当启用 share_crew 时,会收集额外数据,若用户在其中包含个人信息,则这些数据可能包含个人信息。 用户在启用此功能时应谨慎行事,以确保符合隐私法规。
CrewAI 利用匿名遥测来收集使用统计数据,主要目标是改进该库。 我们的重点是改进和开发用户最常使用的功能、集成和工具。
至关重要的是要理解,默认情况下,不会收集任何个人数据,涉及提示词、任务描述、智能体的背景故事或目标、 工具使用、API 调用、响应、智能体处理的任何数据,或密钥和环境变量。 启用 share_crew 功能后,会收集包括任务描述、智能体的背景故事或目标以及其他特定属性在内的详细数据, 以提供更深入的见解。如果用户已将其纳入团队或任务中,这种扩展的数据收集可能包含个人信息。 用户应在启用 share_crew 之前仔细考虑其团队或任务的内容。 用户可以通过将 CREWAI_DISABLE_TELEMETRY 设置为 true、1、yes 或 on(任意大小写)来禁用 CrewAI 遥测。使用相同值的 OTEL_SDK_DISABLED 也会禁用 CrewAI 的导出器。OpenTelemetry SDK 本身在禁用进程中的其他插桩时仍只认可 true。 AMP 追踪在追踪中单独介绍。
示例:
python
# Disable CrewAI telemetry only
os.environ['CREWAI_DISABLE_TELEMETRY'] = 'true'
# Disable all OpenTelemetry (including CrewAI)
os.environ['OTEL_SDK_DISABLED'] = 'true'CREWAI_DISABLE_TELEMETRY=1(或 yes / on)的作用与 true 相同。无法识别的值会被忽略,并保持遥测开启。
与你自己的 OpenTelemetry 设置隔离
CrewAI 的遥测运行在其私有的 TracerProvider 上,并且从不 将其自身注册为全局的那个。这使两个方向保持分离:
- 来自你进程中其他插桩库的 span——Web 框架、 数据库客户端、HTTP 客户端——绝不会发送给 CrewAI。
- CrewAI 的遥测 span 绝不会发送到你的可观测性后端,因此它们 不会出现在 Langfuse、Braintrust、Phoenix 或你配置的任何其他收集器中。
可观测性集成不受影响:它们通过自己的 追踪器提供程序对 CrewAI 进行插桩,该提供程序独立于此处描述的那个。
数据说明:
| 是否默认 | 数据 | 原因与具体内容 |
|---|---|---|
| 是 | CrewAI 和 Python 版本 | 跟踪软件版本。示例:CrewAI v1.2.3、Python 3.8.10。无个人数据。 |
| 是 | 团队元数据 | 包括:随机生成的键和 ID、流程类型(例如 'sequential'、'parallel')、记忆使用情况的布尔标志(true/false)、是否有任何输入传递给该运行的布尔标志(true/false — 绝不会是输入的键或值,只有启用 share_crew 时才会收集这些内容)、任务数量、智能体数量。均为非个人数据。 |
| 是 | 智能体数据 | 包括:随机生成的键和 ID、角色名称(不应包含个人信息)、布尔设置(verbose、delegation enabled、code execution allowed)、最大迭代次数、最大 RPM、最大重试限制、LLM 信息(参见 LLM 属性)、工具名称列表(不应包含个人信息)。无个人数据。 |
| 是 | 任务元数据 | 包括:随机生成的键和 ID、布尔执行设置(async_execution、human_input)、关联智能体的角色和键、工具名称列表。均为非个人数据。 |
| 是 | 工具使用统计 | 包括:工具名称(不应包含个人信息)、使用尝试次数(整数)、所使用的 LLM 属性。无个人数据。 |
| 是 | 测试执行数据 | 包括:团队随机生成的键和 ID、迭代次数、使用的模型名称、质量分数(浮点数)、执行时间(秒)。均为非个人数据。 |
| 是 | 任务生命周期数据 | 包括:创建和执行开始/结束时间、团队和任务标识符,以及任务成功还是失败。当任务失败时,会记录异常的类名(例如 TimeoutError),以便对失败进行计数和诊断 — 绝不会记录错误消息,因为其中可能包含提示词、模型输出、文件路径或凭据。以带时间戳的 span 形式存储。无个人数据。 |
| 是 | LLM 属性 | 包括:名称、model_name、model、top_k、temperature 以及 LLM 的类名。均为技术性、非个人数据。 |
| 是 | 使用 crewAI CLI 创建项目 | 包括:通过 crewai create 搭建了新项目、其类型(crew、json_crew 或 flow),以及为该新项目生成并写入其自身 pyproject.toml 的项目 ID。这是新项目自己的 ID,与运行命令所在目录的 project_id 分开记录 — 两者可能不同。不包含项目名称、文件内容或代码。无个人数据。 |
| 是 | 使用 crewAI CLI 尝试部署团队 | 包括:正在进行部署这一事实和团队 ID、是否尝试拉取日志,以及部署是从 CLI 命令还是从运行 TUI 启动的。如果创建部署失败,会记录失败类别(固定列表之一,例如 api_4xx、network_error 或 user_declined)以及 API 响应的 HTTP 状态码(如果有) — 绝不会记录错误消息。不包含项目或团队内容。无个人数据。 |
| 是 | 执行环境 | 包括:正在运行该进程的 AI 编码助手(如果有)(固定列表之一,例如 claude_code、codex、cursor 或 unknown)、进程运行的位置(固定列表之一,例如 ci、container、serverless、interactive)、配置了的情况下来自你 pyproject.toml 的 project_id,以及机器的粗略大小区间(1-2、3-4、5-8、9-16、17-32、33+ 或 unknown 之一)。该区间是一个范围,绝不会是精确的核心数 — 精确数量仅在下文“环境信息”中选择加入。大小区间来自主机 CPU 数量;助手和位置检测仅读取已知环境变量是否已设置,绝不会读取其值。无个人数据。 |
| 是 | 流程生命周期信号 | 包括:某个流程已启动、它是完成还是失败、其某个方法是否失败、它是否因人工输入或反馈而暂停、启动是否为恢复运行、某个对话轮次是否失败、流程运行了多长时间,以及该流程是 CrewAI 内部运行的还是你编写的。会记录流程名称,就像流程创建和执行时已经记录的那样。当某个流程或其某个方法失败时,会记录异常的类名(例如 TimeoutError),以便诊断失败 — 绝不会记录错误消息,因为其中可能包含提示词、模型输出、文件路径或凭据。方法名称和流程状态绝不会被记录。无个人数据。 |
| 是 | 追踪共享信号 | 包括:一批追踪已成功共享给 CrewAI AMP,以及共享是匿名的(在你拥有账户之前)还是关联到你的账户。与每个 span 一样,它还带有上文所述执行环境属性(配置时的 project_id、编码助手和运行时)。此行仅描述共享遥测 — 不描述追踪内容或共享追踪链接授予的访问权限。追踪内容、输入和输出绝不会记录在此信号上。共享追踪之前,请检查密钥、个人数据以及 AMP 的脱敏和保留设置。 |
| 否 | 智能体的扩展数据 | 包括:目标描述、背景故事文本、i18n 提示词文件标识符。用户应确保文本字段中不包含个人信息。 |
| 否 | 详细任务信息 | 包括:任务描述、预期输出描述、上下文引用。用户应确保这些字段中不包含个人信息。 |
| 否 | 环境信息 | 包括:平台、发行版、系统、版本和 CPU 数量。示例:'Windows 10'、'x86_64'。无个人数据。 |
| 否 | 团队和任务的输入与输出 | 包括:作为不可识别数据的输入参数和输出结果。用户应确保不包含个人信息。 |
| 否 | 全面的团队执行数据 | 包括:团队操作的详细日志、所有智能体和任务数据、最终输出。均为非个人和技术性质的数据。 |
NOTE
“是否默认”列中的“否”表示仅当 share_crew 设置为 true 时才会收集此数据。
选择加入更多遥测共享
用户可以通过在其团队配置中将 share_crew 属性启用为 True,选择共享其完整的遥测数据。 启用 share_crew 会收集详细的团队和任务执行数据,包括任务的 goal、backstory、context 和 output。 这有助于更深入地了解使用模式。
WARNING
如果你启用 share_crew,若个人信息已被纳入团队配置、任务描述或输出中,则收集的数据可能包含个人信息。 用户应在启用此功能前仔细检查其数据,并确保符合 GDPR 和其他适用的隐私法规。