Braintrust 集成
Braintrust 集成
Section titled “Braintrust 集成”本指南演示如何使用 OpenTelemetry 将 Braintrust 与 CrewAI 集成,以实现全面追踪和评估。读完本指南后,你将能够追踪 CrewAI 代理、监控其性能,并使用 Braintrust 强大的可观测性平台评估其输出。
什么是 Braintrust? Braintrust 是一个 AI 评估与可观测性平台,提供面向 AI 应用的全面追踪、评估和监控,并内置实验跟踪和性能分析功能。
我们将通过一个简单示例,展示如何使用 CrewAI 并通过 OpenTelemetry 将其与 Braintrust 集成,以实现全面可观测性和评估。
步骤 1:安装依赖
Section titled “步骤 1:安装依赖”uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenv步骤 2:设置环境变量
Section titled “步骤 2:设置环境变量”设置 Braintrust API keys,并配置 OpenTelemetry 将追踪发送到 Braintrust。你需要一个 Braintrust API key 和你的 OpenAI API key。
import osfrom getpass import getpass
# 获取你的 Braintrust 凭据BRAINTRUST_API_KEY = getpass("🔑 Enter your Braintrust API Key: ")
# 获取各项服务的 API keysOPENAI_API_KEY = getpass("🔑 Enter your OpenAI API key: ")
# 设置环境变量os.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEYos.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY步骤 3:使用 Braintrust 初始化 OpenTelemetry
Section titled “步骤 3:使用 Braintrust 初始化 OpenTelemetry”初始化 Braintrust OpenTelemetry 检测,以开始捕获追踪并将其发送到 Braintrust。
import osfrom typing import Any, Dict
from braintrust.otel import BraintrustSpanProcessorfrom crewai import Agent, Crew, Taskfrom crewai.llm import LLMfrom opentelemetry import tracefrom opentelemetry.instrumentation.crewai import CrewAIInstrumentorfrom opentelemetry.instrumentation.openai import OpenAIInstrumentorfrom opentelemetry.sdk.trace import TracerProvider
def setup_tracing() -> None: """使用 Braintrust 设置 OpenTelemetry 追踪。""" current_provider = trace.get_tracer_provider() if isinstance(current_provider, TracerProvider): provider = current_provider else: provider = TracerProvider() trace.set_tracer_provider(provider)
provider.add_span_processor(BraintrustSpanProcessor()) CrewAIInstrumentor().instrument(tracer_provider=provider) OpenAIInstrumentor().instrument(tracer_provider=provider)
setup_tracing()步骤 4:创建 CrewAI 应用
Section titled “步骤 4:创建 CrewAI 应用”我们将创建一个 CrewAI 应用,其中两个代理协作研究并撰写一篇关于 AI 进展的博客文章,并启用全面追踪。
from crewai import Agent, Crew, Process, Taskfrom crewai_tools import SerperDevTool
def create_crew() -> Crew: """创建一个带有多个代理的 crew,以实现全面追踪。""" llm = LLM(model="gpt-4o-mini") search_tool = SerperDevTool()
# 定义具有特定角色的代理 researcher = Agent( role="Senior Research Analyst", goal="Uncover cutting-edge developments in AI and data science", backstory="""You work at a leading tech think tank. Your expertise lies in identifying emerging trends. You have a knack for dissecting complex data and presenting actionable insights.""", verbose=True, allow_delegation=False, llm=llm, tools=[search_tool], )
writer = Agent( role="Tech Content Strategist", goal="Craft compelling content on tech advancements", backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles. You transform complex concepts into compelling narratives.""", verbose=True, allow_delegation=True, llm=llm, )
# 为你的代理创建任务 research_task = Task( description="""Conduct a comprehensive analysis of the latest advancements in {topic}. Identify key trends, breakthrough technologies, and potential industry impacts.""", expected_output="Full analysis report in bullet points", agent=researcher, )
writing_task = Task( description="""Using the insights provided, develop an engaging blog post that highlights the most significant {topic} advancements. Your post should be informative yet accessible, catering to a tech-savvy audience. Make it sound cool, avoid complex words so it doesn't sound like AI.""", expected_output="Full blog post of at least 4 paragraphs", agent=writer, context=[research_task], )
# 使用顺序流程实例化你的 crew crew = Crew( agents=[researcher, writer], tasks=[research_task, writing_task], verbose=True, process=Process.sequential )
return crew
def run_crew(): """运行 crew 并返回结果。""" crew = create_crew() result = crew.kickoff(inputs={"topic": "AI developments"}) return result
# 运行你的 crewif __name__ == "__main__": # 上面的模块中已经初始化了检测 result = run_crew() print(result)步骤 5:在 Braintrust 中查看追踪
Section titled “步骤 5:在 Braintrust 中查看追踪”运行你的 crew 后,你可以通过不同视图在 Braintrust 中查看全面追踪:
Trace
Timeline
Thread
步骤 6:通过 SDK 进行评估(实验)
Section titled “步骤 6:通过 SDK 进行评估(实验)”你还可以使用 Braintrust 的 Eval SDK 进行评估。这对于比较版本或离线评分输出非常有用。下面是一个 Python 示例,使用我们上面创建的 Eval 类:
from braintrust import Evalfrom autoevals import Levenshtein
def evaluate_crew_task(input_data): """包装我们的 crew 用于评估的任务函数。""" crew = create_crew() result = crew.kickoff(inputs={"topic": input_data["topic"]}) return str(result)
Eval( "AI Research Crew", # 项目名称 { "data": lambda: [ {"topic": "artificial intelligence trends 2024"}, {"topic": "machine learning breakthroughs"}, {"topic": "AI ethics and governance"}, ], "task": evaluate_crew_task, "scores": [Levenshtein], },)设置你的 API key 并运行:
export BRAINTRUST_API_KEY="YOUR_API_KEY"braintrust eval eval_crew.py查看 Braintrust Eval SDK 指南 获取更多详情。
Braintrust 集成的主要功能
Section titled “Braintrust 集成的主要功能”- 全面追踪:跟踪所有代理交互、工具使用和 LLM 调用
- 性能监控:监控执行时间、token 使用量和成功率
- 实验跟踪:比较不同的 crew 配置和模型
- 自动评估:为 crew 输出设置自定义评估指标
- 错误跟踪:监控并调试整个 crew 执行中的失败
- 成本分析:跟踪 token 使用量及相关成本
版本兼容性信息
Section titled “版本兼容性信息”- Python 3.8+
- CrewAI >= 0.86.0
- Braintrust >= 0.1.0
- OpenTelemetry SDK >= 1.31.0
- Braintrust 文档 - Braintrust 平台概览
- Braintrust CrewAI 集成 - 官方 CrewAI 集成指南
- Braintrust Eval SDK - 通过 SDK 运行实验
- CrewAI 文档 - CrewAI 框架概览
- OpenTelemetry 文档 - OpenTelemetry 指南
- Braintrust GitHub - Braintrust SDK 源代码