En este tutorial, demostramos cómo un equipo de múltiples agentes de IA puede colaborar para completar tareas complejas y optimizar los flujos de trabajo. Creamos una aplicación Python para explicar la orquestación de agentes especializados que trabajan dentro de una arquitectura multiagente. Al final, verá y ejecutará un ejemplo de colaboración multiagente dentro de una aplicación de IA agéntica.
La aplicación con la que estamos trabajando es un equipo de atención al cliente que utiliza CrewAI como marco multiagente e IBM watsonx.ai para desplegar el Modelo de lenguaje grande (LLM) que lo impulsa.
Los agentes de IA son entidades basadas en LLM que pueden realizar operaciones en nombre de un usuario o sistema de IA agéntica. Las arquitecturas de agentes se estructuran en torno a dos sistemas diferentes: un solo agente y multiagente.
Los sistemas de agente único son los mejores para resolver problemas limitados porque dependen de un agente LLM para realizar tareas de IA generativa. Por ejemplo, un único agente de chatbot puede centrarse en tareas o conversaciones específicas que puede completar dentro del alcance de sus capacidades individuales.
Los sistemas multiagente (MAS) son marcos que orquestan la funcionalidad y las interacciones entre los agentes de IA. En lugar de intentar abarcar todas las capacidades dentro de un solo agente, las arquitecturas multiagente utilizan diferentes agentes para trabajar dentro del mismo entorno a fin de lograr un objetivo compartido. Los beneficios clave de los sistemas multiagente incluyen la colaboración de los agentes y la adaptabilidad para resolver problemas más allá de las capacidades de un solo agente. El mejor enfoque depende de la complejidad de las tareas de machine learning necesarias para compilar una solución o lograr un determinado resultado.
CrewAI es un marco agéntico de código abierto que organiza la automatización de agentes LLM mediante el ensamblaje de equipos personalizables o equipos de agentes de roles. Aplicamos un caso de uso de industrias simplificado para explicar cómo colaboran los agentes dentro de una arquitectura multiagente.
Imagine un caso de uso real para un centro de atención telefónica de atención al cliente. El software de telecomunicaciones para analizar las transcripciones del centro de atención telefónica se utiliza para mejorar las experiencias del cliente y evaluar la calidad de las llamadas. En un software más robusto, las transcripciones pueden incluso analizarse en tiempo real junto con grandes conjuntos de datos, incluidos los metadatos de llamadas. Con fines de explicabilidad, el conjunto de datos de nuestra aplicación es simple, una transcripción simulada entre un representante de atención al cliente y el cliente.
# multiagent-collaboration-cs-call-center-analysis/data/transcript.txt
Customer Service Interaction Transcript
Cynthia:
Hi, I'm calling because I received a jar of peanut butter that was open and it's
completely spilled everywhere. This is really frustrating, and I need a replacement.
Gerald (Peanut Butter Inc.):
Ugh, that sucks. But, like, how did you not notice it was open before
you bought it?
Cynthia:
Excuse me? I didn't expect the jar to be open when I received it. It was sealed
when I bought it. Can you just help me out here?
Gerald:
Yeah, whatever. But we can't control how it gets to you. I mean, it's not like
we throw the jars around or anything. You're probably being dramatic.
Cynthia:
I'm not being dramatic. The peanut butter is literally all over the box and
it's a mess. I just want a replacement or a refund, that's all.
Gerald:
Look, I guess I could send you a replacement, but it's really not our fault, you
know? Maybe next time, check the jar before you open it?
Cynthia:
Are you seriously blaming me for your company's mistake? That's not how customer
service works!
Gerald:
Well, what do you want me to do? I don't exactly have magic powers to fix your
problem instantly. Chill out, we'll send you a new jar eventually.
Cynthia:
That's not good enough! I expect better from a company that I've been buying
from for years. Can you just do the right thing and make this right?
Gerald:
Fine, fine. I'll put in a request or whatever. But seriously, this kind of thing
happens. Don't make it sound like the end of the world.
Cynthia:
Unbelievable. I'll be posting a review if this isn't fixed immediately.
Gerald:
Cool, go ahead. I'm sure we'll survive your review.
Cynthia:
I'll be contacting your supervisor if this isn't resolved soon.
Gerald:
Yeah, okay. Do what you gotta do.
Un equipo de agentes colaborativos genera un informe completo basado en análisis de texto y métricas de evaluación del centro de atención telefónica del cliente. Este informe ayuda a los gerentes de atención al cliente a resumir los principales eventos de la llamada, evaluar el rendimiento y proporcionar recomendaciones de mejora.
El equipo de análisis de llamadas de atención al cliente consta de tres agentes con roles especializados y objetivos predefinidos. La configuración del agente incluye un analizador de transcripciones, un especialista en control de calidad y un generador de informes. Los objetivos y características del agente se definen mediante tres atributos principales, rol, objetivo e historia de fondo.
transcript_analyzer:
role: >
Transcript Analyzer
goal: >
Analyze the provided transcripts and extract key insights and themes.
backstory: >
As the Transcript Analyzer, you are responsible for reviewing customer
service call transcripts, identifying important information, and summarizing
findings into a report to pass on to the Quality Assurance Specialist.
You have access to advanced text analysis tools that help you process and
interpret the data effectively.
quality_assurance_specialist:
role: >
Quality Assurance Specialist
goal: >
Evaluate the quality of the customer service based the Transcript Analyzer's
report, call center evaluation metrics, and business standards. Flag any
transcripts with escalation risks as high priority.
backstory: >
As the Quality Assurance Specialist, you are tasked with assessing the
quality of customer service interactions based on the Transcript Analyzer's
report, call center evaluation metrics, and industry standards used in call
centers. You review transcripts, evaluate agent performance, and provide
feedback to improve overall service quality.
report_generator:
role: >
Report Generator
goal: >
Generate reports based on the insights and findings from the transcript
analysis and quality assurance specialist.
backstory: >
As the Report Generator, you compile the key insights and findings from the
transcript analysis and quality assurance specialist into a comprehensive
report. You create an organized report that includes summaries and recommendations
based on the data to help customer service managers understand the trends
and patterns in customer interactions.
El agente analizador de transcripciones realiza un análisis exhaustivo de la transcripción para extraer insights clave e información importante. Luego, el analizador resume sus hallazgos en un informe que se transmite a los otros agentes para ayudarlos en sus tareas. Este agente utiliza una suite de herramientas personalizadas para realizar técnicas de procesamiento de lenguaje natural (NLP), como la extracción de palabras clave y el análisis de sentimientos.
El agente especialista en control de calidad evalúa la calidad de la llamada en función de los insights clave del informe del analizador de transcripciones y su propia experiencia descrita en la implementación y evaluación de las métricas de evaluación del centro de atención telefónica. Este agente también puede buscar en Internet para recuperar métricas y procesos relevantes a fin de evaluar el desempeño del empleado y proporcionar retroalimentación para mejorar la calidad general del servicio.
El agente generador de informes crea un informe basado en los insights del informe de análisis de transcripciones, las métricas y el feedback proporcionados por la evaluación de control de calidad. El agente se especializa en organizar los datos en un informe completo. El objetivo del informe es proporcionar a los gerentes de atención al cliente un desglose de los insights clave de la llamada y las recomendaciones para mejorar la calidad de la atención al cliente.
Cada agente tiene acceso a herramientas, habilidades o funciones que los agentes utilizan para realizar diferentes tareas. crewAI ofrece herramientas existentes, integración con herramientas LangChain y la opción de crear sus propias herramientas personalizadas. El equipo de análisis de atención al cliente utiliza una combinación, con cada herramienta especificada para la tarea del agente y el objetivo de la aplicación. Cada agente tiene ciertos permisos para las herramientas a las que puede acceder en su configuración.
Las herramientas personalizadas se crean definiendo una descripción clara de para qué se utilizará la herramienta. Por ejemplo, el agente del analizador de transcripciones tiene varias herramientas personalizadas para el análisis de texto.
# src/customer_service_analyzer/tools/custom_tool.py
class SentimentAnalysisTool(BaseTool):
name: str = "Sentiment Analysis Tool"
description: str = "Determines the sentiment of the interactions in the transcripts."
def _run(self, transcript: str) -> str:
# Simulating sentiment analysis
sentiment = Helper.analyze_sentiment(transcript)
return sentiment
La descripción de la herramienta es lo que el agente utiliza como lógica para realizar un análisis de sentimientos en la transcripción.
Los agentes también pueden utilizar las herramientas existentes y las interfaces de programación de aplicaciones (API) integradas. El agente especialista en control de calidad tiene acceso a una
Las tareas son las asignaciones específicas completadas por los agentes con detalles de ejecución facilitados por tres atributos de tareas requeridos: descripción, agente, resultado esperado. Los agentes realizan sus tareas en una secuencia lógica utilizando las descripciones detalladas de cada tarea como guía.
transcript_analysis:
description: >
Use the Text Analysis Tool to collect key information and insights to better
understand customer service interactions and improve service quality.
Conduct a thorough analysis of the call {transcript}.
Prepare a detailed report highlighting key insights, themes, and sentiment
from the transcripts.
Identify any escalation risks and flag them for the Quality Assurance Specialist.
Use the sentiment analysis tool to determine the overall sentiment of the
customer and the agent.
Use the keyword extraction tool to identify key keywords and phrases in the transcript.
expected_output: >
A detailed analysis report of the {transcript} highlighting key insights,
themes, and sentiment from the transcripts.
agent: transcript_analyzer
quality_evaluation:
description: >
Review the transcript analysis report on {transcript} from the Transcript Analyzer.
Utilize your expertise in customer service evaluation metrics and industry
standards, and internet to evaluate the quality of the customer service interaction.
Score the interaction based on the evaluation metrics and flag any high-risk
escalations. Develop expert recommendations to optimize customer service
quality. Ensure the report includes customer service metrics and feedback
for improvement.
expected_output: >
A detailed quality evaluation report of the {transcript} highlighting the
quality of the customer service interaction, scoring based on evaluation
metrics, flagging any high-risk escalations, and recommendations for improvement.
agent: quality_assurance_specialist
report_generation:
description: >
List the reports from the Transcript Analyzer and the Quality Assurance
Specialist, then develop a detailed action plan for customer service managers
to implement the changes.
Use the data from these agents output to create an organized report including
a summarization and actionable recommendations for call center managers.
Ensure the report includes keywords and sentiment analysis from the Transcript
Analyzer agent.
Ensure the report includes the Quality Assurance Specialist agent's report,
evaluation metrics and recommendations for improving customer service quality.
Ensure the report is well written and easy to understand.
Be smart and well explained.
Ensure the report is comprehensive, organized, and easy to understand with
labeled sections with relevant information.
expected_output: >
A comprehensive report that lists the reports from the Transcript Analyzer,
then the Quality Assurance Specialist.
The report should include the key insights from {transcript} and the quality
evaluation report from the Quality Assurance Specialist.
The report should include organized sections for each agent's findings,
summaries, and actionable recommendations for call center managers.
agent: report_generator
context:
- transcript_analysis
- quality_evaluation
El flujo de trabajo de la tarea se ejecuta en un proceso secuencial que comienza con el análisis de transcripciones completado por el analizador de transcripciones. Los resultados de una tarea pueden establecer el contexto para una tarea futura. Durante la siguiente secuencia, el especialista en control de calidad aprovecha el informe de análisis de transcripciones para fundamentar su evaluación de calidad, anotando cualquier palabra clave o frase que indique una escalada.
El agente generador de informes utiliza los resultados del analizador de transcripciones y los agentes especialistas en control de calidad como contexto para generar un informe completo sobre la transcripción de llamadas. Este flujo es un ejemplo de colaboración multiagente y de cómo los agentes pueden completar tareas complejas y generar resultados más sólidos con mayor concientización del contexto mientras desempeñan sus funciones especializadas.
Primero, necesitamos configurar nuestro entorno para ejecutar la aplicación. Puede encontrar estos pasos en el archivo Markdown dentro de la carpeta del proyecto crewAI en GitHub o siguiendo aquí.
La estructura del proyecto debe parecerse a los siguientes pasos:
src/customer_service_analyzer/
├── config/
│ ├── agents.yaml # Agent configurations
│ └── tasks.yaml # Task definitions
├── tools/
│ ├── custom_tool.py # Custom crewAI tool implementations
│ └── tool_helper.py # Custom tool helper functions
├── crew.py # Crew orchestration
└── main.py # Application entry point
Genere y tome nota de su clave de API Serper gratuita. Serper es la API de búsqueda de Google que estamos utilizando en este proyecto.
Necesitamos instalar la infraestructura de crewAI para este tutorial y configurar las credenciales de watsonx.ai que generamos en el paso 2.
Si utiliza uv para la gestión de paquetes, puede agregar crewAI de la siguiente manera:
Si utiliza pip para la gestión de paquetes, configure un entorno virtual y luego instale crewAI en ese entorno.
Para instalar crewAI, ejecute el siguiente comando en su terminal.
In a separate .env file at the same directory level as the .env_sample file, set your credentials as strings like so:
WATSONX_APIKEY=your_watson_api_key_here
WATSONX_PROJECT_ID=your_watsonx_project_id_here
WATSONX_URL=your_endpoint (e.g. "https://us-south.ml.cloud.ibm.com")
SERPER_API_KEY=your_serper_api_key_here
CrewAI se puede configurar para usar cualquier LLM de código abierto. Los LLM se pueden conectar a través de Ollama y varias otras API, como IBM watsonx y OpenAI. Los usuarios también pueden aprovechar las herramientas prediseñadas disponibles a través del kit de herramientas de CrewAI, así como las herramientas de LangChain.
Asegúrese de estar en el directorio de trabajo adecuado de este proyecto. Puede cambiar de directorio ejecutando el siguiente comando en su terminal.
Para iniciar su equipo de agentes de IA y comenzar la ejecución de tareas, ejecute este comando desde la carpeta raíz de su proyecto. Tenga en cuenta que el equipo puede ejecutar durante varios minutos antes de entregar un resultado.
Este comando inicializa el equipo de análisis del centro de atención telefónica, reúne a los agentes y les asigna tareas según lo definido en su configuración. Este ejemplo, sin modificar, ejecutará IBM Granite® en watsonx.ai para crear un archivo report.md con el resultado. CrewAI puede entregar JSON, modelos Pydantic y cadenas sin procesar como resultado. A continuación aparece un ejemplo de el resultado producido por el equipo.
This result is an example of the final output after running the crew:
**Detailed Analysis Report of the Customer Service Interaction Transcript**
**Transcript Analysis Report**
The customer, Cynthia, called to report a damaged product, a jar of peanut butter that was open and spilled everywhere. She requested a replacement, but the agent, Gerald, responded defensively and blamed her for not noticing the damage before purchasing. The conversation escalated, with Cynthia becoming frustrated and threatening to post a negative review and contact the supervisor.
**Key Insights and Themes**
* The customer was dissatisfied with the product and the agent's response.
* The agent was unhelpful, unprofessional, and failed to take responsibility for the company's mistake.
* The conversation was confrontational, with both parties becoming increasingly agitated.
* The customer felt disrespected and unvalued, while the agent seemed dismissive and uncaring.
**Sentiment Analysis**
* Customer Sentiment: Frustrated, Angry, Disappointed
* Agent Sentiment: Defensive, Dismissive, Uncaring
**Keyword Extraction**
* Damaged Product
* Unhelpful Agent
* Confrontational Conversation
* Customer Dissatisfaction
* Unprofessional Response
**Escalation Risks**
* Negative Review: The customer threatened to post a negative review if the issue was not resolved promptly.
* Supervisor Involvement: The customer may contact the supervisor to report the incident and request further action.
**Recommendations for Quality Assurance Specialist**
* Review the call recording to assess the agent's performance and provide feedback on areas for improvement, using customer service metrics.
* Investigate the root cause of the damaged product and implement measures to prevent similar incidents in the future.
* Provide training on customer service skills, including active listening, empathy, and conflict resolution, using customer service standards.
* Monitor the customer's feedback and respond promptly to any concerns or complaints to maintain a positive customer experience.
* Recognize the standards for various customer service metrics to measure key performance indicators that are related to the areas mentioned above.
**Summary of Quality Evaluation Report**
The customer, Cynthia, called to report a damaged product, a jar of peanut butter that was open and spilled everywhere. She requested a replacement, but the agent, Gerald, responded defensively and blamed her for not noticing the damage before purchasing. Evaluation metrics showed a low Customer Satisfaction Score (CSAT), high Customer Effort Score (CES), and negative Net Promoter Score (NPS).
**Recommendations for Call Center Managers**
* Review the call recording, investigate the root cause of the damaged product, and provide training on customer service skills. Recognize the standards for various customer service metrics to measure key performance indicators.
* Monitor the customer's feedback and respond promptly to any concerns or complaints to maintain a positive customer experience.
* Implement measures to prevent similar incidents in the future, such as improving product packaging and handling procedures.
* Provide feedback and coaching to agents on their performance, highlighting areas for improvement and recognizing good performance.
Como se demuestra en el resultado de muestra, los agentes trabajaron juntos para completar la compleja tarea de analizar, evaluar y generar un informe sobre la transcripción de ejemplo. La colaboración entre agentes mejoró la eficiencia y la precisión de la aplicación al orquestar a cada agente para que se especializara en un aspecto particular del proceso. El agente de informes, por ejemplo, generó un informe organizado que incluye los hallazgos del análisis textual y las tareas de evaluación. Este resultado refleja una coordinación fluida entre los agentes en el manejo de diferentes partes del flujo de trabajo.
Los marcos pueden proporcionar un rendimiento más sólido y mejorado a través de la colaboración entre agentes. No todas las arquitecturas multiagente funcionan de la misma manera. Por ejemplo, algunos son específicos para el desarrollo de software, mientras que otros, como CrewAI y AutoGen, ofrecen configuraciones más componibles.
Permita a los desarrolladores crear, desplegar y monitorear agentes de IA con el estudio IBM watsonx.ai.
Cree una productividad revolucionaria con uno de los conjuntos de capacidades más completos de la industria para ayudar a las empresas a crear, personalizar y gestionar asistentes y agentes de IA.
Logre un ahorro de más del 90 % en costos de energía con los modelos más pequeños y abiertos de Granite, diseñados para mejorar la eficiencia de los desarrolladores. Estos modelos preparados para empresas ofrecen un rendimiento excepcional contra puntos de referencia de seguridad y en una amplia gama de tareas empresariales, desde la ciberseguridad hasta el RAG.