mirror of
https://github.com/crewAIInc/crewAI.git
synced 2025-12-15 20:08:29 +00:00
Add braintrust docs (#3628)
Some checks failed
Some checks failed
* Add braintrust docs * Add more things * fix eval command * Add missing crewai-tools import * Allow for dynamic inputs
This commit is contained in:
@@ -248,6 +248,7 @@
|
||||
"pages": [
|
||||
"en/observability/overview",
|
||||
"en/observability/arize-phoenix",
|
||||
"en/observability/braintrust",
|
||||
"en/observability/langdb",
|
||||
"en/observability/langfuse",
|
||||
"en/observability/langtrace",
|
||||
@@ -623,6 +624,7 @@
|
||||
"pages": [
|
||||
"pt-BR/observability/overview",
|
||||
"pt-BR/observability/arize-phoenix",
|
||||
"pt-BR/observability/braintrust",
|
||||
"pt-BR/observability/langdb",
|
||||
"pt-BR/observability/langfuse",
|
||||
"pt-BR/observability/langtrace",
|
||||
@@ -1007,6 +1009,7 @@
|
||||
"pages": [
|
||||
"ko/observability/overview",
|
||||
"ko/observability/arize-phoenix",
|
||||
"ko/observability/braintrust",
|
||||
"ko/observability/langdb",
|
||||
"ko/observability/langfuse",
|
||||
"ko/observability/langtrace",
|
||||
|
||||
237
docs/en/observability/braintrust.mdx
Normal file
237
docs/en/observability/braintrust.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: Braintrust
|
||||
description: Braintrust integration for CrewAI with OpenTelemetry tracing and evaluation
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# Braintrust Integration
|
||||
|
||||
This guide demonstrates how to integrate **Braintrust** with **CrewAI** using OpenTelemetry for comprehensive tracing and evaluation. By the end of this guide, you will be able to trace your CrewAI agents, monitor their performance, and evaluate their outputs using Braintrust's powerful observability platform.
|
||||
|
||||
> **What is Braintrust?** [Braintrust](https://www.braintrust.dev) is an AI evaluation and observability platform that provides comprehensive tracing, evaluation, and monitoring for AI applications with built-in experiment tracking and performance analytics.
|
||||
|
||||
## Get Started
|
||||
|
||||
We'll walk through a simple example of using CrewAI and integrating it with Braintrust via OpenTelemetry for comprehensive observability and evaluation.
|
||||
|
||||
### Step 1: Install Dependencies
|
||||
|
||||
```bash
|
||||
uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenv
|
||||
```
|
||||
|
||||
### Step 2: Set Up Environment Variables
|
||||
|
||||
Setup Braintrust API keys and configure OpenTelemetry to send traces to Braintrust. You'll need a Braintrust API key and your OpenAI API key.
|
||||
|
||||
```python
|
||||
import os
|
||||
from getpass import getpass
|
||||
|
||||
# Get your Braintrust credentials
|
||||
BRAINTRUST_API_KEY = getpass("🔑 Enter your Braintrust API Key: ")
|
||||
|
||||
# Get API keys for services
|
||||
OPENAI_API_KEY = getpass("🔑 Enter your OpenAI API key: ")
|
||||
|
||||
# Set environment variables
|
||||
os.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEY
|
||||
os.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"
|
||||
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
|
||||
```
|
||||
|
||||
### Step 3: Initialize OpenTelemetry with Braintrust
|
||||
|
||||
Initialize the Braintrust OpenTelemetry instrumentation to start capturing traces and send them to Braintrust.
|
||||
|
||||
```python
|
||||
import os
|
||||
from typing import Any, Dict
|
||||
|
||||
from braintrust.otel import BraintrustSpanProcessor
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.llm import LLM
|
||||
from opentelemetry import trace
|
||||
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
|
||||
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
|
||||
def setup_tracing() -> None:
|
||||
"""Setup OpenTelemetry tracing with Braintrust."""
|
||||
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()
|
||||
```
|
||||
|
||||
### Step 4: Create a CrewAI Application
|
||||
|
||||
We'll create a CrewAI application where two agents collaborate to research and write a blog post about AI advancements, with comprehensive tracing enabled.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
|
||||
def create_crew() -> Crew:
|
||||
"""Create a crew with multiple agents for comprehensive tracing."""
|
||||
llm = LLM(model="gpt-4o-mini")
|
||||
search_tool = SerperDevTool()
|
||||
|
||||
# Define agents with specific roles
|
||||
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,
|
||||
)
|
||||
|
||||
# Create tasks for your agents
|
||||
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],
|
||||
)
|
||||
|
||||
# Instantiate your crew with a sequential process
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
verbose=True,
|
||||
process=Process.sequential
|
||||
)
|
||||
|
||||
return crew
|
||||
|
||||
def run_crew():
|
||||
"""Run the crew and return results."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": "AI developments"})
|
||||
return result
|
||||
|
||||
# Run your crew
|
||||
if __name__ == "__main__":
|
||||
# Instrumentation is already initialized above in this module
|
||||
result = run_crew()
|
||||
print(result)
|
||||
```
|
||||
|
||||
### Step 5: View Traces in Braintrust
|
||||
|
||||
After running your crew, you can view comprehensive traces in Braintrust through different perspectives:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Trace">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-trace-view.png" alt="Braintrust Trace View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="Timeline">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-timeline-view.png" alt="Braintrust Timeline View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="Thread">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-thread-view.png" alt="Braintrust Thread View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Step 6: Evaluate via SDK (Experiments)
|
||||
|
||||
You can also run evaluations using Braintrust's Eval SDK. This is useful for comparing versions or scoring outputs offline. Below is a Python example using the `Eval` class with the crew we created above:
|
||||
|
||||
```python
|
||||
# eval_crew.py
|
||||
from braintrust import Eval
|
||||
from autoevals import Levenshtein
|
||||
|
||||
def evaluate_crew_task(input_data):
|
||||
"""Task function that wraps our crew for evaluation."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": input_data["topic"]})
|
||||
return str(result)
|
||||
|
||||
Eval(
|
||||
"AI Research Crew", # Project name
|
||||
{
|
||||
"data": lambda: [
|
||||
{"topic": "artificial intelligence trends 2024"},
|
||||
{"topic": "machine learning breakthroughs"},
|
||||
{"topic": "AI ethics and governance"},
|
||||
],
|
||||
"task": evaluate_crew_task,
|
||||
"scores": [Levenshtein],
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
Setup your API key and run:
|
||||
|
||||
```bash
|
||||
export BRAINTRUST_API_KEY="YOUR_API_KEY"
|
||||
braintrust eval eval_crew.py
|
||||
```
|
||||
|
||||
See the [Braintrust Eval SDK guide](https://www.braintrust.dev/docs/start/eval-sdk) for more details.
|
||||
|
||||
### Key Features of Braintrust Integration
|
||||
|
||||
- **Comprehensive Tracing**: Track all agent interactions, tool usage, and LLM calls
|
||||
- **Performance Monitoring**: Monitor execution times, token usage, and success rates
|
||||
- **Experiment Tracking**: Compare different crew configurations and models
|
||||
- **Automated Evaluation**: Set up custom evaluation metrics for crew outputs
|
||||
- **Error Tracking**: Monitor and debug failures across your crew executions
|
||||
- **Cost Analysis**: Track token usage and associated costs
|
||||
|
||||
### Version Compatibility Information
|
||||
- Python 3.8+
|
||||
- CrewAI >= 0.86.0
|
||||
- Braintrust >= 0.1.0
|
||||
- OpenTelemetry SDK >= 1.31.0
|
||||
|
||||
### References
|
||||
- [Braintrust Documentation](https://www.braintrust.dev/docs) - Overview of the Braintrust platform
|
||||
- [Braintrust CrewAI Integration](https://www.braintrust.dev/docs/integrations/crew-ai) - Official CrewAI integration guide
|
||||
- [Braintrust Eval SDK](https://www.braintrust.dev/docs/start/eval-sdk) - Run experiments via the SDK
|
||||
- [CrewAI Documentation](https://docs.crewai.com/) - Overview of the CrewAI framework
|
||||
- [OpenTelemetry Docs](https://opentelemetry.io/docs/) - OpenTelemetry guide
|
||||
- [Braintrust GitHub](https://github.com/braintrustdata/braintrust) - Source code for Braintrust SDK
|
||||
BIN
docs/images/braintrust-thread-view.png
Normal file
BIN
docs/images/braintrust-thread-view.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 302 KiB |
BIN
docs/images/braintrust-timeline-view.png
Normal file
BIN
docs/images/braintrust-timeline-view.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 151 KiB |
BIN
docs/images/braintrust-trace-view.png
Normal file
BIN
docs/images/braintrust-trace-view.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 337 KiB |
236
docs/ko/observability/braintrust.mdx
Normal file
236
docs/ko/observability/braintrust.mdx
Normal file
@@ -0,0 +1,236 @@
|
||||
---
|
||||
title: Braintrust
|
||||
description: OpenTelemetry 추적 및 평가를 포함한 CrewAI용 Braintrust 통합
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# Braintrust 통합
|
||||
|
||||
이 가이드는 **Braintrust**를 **CrewAI**와 OpenTelemetry를 사용하여 포괄적인 추적 및 평가와 함께 통합하는 방법을 보여줍니다. 이 가이드를 완료하면 CrewAI agent를 추적하고, 성능을 모니터링하며, Braintrust의 강력한 관찰성 플랫폼을 사용하여 출력을 평가할 수 있습니다.
|
||||
|
||||
> **Braintrust란?** [Braintrust](https://www.braintrust.dev)는 내장된 실험 추적 및 성능 분석을 통해 AI 애플리케이션에 대한 포괄적인 추적, 평가 및 모니터링을 제공하는 AI 평가 및 관찰성 플랫폼입니다.
|
||||
|
||||
## 시작하기
|
||||
|
||||
CrewAI를 사용하고 포괄적인 관찰성 및 평가를 위해 OpenTelemetry를 통해 Braintrust와 통합하는 간단한 예제를 단계별로 안내합니다.
|
||||
|
||||
### 1단계: 의존성 설치
|
||||
|
||||
```bash
|
||||
uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenv
|
||||
```
|
||||
|
||||
### 2단계: 환경 변수 설정
|
||||
|
||||
Braintrust API 키를 설정하고 추적을 Braintrust로 전송하도록 OpenTelemetry를 구성합니다. Braintrust API 키와 OpenAI API 키가 필요합니다.
|
||||
|
||||
```python
|
||||
import os
|
||||
from getpass import getpass
|
||||
|
||||
# Braintrust 자격 증명 가져오기
|
||||
BRAINTRUST_API_KEY = getpass("🔑 Braintrust API 키를 입력하세요: ")
|
||||
|
||||
# 서비스용 API 키 가져오기
|
||||
OPENAI_API_KEY = getpass("🔑 OpenAI API 키를 입력하세요: ")
|
||||
|
||||
# 환경 변수 설정
|
||||
os.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEY
|
||||
os.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"
|
||||
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
|
||||
```
|
||||
|
||||
### 3단계: Braintrust와 함께 OpenTelemetry 초기화하기
|
||||
|
||||
추적을 캡처하고 Braintrust로 전송하기 시작하도록 Braintrust OpenTelemetry 계측을 초기화합니다.
|
||||
|
||||
```python
|
||||
import os
|
||||
from typing import Any, Dict
|
||||
|
||||
from braintrust.otel import BraintrustSpanProcessor
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.llm import LLM
|
||||
from opentelemetry import trace
|
||||
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
|
||||
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
|
||||
from 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 애플리케이션 생성하기
|
||||
|
||||
포괄적인 추적이 활성화된 CrewAI 애플리케이션을 생성합니다.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
|
||||
def create_crew() -> Crew:
|
||||
"""포괄적인 추적을 위한 다중 agent가 있는 crew 생성."""
|
||||
llm = LLM(model="gpt-4o-mini")
|
||||
search_tool = SerperDevTool()
|
||||
|
||||
# 특정 역할을 가진 agent 정의
|
||||
researcher = Agent(
|
||||
role="시니어 연구 분석가",
|
||||
goal="AI 및 데이터 과학의 최첨단 발전 사항 발견",
|
||||
backstory="""당신은 최고 수준의 기술 싱크탱크에서 근무합니다.
|
||||
새로운 트렌드를 식별하는 데 전문성이 있습니다.
|
||||
복잡한 데이터를 분석하고 실행 가능한 인사이트로 제시하는 데 뛰어납니다.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
llm=llm,
|
||||
tools=[search_tool],
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role="기술 콘텐츠 전략가",
|
||||
goal="기술 발전에 대한 매력적인 콘텐츠 작성",
|
||||
backstory="""당신은 통찰력 있고 흥미로운 기사로 유명한 콘텐츠 전략가입니다.
|
||||
복잡한 개념을 매력적인 스토리로 전환합니다.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
llm=llm,
|
||||
)
|
||||
|
||||
# agent를 위한 작업 생성
|
||||
research_task = Task(
|
||||
description="""{topic} 분야의 최신 발전 상황에 대한 포괄적인 분석을 수행하세요.
|
||||
주요 트렌드, 획기적 기술, 산업에 미칠 잠재적 영향을 식별하세요.""",
|
||||
expected_output="주요 내용을 불릿 포인트로 정리한 전체 분석 보고서",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description="""제공된 인사이트를 활용하여
|
||||
가장 중요한 {topic} 발전 내용을 강조하는 흥미로운 블로그 글을 작성하세요.
|
||||
글은 정보성 있고, 기술에 밝은 독자를 대상으로 하면서 읽기 쉽게 써야 합니다.
|
||||
멋지게 들리도록 쓰되, 복잡한 단어는 피하여 AI처럼 들리지 않게 하세요.""",
|
||||
expected_output="최소 4개의 단락으로 구성된 전체 블로그 글",
|
||||
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 발전"})
|
||||
return result
|
||||
|
||||
# crew 실행
|
||||
if __name__ == "__main__":
|
||||
# 이 모듈에서 계측이 이미 초기화됨
|
||||
result = run_crew()
|
||||
print(result)
|
||||
```
|
||||
|
||||
### 5단계: Braintrust에서 추적 보기
|
||||
|
||||
crew를 실행한 후, Braintrust에서 다양한 관점으로 포괄적인 추적을 볼 수 있습니다:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="추적(Trace)">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-trace-view.png" alt="Braintrust Trace View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="타임라인(Timeline)">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-timeline-view.png" alt="Braintrust Timeline View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="스레드(Thread)">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-thread-view.png" alt="Braintrust Thread View"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### 6단계: SDK를 통한 평가 (실험)
|
||||
|
||||
Braintrust의 Eval SDK를 사용하여 평가를 실행할 수도 있습니다. 이는 버전을 비교하거나 출력을 오프라인으로 점수화하는 데 유용합니다. 아래는 위에서 생성한 crew를 사용하는 Python 예제입니다:
|
||||
|
||||
```python
|
||||
from braintrust import Eval
|
||||
from 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 연구 Crew", # 프로젝트 이름
|
||||
{
|
||||
"data": lambda: [
|
||||
{"topic": "artificial intelligence trends 2024"},
|
||||
{"topic": "machine learning breakthroughs"},
|
||||
{"topic": "AI ethics and governance"},
|
||||
],
|
||||
"task": evaluate_crew_task,
|
||||
"scores": [Levenshtein],
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
API 키를 설정하고 실행:
|
||||
|
||||
```bash
|
||||
export BRAINTRUST_API_KEY="YOUR_API_KEY"
|
||||
braintrust eval eval_crew.py
|
||||
```
|
||||
|
||||
자세한 내용은 [Braintrust Eval SDK 가이드](https://www.braintrust.dev/docs/start/eval-sdk)를 참조하세요.
|
||||
|
||||
### Braintrust 통합의 주요 기능
|
||||
|
||||
- **포괄적인 추적**: 모든 agent 상호작용, 도구 사용 및 LLM 호출 추적
|
||||
- **성능 모니터링**: 실행 시간, 토큰 사용량 및 성공률 모니터링
|
||||
- **실험 추적**: 다른 crew 구성 및 모델 비교
|
||||
- **자동화된 평가**: crew 출력에 대한 사용자 정의 평가 메트릭 설정
|
||||
- **오류 추적**: crew 실행 전반에 걸친 실패 모니터링 및 디버깅
|
||||
- **비용 분석**: 토큰 사용량 및 관련 비용 추적
|
||||
|
||||
### 버전 호환성 정보
|
||||
- Python 3.8+
|
||||
- CrewAI >= 0.86.0
|
||||
- Braintrust >= 0.1.0
|
||||
- OpenTelemetry SDK >= 1.31.0
|
||||
|
||||
### 참고 자료
|
||||
- [Braintrust 문서](https://www.braintrust.dev/docs) - Braintrust 플랫폼 개요
|
||||
- [Braintrust CrewAI 통합](https://www.braintrust.dev/docs/integrations/crew-ai) - 공식 CrewAI 통합 가이드
|
||||
- [Braintrust Eval SDK](https://www.braintrust.dev/docs/start/eval-sdk) - SDK를 통한 실험 실행
|
||||
- [CrewAI 문서](https://docs.crewai.com/) - CrewAI 프레임워크 개요
|
||||
- [OpenTelemetry 문서](https://opentelemetry.io/docs/) - OpenTelemetry 가이드
|
||||
- [Braintrust GitHub](https://github.com/braintrustdata/braintrust) - Braintrust SDK 소스 코드
|
||||
237
docs/pt-BR/observability/braintrust.mdx
Normal file
237
docs/pt-BR/observability/braintrust.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: Braintrust
|
||||
description: Integração do Braintrust para CrewAI com rastreamento OpenTelemetry e avaliação
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# Integração Braintrust
|
||||
|
||||
Este guia demonstra como integrar o **Braintrust** com **CrewAI** usando OpenTelemetry para rastreamento e avaliação abrangentes. Ao final deste guia, você poderá rastrear seus agentes CrewAI, monitorar seu desempenho e avaliar suas saídas usando a poderosa plataforma de observabilidade do Braintrust.
|
||||
|
||||
> **O que é Braintrust?** [Braintrust](https://www.braintrust.dev) é uma plataforma de avaliação e observabilidade de IA que fornece rastreamento, avaliação e monitoramento abrangentes para aplicações de IA com rastreamento de experimentos e análises de desempenho integrados.
|
||||
|
||||
## Começar
|
||||
|
||||
Vamos percorrer um exemplo simples de uso do CrewAI e integração com Braintrust via OpenTelemetry para observabilidade e avaliação abrangentes.
|
||||
|
||||
### Passo 1: Instalar Dependências
|
||||
|
||||
```bash
|
||||
uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenv
|
||||
```
|
||||
|
||||
### Passo 2: Configurar Variáveis de Ambiente
|
||||
|
||||
Configure as chaves de API do Braintrust e configure o OpenTelemetry para enviar rastreamentos para o Braintrust. Você precisará de uma chave de API do Braintrust e sua chave de API do OpenAI.
|
||||
|
||||
```python
|
||||
import os
|
||||
from getpass import getpass
|
||||
|
||||
# Obter suas credenciais do Braintrust
|
||||
BRAINTRUST_API_KEY = getpass("🔑 Digite sua Chave de API do Braintrust: ")
|
||||
|
||||
# Obter chaves de API para serviços
|
||||
OPENAI_API_KEY = getpass("🔑 Digite sua chave de API do OpenAI: ")
|
||||
|
||||
# Configurar variáveis de ambiente
|
||||
os.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEY
|
||||
os.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"
|
||||
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
|
||||
```
|
||||
|
||||
### Passo 3: Inicializar OpenTelemetry com Braintrust
|
||||
|
||||
Inicialize a instrumentação OpenTelemetry do Braintrust para começar a capturar rastreamentos e enviá-los para o Braintrust.
|
||||
|
||||
```python
|
||||
import os
|
||||
from typing import Any, Dict
|
||||
|
||||
from braintrust.otel import BraintrustSpanProcessor
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.llm import LLM
|
||||
from opentelemetry import trace
|
||||
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
|
||||
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
|
||||
def setup_tracing() -> None:
|
||||
"""Configurar rastreamento OpenTelemetry com Braintrust."""
|
||||
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()
|
||||
```
|
||||
|
||||
### Passo 4: Criar uma Aplicação CrewAI
|
||||
|
||||
Vamos criar uma aplicação CrewAI onde dois agentes colaboram para pesquisar e escrever um post de blog sobre avanços em IA, com rastreamento abrangente habilitado.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
|
||||
def create_crew() -> Crew:
|
||||
"""Criar uma crew com múltiplos agentes para rastreamento abrangente."""
|
||||
llm = LLM(model="gpt-4o-mini")
|
||||
search_tool = SerperDevTool()
|
||||
|
||||
# Definir agentes com papéis específicos
|
||||
researcher = Agent(
|
||||
role="Analista de Pesquisa Sênior",
|
||||
goal="Descobrir desenvolvimentos de ponta em IA e ciência de dados",
|
||||
backstory="""Você trabalha em um think tank de tecnologia líder.
|
||||
Sua especialidade está em identificar tendências emergentes.
|
||||
Você tem talento para dissecar dados complexos e apresentar insights acionáveis.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
llm=llm,
|
||||
tools=[search_tool],
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role="Estrategista de Conteúdo Tecnológico",
|
||||
goal="Criar conteúdo envolvente sobre avanços tecnológicos",
|
||||
backstory="""Você é um Estrategista de Conteúdo renomado, conhecido por seus artigos perspicazes e envolventes.
|
||||
Você transforma conceitos complexos em narrativas convincentes.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
llm=llm,
|
||||
)
|
||||
|
||||
# Criar tarefas para seus agentes
|
||||
research_task = Task(
|
||||
description="""Realize uma análise abrangente dos últimos avanços em {topic}.
|
||||
Identifique tendências principais, tecnologias revolucionárias e impactos potenciais na indústria.""",
|
||||
expected_output="Relatório de análise completo em pontos de bala",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description="""Usando os insights fornecidos, desenvolva um post de blog envolvente
|
||||
que destaque os avanços mais significativos em {topic}.
|
||||
Seu post deve ser informativo, mas acessível, atendendo a um público conhecedor de tecnologia.
|
||||
Faça soar legal, evite palavras complexas para não soar como IA.""",
|
||||
expected_output="Post de blog completo de pelo menos 4 parágrafos",
|
||||
agent=writer,
|
||||
context=[research_task],
|
||||
)
|
||||
|
||||
# Instanciar sua crew com um processo sequencial
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
verbose=True,
|
||||
process=Process.sequential
|
||||
)
|
||||
|
||||
return crew
|
||||
|
||||
def run_crew():
|
||||
"""Executar a crew e retornar resultados."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": "desenvolvimentos em IA"})
|
||||
return result
|
||||
|
||||
# Executar sua crew
|
||||
if __name__ == "__main__":
|
||||
# A instrumentação já foi inicializada acima neste módulo
|
||||
result = run_crew()
|
||||
print(result)
|
||||
```
|
||||
|
||||
### Passo 5: Visualizar Rastreamentos no Braintrust
|
||||
|
||||
Após executar sua crew, você pode visualizar rastreamentos abrangentes no Braintrust através de diferentes perspectivas:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Rastreamento(Trace)">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-trace-view.png" alt="Visualização de Rastreamento Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="Linha do Tempo(Timeline)">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-timeline-view.png" alt="Visualização de Linha do Tempo Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="Thread">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-thread-view.png" alt="Visualização de Thread Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Passo 6: Avaliar via SDK (Experimentos)
|
||||
|
||||
Você também pode executar avaliações usando o Eval SDK do Braintrust. Isso é útil para comparar versões ou pontuar saídas offline. Abaixo está um exemplo em Python usando a classe `Eval` com a crew que criamos acima:
|
||||
|
||||
```python
|
||||
# eval_crew.py
|
||||
from braintrust import Eval
|
||||
from autoevals import Levenshtein
|
||||
|
||||
def evaluate_crew_task(input_data):
|
||||
"""Função de tarefa que envolve nossa crew para avaliação."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": input_data["topic"]})
|
||||
return str(result)
|
||||
|
||||
Eval(
|
||||
"Crew de Pesquisa em IA", # Nome do projeto
|
||||
{
|
||||
"data": lambda: [
|
||||
{"topic": "tendências de inteligência artificial 2024"},
|
||||
{"topic": "avanços em aprendizado de máquina"},
|
||||
{"topic": "ética e governança de IA"},
|
||||
],
|
||||
"task": evaluate_crew_task,
|
||||
"scores": [Levenshtein],
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
Configure sua chave de API e execute:
|
||||
|
||||
```bash
|
||||
export BRAINTRUST_API_KEY="YOUR_API_KEY"
|
||||
braintrust eval eval_crew.py
|
||||
```
|
||||
|
||||
Veja o [guia do Eval SDK do Braintrust](https://www.braintrust.dev/docs/start/eval-sdk) para mais detalhes.
|
||||
|
||||
### Principais Recursos da Integração Braintrust
|
||||
|
||||
- **Rastreamento Abrangente**: Rastreie todas as interações de agentes, uso de ferramentas e chamadas LLM
|
||||
- **Monitoramento de Desempenho**: Monitore tempos de execução, uso de tokens e taxas de sucesso
|
||||
- **Rastreamento de Experimentos**: Compare diferentes configurações de crew e modelos
|
||||
- **Avaliação Automatizada**: Configure métricas de avaliação personalizadas para saídas de crew
|
||||
- **Rastreamento de Erros**: Monitore e depure falhas em suas execuções de crew
|
||||
- **Análise de Custos**: Rastreie uso de tokens e custos associados
|
||||
|
||||
### Informações de Compatibilidade de Versão
|
||||
- Python 3.8+
|
||||
- CrewAI >= 0.86.0
|
||||
- Braintrust >= 0.1.0
|
||||
- OpenTelemetry SDK >= 1.31.0
|
||||
|
||||
### Referências
|
||||
- [Documentação Braintrust](https://www.braintrust.dev/docs) - Visão geral da plataforma Braintrust
|
||||
- [Integração CrewAI Braintrust](https://www.braintrust.dev/docs/integrations/crew-ai) - Guia oficial de integração CrewAI
|
||||
- [Eval SDK Braintrust](https://www.braintrust.dev/docs/start/eval-sdk) - Execute experimentos via SDK
|
||||
- [Documentação CrewAI](https://docs.crewai.com/) - Visão geral do framework CrewAI
|
||||
- [Documentação OpenTelemetry](https://opentelemetry.io/docs/) - Guia OpenTelemetry
|
||||
- [GitHub Braintrust](https://github.com/braintrustdata/braintrust) - Código fonte do SDK Braintrust
|
||||
Reference in New Issue
Block a user