使用 CrewAI 构建的观察器
CrewAI 这是一个基于 Python 的框架,用于创建和管理能够协作完成任务的人工智能代理。 您可以使用 CrewAI 构建能够协同工作、执行工作流并优化决策的自主AI代理。 CrewAI 可与大型语言模型(LLMs)及外部工具集成,因此在自动化、研究、客户服务等领域均能发挥重要作用。
Instana 为基于 CrewAI, 构建的智能代理提供可观测性,支持对AI代理的工作流、任务执行以及大型语言模型(LLM)的性能进行实时监控。
先决条件
确保满足下列先决条件:
Python 3.8 或更高版本
一个大语言模型(LLM) API 密钥(Anthropic、 OpenAI, 或 CrewAI 支持的任何 LLM 提供商)
Instana 已根据您的应用程序进行配置,请参阅 “入门指南”
对 CrewAI 应用程序进行性能监控
要为您的 CrewAI 应用程序配置 Instana ,请完成以下步骤:
安装 CrewAI 和 OpenLLMetry 所需的软件包。
pip install crewai crewai-tools traceloop-sdk设置您的 LLM 提供商凭据,并禁用 CrewAI's 的内部遥测功能。
export ANTHROPIC_API_KEY="<your-api-key>" export CREWAI_DISABLE_TELEMETRY=true注:如果使用其他提供商,请将
ANTHROPIC_API_KEY替换为您的 LLM 提供商的环境变量(例如, OpenAIOPENAI_API_KEY对应 )。禁用 CrewAI's 的内部遥测功能可确保所有跟踪信息均通过 OpenLLMetry 捕获,从而实现一致的可观测性。
创建您的 CrewAI 应用程序。
在下面的示例中,创建了两个代理(一名研究人员和一名作家)来协作完成一项任务:
from crewai import Agent, Task, Crew, Process from crewai_tools import SerperDevTool from traceloop.sdk import Traceloop from traceloop.sdk.decorators import workflow # Initialize OpenLLMetry Traceloop.init(app_name="crewai_demo") # Initialize search tool search_tool = SerperDevTool() # Define agents researcher = Agent( role="Senior Research Analyst", goal="Uncover cutting-edge developments in AI and data science", backstory="You are a Senior Research Analyst at a leading tech think tank.", verbose=True, allow_delegation=False, tools=[search_tool] ) writer = Agent( role="Tech Content Strategist", goal="Craft compelling content on tech advancements", backstory="You are a renowned Tech Content Strategist, known for insightful and engaging articles on technology and innovation.", verbose=True, allow_delegation=False, tools=[search_tool] ) # Define tasks task1 = Task( description="Perform an in-depth analysis of the following topic: {topic}", expected_output="Comprehensive analysis report in bullet points", agent=researcher ) task2 = Task( description="Using the insights from the researcher's report, develop an engaging blog post that highlights the most significant advancements", expected_output="A compelling 3-paragraph blog post formatted as markdown", agent=writer ) # Create the crew crew = Crew( agents=[researcher, writer], tasks=[task1, task2], verbose=True, process=Process.sequential ) # Wrap crew execution in a workflow for better tracing @workflow(name="crewai_workflow") def run_crew(topic): return crew.kickoff(inputs={"topic": topic}) # Execute the crew if __name__ == "__main__": topics = ["Artificial Intelligence", "Machine Learning", "Neural Networks"] for topic in topics: result = run_crew(topic) print(f"\nCompleted analysis for: {topic}\n")运行您的 CrewAI 应用程序。
python crewai_app.pyCrewAI 生成显示代理之间协作情况的输出:
图 1. CrewAI 输出 
在 Instana 中查看数据
运行应用程序后,数据将显示在 Instana 的Gen AI可观测性仪表盘中:
图 2. CrewAI Instana 中的痕迹 
故障诊断
关于使用 CrewAI 构建的代理的故障排除信息。
在 crewAI-telemetry 中显示的是“Traces”,而非预期的服务名称
问题 :跟踪信息未出现在预期的服务名称下(例如 crewai_demo),但可以在 crewAI-telemetry下看到。
原因 : CrewAI's 的内部遥测功能仍处于启用状态。
解决方案 :通过设置以下环境变量来禁用 CrewAI's 的内部遥测功能:
export CREWAI_DISABLE_TELEMETRY=true
设置此变量后,所有跟踪数据都将通过 OpenLLMetry 并以您配置的服务名称进行捕获和报告。