Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
CrewAI es un marco de código abierto para orquestar juegos de rol y agentes autónomos de inteligencia artificial.
El seguimiento de MLflow proporciona funcionalidad de seguimiento automático para CrewAI, un marco de código abierto para compilar aplicaciones multiagente. Al habilitar el seguimiento automático para CrewAI llamando a la función mlflow.crewai.autolog
, MLflow capturará seguimientos anidados para la ejecución del flujo de trabajo de CrewAI y los registrará en el experimento activo de MLflow.
import mlflow
mlflow.crewai.autolog()
El seguimiento de MLflow captura automáticamente la siguiente información sobre los agentes de CrewAI:
- Tareas y agente que ejecuta cada tarea
- Cada llamada de LLM incluye mensajes de entrada, respuestas de finalización y varios metadatos.
- Operaciones de carga y escritura de memoria
- Latencia de cada operación
- Cualquier excepción si se genera
Nota:
Actualmente, la integración de MLflow CrewAI solo admite el seguimiento de la ejecución de tareas sincrónicas. La tarea asíncrona y la puesta en marcha no se admiten en este momento.
Prerrequisitos
Para usar el seguimiento de MLflow con CrewAI, es necesario instalar MLflow y la crewai
biblioteca (que incluye crewai_tools
).
Desarrollo
Para entornos de desarrollo, instale el paquete MLflow completo con complementos de Databricks y crewai
:
pip install --upgrade "mlflow[databricks]>=3.1" crewai
El paquete completo mlflow[databricks]
incluye todas las características para el desarrollo local y la experimentación en Databricks.
Producción
Para las implementaciones de producción, instale mlflow-tracing
y crewai
:
pip install --upgrade mlflow-tracing crewai
El mlflow-tracing
paquete está optimizado para su uso en producción.
Nota:
MLflow 3 es muy recomendable para la mejor experiencia de seguimiento con CrewAI.
Antes de ejecutar los ejemplos, deberá configurar el entorno:
Para los usuarios que no utilizan los cuadernos de Databricks: establece las variables de entorno de Databricks:
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Para usuarios dentro de cuadernos Databricks: Estas credenciales se establecen automáticamente para usted.
Claves de API: asegúrese de que se configuran las claves de API del proveedor LLM necesarias. Para su uso en producción, use AI Gateway o secretos de Databricks en lugar de valores codificados de forma rígida:
export OPENAI_API_KEY="your-openai-api-key"
export SERPER_API_KEY="your-serper-api-key"
# Add other provider keys as needed
Ejemplo de uso
En primer lugar, habilite el seguimiento automático para CrewAI y, opcionalmente, cree un experimento de MLflow en el que escribir seguimientos. Esto ayuda a organizar mejor los rastros.
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")
A continuación, defina un flujo de trabajo de varios agentes mediante CrewAI. En el ejemplo siguiente se define un agente de Trip Planner que usa la funcionalidad de búsqueda web como herramienta.
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()
Advertencia
Para entornos de producción, use AI Gateway o secretos de Databricks en lugar de valores codificados o variables de entorno para la gestión segura de claves de API.
Deshabilitar el seguimiento automático
El seguimiento automático de CrewAI se puede deshabilitar globalmente llamando a mlflow.crewai.autolog(disable=True)
o mlflow.autolog(disable=True)
.