-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into brandon/bring-back-byoa
- Loading branch information
Showing
14 changed files
with
377 additions
and
652 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
--- | ||
title: Agent Monitoring with Langfuse | ||
description: Learn how to integrate Langfuse with CrewAI via OpenTelemetry using OpenLit | ||
icon: magnifying-glass-chart | ||
--- | ||
|
||
# Integrate Langfuse with CrewAI | ||
|
||
This notebook demonstrates how to integrate **Langfuse** with **CrewAI** using OpenTelemetry via the **OpenLit** SDK. By the end of this notebook, you will be able to trace your CrewAI applications with Langfuse for improved observability and debugging. | ||
|
||
> **What is Langfuse?** [Langfuse](https://langfuse.com) is an open-source LLM engineering platform. It provides tracing and monitoring capabilities for LLM applications, helping developers debug, analyze, and optimize their AI systems. Langfuse integrates with various tools and frameworks via native integrations, OpenTelemetry, and APIs/SDKs. | ||
## Get Started | ||
|
||
We'll walk through a simple example of using CrewAI and integrating it with Langfuse via OpenTelemetry using OpenLit. | ||
|
||
### Step 1: Install Dependencies | ||
|
||
|
||
```python | ||
%pip install langfuse openlit crewai crewai_tools | ||
``` | ||
|
||
### Step 2: Set Up Environment Variables | ||
|
||
Set your Langfuse API keys and configure OpenTelemetry export settings to send traces to Langfuse. Please refer to the [Langfuse OpenTelemetry Docs](https://langfuse.com/docs/opentelemetry/get-started) for more information on the Langfuse OpenTelemetry endpoint `/api/public/otel` and authentication. | ||
|
||
|
||
```python | ||
import os | ||
import base64 | ||
|
||
LANGFUSE_PUBLIC_KEY="pk-lf-..." | ||
LANGFUSE_SECRET_KEY="sk-lf-..." | ||
LANGFUSE_AUTH=base64.b64encode(f"{LANGFUSE_PUBLIC_KEY}:{LANGFUSE_SECRET_KEY}".encode()).decode() | ||
|
||
os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://cloud.langfuse.com/api/public/otel" # EU data region | ||
# os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://us.cloud.langfuse.com/api/public/otel" # US data region | ||
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {LANGFUSE_AUTH}" | ||
|
||
# your openai key | ||
os.environ["OPENAI_API_KEY"] = "sk-..." | ||
``` | ||
|
||
### Step 3: Initialize OpenLit | ||
|
||
Initialize the OpenLit OpenTelemetry instrumentation SDK to start capturing OpenTelemetry traces. | ||
|
||
|
||
```python | ||
import openlit | ||
|
||
openlit.init() | ||
``` | ||
|
||
### Step 4: Create a Simple CrewAI Application | ||
|
||
We'll create a simple CrewAI application where multiple agents collaborate to answer a user's question. | ||
|
||
|
||
```python | ||
from crewai import Agent, Task, Crew | ||
|
||
from crewai_tools import ( | ||
WebsiteSearchTool | ||
) | ||
|
||
web_rag_tool = WebsiteSearchTool() | ||
|
||
writer = Agent( | ||
role="Writer", | ||
goal="You make math engaging and understandable for young children through poetry", | ||
backstory="You're an expert in writing haikus but you know nothing of math.", | ||
tools=[web_rag_tool], | ||
) | ||
|
||
task = Task(description=("What is {multiplication}?"), | ||
expected_output=("Compose a haiku that includes the answer."), | ||
agent=writer) | ||
|
||
crew = Crew( | ||
agents=[writer], | ||
tasks=[task], | ||
share_crew=False | ||
) | ||
``` | ||
|
||
### Step 5: See Traces in Langfuse | ||
|
||
After running the agent, you can view the traces generated by your CrewAI application in [Langfuse](https://cloud.langfuse.com). You should see detailed steps of the LLM interactions, which can help you debug and optimize your AI agent. | ||
|
||
 | ||
|
||
_[Public example trace in Langfuse](https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/traces/e2cf380ffc8d47d28da98f136140642b?timestamp=2025-02-05T15%3A12%3A02.717Z&observation=3b32338ee6a5d9af)_ | ||
|
||
## References | ||
|
||
- [Langfuse OpenTelemetry Docs](https://langfuse.com/docs/opentelemetry/get-started) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ description = "{{name}} using crewAI" | |
authors = [{ name = "Your Name", email = "[email protected]" }] | ||
requires-python = ">=3.10,<3.13" | ||
dependencies = [ | ||
"crewai[tools]>=0.100.1,<1.0.0" | ||
"crewai[tools]>=0.102.0,<1.0.0" | ||
] | ||
|
||
[project.scripts] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ description = "{{name}} using crewAI" | |
authors = [{ name = "Your Name", email = "[email protected]" }] | ||
requires-python = ">=3.10,<3.13" | ||
dependencies = [ | ||
"crewai[tools]>=0.100.1,<1.0.0", | ||
"crewai[tools]>=0.102.0,<1.0.0", | ||
] | ||
|
||
[project.scripts] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.