Arize Phoenix 集成

本指南演示了如何使用 OpenInference SDK 通过 OpenTelemetry 将 Arize PhoenixCrewAI 集成。阅读完本指南后,您将能够跟踪 CrewAI Agent 并轻松调试您的 Agent。

什么是 Arize Phoenix? Arize Phoenix 是一个 LLM 可观测性平台,为 AI 应用提供跟踪和评估。

入门

我们将通过一个简单的示例,演示如何使用 CrewAI 并通过 OpenInference 使用 OpenTelemetry 将其与 Arize Phoenix 集成。

您还可以在 Google Colab 上访问本指南。

步骤 1:安装依赖

pip install openinference-instrumentation-crewai crewai crewai-tools arize-phoenix-otel

步骤 2:设置环境变量

设置 Phoenix Cloud API 密钥并配置 OpenTelemetry 将跟踪发送到 Phoenix。Phoenix Cloud 是 Arize Phoenix 的托管版本,但使用此集成并非强制要求。

您可以在此处获取免费的 Serper API 密钥。

import os
from getpass import getpass

# Get your Phoenix Cloud credentials
PHOENIX_API_KEY = getpass("🔑 Enter your Phoenix Cloud API Key: ")

# Get API keys for services
OPENAI_API_KEY = getpass("🔑 Enter your OpenAI API key: ")
SERPER_API_KEY = getpass("🔑 Enter your Serper API key: ")

# Set environment variables
os.environ["PHOENIX_CLIENT_HEADERS"] = f"api_key={PHOENIX_API_KEY}"
os.environ["PHOENIX_COLLECTOR_ENDPOINT"] = "https://app.phoenix.arize.com" # Phoenix Cloud, change this to your own endpoint if you are using a self-hosted instance
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
os.environ["SERPER_API_KEY"] = SERPER_API_KEY

步骤 3:使用 Phoenix 初始化 OpenTelemetry

初始化 OpenInference OpenTelemetry Instrumentation SDK,开始捕获跟踪并将其发送到 Phoenix。

from phoenix.otel import register

tracer_provider = register(
    project_name="crewai-tracing-demo",
    auto_instrument=True,
)

步骤 4:创建 CrewAI 应用

我们将创建一个 CrewAI 应用,其中两个 Agent 协作研究并撰写一篇关于 AI 进展的博客文章。

from crewai import Agent, Crew, Process, Task
from crewai_tools import SerperDevTool
from openinference.instrumentation.crewai import CrewAIInstrumentor
from phoenix.otel import register

# setup monitoring for your crew
tracer_provider = register(
    endpoint="http://localhost:6006/v1/traces")
CrewAIInstrumentor().instrument(skip_dep_check=True, tracer_provider=tracer_provider)
search_tool = SerperDevTool()

# Define your agents with roles and goals
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,
    # You can pass an optional llm attribute specifying what model you wanna use.
    # llm=ChatOpenAI(model_name="gpt-3.5", temperature=0.7),
    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,
)

# Create tasks for your agents
task1 = Task(
    description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
    Identify key trends, breakthrough technologies, and potential industry impacts.""",
    expected_output="Full analysis report in bullet points",
    agent=researcher,
)

task2 = Task(
    description="""Using the insights provided, develop an engaging blog
    post that highlights the most significant AI 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,
)

# Instantiate your crew with a sequential process
crew = Crew(
    agents=[researcher, writer], tasks=[task1, task2], verbose=1, process=Process.sequential
)

# Get your crew to work!
result = crew.kickoff()

print("######################")
print(result)

步骤 5:在 Phoenix 中查看跟踪

运行 Agent 后,您可以在 Phoenix 中查看 CrewAI 应用生成的跟踪。您将看到 Agent 交互和 LLM 调用的详细步骤,这有助于您调试和优化您的 AI Agent。

登录您的 Phoenix Cloud 账户,导航到您在 project_name 参数中指定的项目。您将看到您的跟踪的时间线视图,其中包含所有 Agent 交互、工具使用和 LLM 调用。

版本兼容性信息

  • Python 3.8+
  • CrewAI >= 0.86.0
  • Arize Phoenix >= 7.0.1
  • OpenTelemetry SDK >= 1.31.0

参考资料