跳转到内容

输入关键词开始搜索文档。

Braintrust

最后更新 查看 Markdown 源文件

快速开始

使用 Braintrust 蓝图为现有 Flue 项目添加跟踪功能。在终端或你选择的编码智能体中运行以下命令:

flue add tooling braintrust

概述

Braintrust 蓝图会在源代码根目录创建 braintrust.ts,并从 app.ts 中导入一次。生成的模块在 API 密钥可用时初始化 Braintrust,然后将 Braintrust 的 Flue 观察器连接到运行时事件流:

src/braintrust.ts (简化版)
import { observe } from '@flue/runtime';
import { braintrustFlueObserver, initLogger } from 'braintrust';

if (process.env.BRAINTRUST_API_KEY) {
  initLogger({
    projectName: process.env.BRAINTRUST_PROJECT_NAME ?? 'Flue',
    apiKey: process.env.BRAINTRUST_API_KEY,
  });

  observe((event, ctx) => {
    const compatible = compatibleEvent(event);
    if (compatible) braintrustFlueObserver(compatible, ctx);
  });
}

省略的 compatibleEvent(...) 辅助函数会为蓝图安装的 Braintrust 版本转换当前的 Flue 工具和恢复事件。相同的模块在 Node.js 和 Cloudflare 上运行;与 Sentry 不同,Braintrust 不需要单独的 Cloudflare 包或 Durable Object 包装器。

配置完成后,智能体操作会显示为带有嵌套跨度的跟踪,包括模型轮次、工具、委托任务和压缩。

配置

变量用途
BRAINTRUST_API_KEY跟踪导出必需 — 用于向 Braintrust 认证跟踪导出。
BRAINTRUST_PROJECT_NAME可选 — 选择接收跟踪的 Braintrust 项目。默认为 Flue。

永远不要提交 API 密钥;在 Cloudflare 上,将其存储为 Worker 密钥,而不是 Wrangler vars 值。当密钥不存在时,集成不会初始化或订阅,应用继续运行而不进行跟踪导出。

蓝图会安装 Braintrust 3.17 并通过 observe(...) 注册其公共 Flue 观察器。相同的源代码通过 Braintrust 的 workerd 导出在 Node.js 和 Cloudflare 上构建;不需要单独的 Cloudflare 包或 Durable Object 包装器。

Braintrust 还提供了一个 Node 导入钩子,用于仅 Node 的自动检测。生成的手动观察器是可能针对任一运行时的项目的可移植路径。

有关 Braintrust 与 OpenTelemetry 和 Sentry 的比较,请参阅可观测性。

Braintrust 跟踪内容

  • 提示、技能或压缩操作成为 flue.<kind> 任务跨度。
  • 模型轮次成为带有输入、输出、错误和使用指标的 llm:<model> 跨度。
  • 工具调用成为嵌套的 tool:<name> 跨度。
  • 委托任务成为嵌套的任务跨度。
  • 上下文压缩成为嵌套的压缩跨度。

模型跨度包括令牌使用量和可用时的估计成本。跟踪保留智能体实例、会话、操作和可选的 submissionId 关联。有关 Flue 的身份和观察器模型,请参阅可观测性。

Braintrust 3.17 期望终端工具事件使用之前的 tool_call 名称,因此生成的桥接会为安装的版本转换工具事件。在升级 Braintrust 之前,请重新检查该转换。

保护敏感内容

Braintrust 跟踪是包含内容的。其观察器可以导出模型消息和输出、推理、系统提示、工具定义和值、任务提示和结果、错误以及关联元数据。

在生产环境中启用之前,请审查保留、访问、隐私和合规要求。当内容需要编辑时,在初始化之前使用 Braintrust 的 setMaskingFunction(...),并针对代表性提示、推理、工具数据、错误、密钥和个人信息测试特定于应用的屏蔽器。

Cloudflare 交付

在 Cloudflare 上,每个生成的智能体 Durable Object 导出自己的活动。Braintrust 异步刷新,但 Flue 观察器无法将最终上传附加到 Durable Object 执行生命周期。因此,交付是尽力而为的,当工作完成后隔离立即变为空闲时,可能会丢失最终跨度。

在启用 Cloudflare 导出之前确认该权衡,并在部署的 Worker 中验证交付。Node 使用 Braintrust 的进程退出刷新回退。

验证

针对非生产 Braintrust 项目运行一个带有模型轮次和工具调用的智能体。确认跟踪层次结构、关闭的工具跨度、使用数据和 Flue 关联。在 Cloudflare 上,另外验证在部署的隔离生命周期下的最终跨度交付。