Traçage CrewAI

CrewAI est un framework open source pour orchestrer des agents d'IA autonomes et de jeu de rôle.
MLflow Tracing offre une capacité de traçage automatique pour CrewAI, un framework open source pour la création d'applications multi-agents. En activant le traçage automatique
pour CrewAI en appelant la fonction mlflow.crewai.autolog, MLflow capturera les traces imbriquées pour l'exécution du workflow CrewAI et les consignera dans l'Experimentation MLflow active.
import mlflow
mlflow.crewai.autolog()
Sur les clusters de compute Serverless, la journalisation automatique pour les cadres de traçage genAI n'est pas activée automatiquement. Vous devez activer explicitement l'autologging en appelant la fonction mlflow.<library>.autolog() appropriée pour les intégrations spécifiques que vous souhaitez suivre.
Les traces MLflow capturent automatiquement les informations suivantes sur les agents CrewAI :
- Tâches et agent qui exécute chaque tâche.
- Chaque LLM effectue des appels avec des invites d'entrée, des réponses de complétion et diverses métadonnées.
- Opérations de chargement et d'écriture de la mémoire
- Latence de chaque opération
- Toute exception si levée
Sur les clusters de compute serverless, l'autologging n'est pas activé automatiquement. Vous devez appeler explicitement mlflow.crewai.autolog() pour activer le traçage automatique de cette intégration.
Actuellement, l'intégration MLflow CrewAI ne prend en charge le traçage que pour l'exécution synchrone des tâches. Les tâches asynchrones et le démarrage ne sont pas pris en charge pour le moment.
Prérequis
Pour utiliser MLflow Tracing avec CrewAI, vous devez installer MLflow et la bibliothèque crewai (qui inclut crewai_tools).
- Development
- Production
Pour les environnements de développement, installez le package MLflow complet avec les extras Databricks et crewai:
pip install --upgrade "mlflow[databricks]>=3.1" crewai
Le package mlflow[databricks] complet inclut toutes les fonctionnalités pour le développement local et l’expérimentation sur Databricks.
Pour les déploiements en production, installez mlflow-tracing et crewai:
pip install --upgrade mlflow-tracing crewai
Le mlflow-tracing package est optimisé pour une utilisation en production.
MLflow 3 est fortement recommandé pour la meilleure expérience de traçage avec CrewAI.
Avant d'exécuter les exemples, vous devrez configurer votre environnement :
Pour les utilisateurs en dehors des notebooks Databricks : Définissez vos variables d'environnement Databricks :
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Pour les utilisateurs dans les Notebooks Databricks : ces identifiants sont définis automatiquement pour vous.
Clés API : Assurez-vous que toutes les clés API de fournisseur LLM nécessaires sont configurées. Pour une utilisation en production, utilisez AI Gateway ou les secrets Databricks au lieu de valeurs codées en dur :
export OPENAI_API_KEY="your-openai-api-key"
export SERPER_API_KEY="your-serper-api-key"
# Add other provider keys as needed
Exemple d'utilisation
Tout d'abord, activez le traçage automatique pour CrewAI et, en option, créez une expérimentation MLflow pour y écrire les traces. Cela vous aide à mieux organiser vos traces.
import mlflow
import os
# Ensure your API keys (e.g., OPENAI_API_KEY, SERPER_API_KEY) are set in your environment
# os.environ["OPENAI_API_KEY"] = "your-openai-key"
# os.environ["SERPER_API_KEY"] = "your-serper-key"
# Turn on auto tracing by calling mlflow.crewai.autolog()
mlflow.crewai.autolog()
# Set up MLflow tracking to Databricks
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/crewai-demo")
Ensuite, définissez un workflow multi-agents en utilisant CrewAI. L'exemple suivant définit un agent de planification de voyage qui utilise la capacité de recherche web comme outil.
from crewai import Agent, Crew, Task
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
from crewai_tools import SerperDevTool, WebsiteSearchTool
from textwrap import dedent
content = "Users name is John. He is 30 years old and lives in San Francisco."
string_source = StringKnowledgeSource(
content=content, metadata={"preference": "personal"}
)
search_tool = WebsiteSearchTool()
class TripAgents:
def city_selection_agent(self):
return Agent(
role="City Selection Expert",
goal="Select the best city based on weather, season, and prices",
backstory="An expert in analyzing travel data to pick ideal destinations",
tools=[
search_tool,
],
verbose=True,
)
def local_expert(self):
return Agent(
role="Local Expert at this city",
goal="Provide the BEST insights about the selected city",
backstory="""A knowledgeable local guide with extensive information
about the city, it's attractions and customs""",
tools=[search_tool],
verbose=True,
)
class TripTasks:
def identify_task(self, agent, origin, cities, interests, range):
return Task(
description=dedent(
f"""
Analyze and select the best city for the trip based
on specific criteria such as weather patterns, seasonal
events, and travel costs. This task involves comparing
multiple cities, considering factors like current weather
conditions, upcoming cultural or seasonal events, and
overall travel expenses.
Your final answer must be a detailed
report on the chosen city, and everything you found out
about it, including the actual flight costs, weather
forecast and attractions.
Traveling from: {origin}
City Options: {cities}
Trip Date: {range}
Traveler Interests: {interests}
"""
),
agent=agent,
expected_output="Detailed report on the chosen city including flight costs, weather forecast, and attractions",
)
def gather_task(self, agent, origin, interests, range):
return Task(
description=dedent(
f"""
As a local expert on this city you must compile an
in-depth guide for someone traveling there and wanting
to have THE BEST trip ever!
Gather information about key attractions, local customs,
special events, and daily activity recommendations.
Find the best spots to go to, the kind of place only a
local would know.
This guide should provide a thorough overview of what
the city has to offer, including hidden gems, cultural
hotspots, must-visit landmarks, weather forecasts, and
high level costs.
The final answer must be a comprehensive city guide,
rich in cultural insights and practical tips,
tailored to enhance the travel experience.
Trip Date: {range}
Traveling from: {origin}
Traveler Interests: {interests}
"""
),
agent=agent,
expected_output="Comprehensive city guide including hidden gems, cultural hotspots, and practical travel tips",
)
class TripCrew:
def __init__(self, origin, cities, date_range, interests):
self.cities = cities
self.origin = origin
self.interests = interests
self.date_range = date_range
def run(self):
agents = TripAgents()
tasks = TripTasks()
city_selector_agent = agents.city_selection_agent()
local_expert_agent = agents.local_expert()
identify_task = tasks.identify_task(
city_selector_agent,
self.origin,
self.cities,
self.interests,
self.date_range,
)
gather_task = tasks.gather_task(
local_expert_agent, self.origin, self.interests, self.date_range
)
crew = Crew(
agents=[city_selector_agent, local_expert_agent],
tasks=[identify_task, gather_task],
verbose=True,
memory=True,
knowledge={
"sources": [string_source],
"metadata": {"preference": "personal"},
},
)
result = crew.kickoff()
return result
trip_crew = TripCrew("California", "Tokyo", "Dec 12 - Dec 20", "sports")
result = trip_crew.run()
Pour les environnements de production, utilisez AI Gateway ou les secrets Databricks au lieu de valeurs codées en dur ou de variables d'environnement pour une gestion sécurisée des clés d'API.
Désactiver le suivi automatique
Le traçage automatique pour CrewAI peut être désactivé globalement en appelant mlflow.crewai.autolog(disable=True) ou mlflow.autolog(disable=True).