Braintrust
Integração Braintrust
Seção intitulada “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 é 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
Seção intitulada “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
Seção intitulada “Passo 1: Instalar Dependências”uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenvPasso 2: Configurar Variáveis de Ambiente
Seção intitulada “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.
import osfrom getpass import getpass
# Obter suas credenciais do BraintrustBRAINTRUST_API_KEY = getpass("🔑 Digite sua Chave de API do Braintrust: ")
# Obter chaves de API para serviçosOPENAI_API_KEY = getpass("🔑 Digite sua chave de API do OpenAI: ")
# Configurar variáveis de ambienteos.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEYos.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"os.environ["OPENAI_API_KEY"] = OPENAI_API_KEYPasso 3: Inicializar OpenTelemetry com Braintrust
Seção intitulada “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.
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: """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
Seção intitulada “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.
from crewai import Agent, Crew, Process, Taskfrom 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 crewif __name__ == "__main__": # A instrumentação já foi inicializada acima neste módulo result = run_crew() print(result)Passo 5: Visualizar Rastreamentos no Braintrust
Seção intitulada “Passo 5: Visualizar Rastreamentos no Braintrust”Após executar sua crew, você pode visualizar rastreamentos abrangentes no Braintrust através de diferentes perspectivas:
Passo 6: Avaliar via SDK (Experimentos)
Seção intitulada “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:
from braintrust import Evalfrom 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:
export BRAINTRUST_API_KEY="YOUR_API_KEY"braintrust eval eval_crew.pyVeja o guia do Eval SDK do Braintrust para mais detalhes.
Principais Recursos da Integração Braintrust
Seção intitulada “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
Seção intitulada “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
Seção intitulada “Referências”- Documentação Braintrust - Visão geral da plataforma Braintrust
- Integração CrewAI Braintrust - Guia oficial de integração CrewAI
- Eval SDK Braintrust - Execute experimentos via SDK
- Documentação CrewAI - Visão geral do framework CrewAI
- Documentação OpenTelemetry - Guia OpenTelemetry
- GitHub Braintrust - Código fonte do SDK Braintrust