> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 追踪 CrewAI 应用

LangSmith 可以通过 OpenTelemetry 检测来捕获由 [CrewAI](https://github.com/crewAIInc/crewAI) 生成的追踪。本指南将向您展示如何自动捕获 CrewAI 多智能体工作流的追踪，并将其发送到 LangSmith 进行监控和分析。

## 安装

使用您偏好的包管理器安装所需的包：

<CodeGroup>
  ```bash pip theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pip install langsmith crewai opentelemetry-instrumentation-crewai opentelemetry-instrumentation-openai
  ```

  ```bash uv theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  uv add langsmith crewai opentelemetry-instrumentation-crewai opentelemetry-instrumentation-openai
  ```
</CodeGroup>

## 设置

### 1. 配置环境变量

设置您的 [API 密钥](/langsmith/create-account-api-key) 和项目名称：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
export LANGSMITH_API_KEY=<your_langsmith_api_key>
export LANGSMITH_PROJECT=<your_project_name>
export OPENAI_API_KEY=<your_openai_api_key>
```

### 2. 配置 OpenTelemetry 集成

在您的 CrewAI 应用程序中，配置 LangSmith OpenTelemetry 集成以及 CrewAI 和 OpenAI 检测器：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langsmith.integrations.otel import OtelSpanProcessor
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
from opentelemetry.instrumentation.openai import OpenAIInstrumentor

# 获取或创建追踪提供者
current_provider = trace.get_tracer_provider()
if isinstance(current_provider, TracerProvider):
    tracer_provider = current_provider
else:
    tracer_provider = TracerProvider()
    trace.set_tracer_provider(tracer_provider)

# 将 OtelSpanProcessor 添加到追踪提供者
tracer_provider.add_span_processor(OtelSpanProcessor())

# 检测 CrewAI 和 OpenAI
CrewAIInstrumentor().instrument(tracer_provider=tracer_provider)
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
```

### 3. 创建并运行您的 CrewAI 应用程序

配置完成后，您的 CrewAI 应用程序将自动将追踪发送到 LangSmith：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from crewai import Agent, Crew, Task
from crewai.llm import LLM
from langsmith.integrations.otel import OtelSpanProcessor
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
from opentelemetry.instrumentation.openai import OpenAIInstrumentor

# 配置 OpenTelemetry
current_provider = trace.get_tracer_provider()
if isinstance(current_provider, TracerProvider):
    tracer_provider = current_provider
else:
    tracer_provider = TracerProvider()
    trace.set_tracer_provider(tracer_provider)

tracer_provider.add_span_processor(OtelSpanProcessor())

# 检测 CrewAI 和 OpenAI
CrewAIInstrumentor().instrument(tracer_provider=tracer_provider)
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)

# 定义您的智能体
llm = LLM(model="gpt-4o-mini")

coder = Agent(
    role="软件开发者",
    goal="按需编写清晰、简洁的代码",
    backstory="一位对软件趋势有敏锐洞察力的专家程序员。",
    verbose=True,
    llm=llm,
)

# 定义您的任务
task = Task(
    description="编写一个检查数字是否为质数的 Python 函数。",
    expected_output="一个清晰、简洁且带有文档的 Python 函数。",
    agent=coder,
)

# 创建并运行团队
crew = Crew(
    agents=[coder],
    tasks=[task],
    verbose=True,
)

def run_crew():
    result = crew.kickoff()
    return result

if __name__ == "__main__":
    output = run_crew()
    print(output)
```

## 高级用法

### 自定义元数据和标签

您可以通过设置跨度属性为追踪添加自定义元数据：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from opentelemetry import trace

tracer = trace.get_tracer(__name__)

def run_crew_with_metadata():
    with tracer.start_as_current_span("crewai_workflow") as span:
        span.set_attribute("langsmith.metadata.crew_type", "code_generation")
        span.set_attribute("langsmith.metadata.agent_count", "1")
        span.set_attribute("langsmith.span.tags", "crewai,code-generation")

        result = crew.kickoff()
        return result
```

### 与其他检测器结合使用

您可以将 CrewAI 检测与其他 OpenTelemetry 检测器结合使用：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
from opentelemetry.instrumentation.openai import OpenAIInstrumentor

# 初始化多个检测器
CrewAIInstrumentor().instrument(tracer_provider=tracer_provider)
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
```

## 资源

* [CrewAI 文档](https://docs.crewai.com/)
* [LangSmith OpenTelemetry 指南](/langsmith/trace-with-opentelemetry)

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs) 通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/langsmith/trace-with-crewai.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
