Colaboración multiagente para el análisis de llamadas de clientes utilizando watsonx.ai y CrewAI

Vanna Winland

AI Advocate & Technology Writer

Meredith Syed

Technical Content, Editorial Lead

IBM

En este tutorial, demostramos cómo un equipo de múltiples agentes de inteligencia artificial (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 servicio de atención al cliente que utiliza CrewAI como marco e IBM® watsonx.ai para implementar el modelo de lenguaje de gran tamaño (LLM) que lo impulsa.

Los agentes de IA son entidades basadas en LLM que pueden realizar operaciones en nombre de un usuario o un sistema de IA agéntica. Las arquitecturas agentivas se estructuran en torno a dos sistemas diferentes: un solo agente y varios agentes.

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 único agente, las arquitecturas multiagente utilizan diferentes agentes para trabajar dentro del mismo entorno para 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.

Resolución de problemas con sistemas multiagente

crewAI es un marco de trabajo de agencia de código abierto que orquesta la automatización de agentes LLM mediante la creación de equipos personalizables o equipos de agentes que interpretan roles. Aplicamos un caso de uso simplificado de los sectores para explicar cómo colaboran los agentes dentro de una arquitectura multiagente.

Imagine un caso de uso real para un call center de servicio de atención al cliente. El software de telecomunicaciones para analizar las transcripciones de call center se utiliza para mejorar la experiencia 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 las llamadas. En aras de la explicabilidad, el conjunto de datos de nuestra aplicación es simple, una transcripción simulada entre un representante del servicio 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 el análisis de texto y las métricas de evaluación del call center del cliente. Este informe ayuda a los responsables del servicio de atención al cliente a resumir los principales acontecimientos de la llamada, evaluar el rendimiento y ofrecer recomendaciones de mejora.

El equipo de análisis de llamadas del servicio de atención al cliente

Figura 1 - Diagrama de la arquitectura de agentes Figura 1 - Diagrama de la arquitectura del agente

El equipo de análisis de llamadas de servicio de atención al cliente está formado por tres agentes con funciones especializadas 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 y trasfondo.

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 conocimientos clave e información importante. A continuación, el analizador resume sus hallazgos en un informe que se transmite a los demás agentes para ayudarles en sus tareas. Este agente utiliza un conjunto de herramientas personalizado para llevar a cabo técnicas de procesamiento del lenguaje natural (PLN), 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 las claves de conocimiento 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 call center. Este agente también puede buscar en Internet para recuperar métricas y procesos relevantes para evaluar el rendimiento del empleado y proporcionar comentarios para mejorar la calidad general del servicio.

El agente generador de informes genera un informe basado en los conocimientos del informe de análisis de transcripciones, las métricas y 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 gestores de servicio de atención al cliente un desglose de los conocimientos clave de la llamada y recomendaciones para mejorar la calidad del servicio de atención al cliente.

Herramientas de agente

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 del servicio 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 sobre 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 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 análisis de sentimiento 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 unsearch_tool  que utiliza el SerperDevTool para buscar en Internet y devolver los resultados más relevantes a sus consultas. El agente puede utilizar su función especializada como evaluador experimentado del servicio de atención al cliente, pero también aprovechar Internet para buscar las métricas necesarias para evaluar la llamada y utilizarlas en su informe.

Flujo de trabajo de tareas

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 previsto. 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 transcripción completado por el analizador de transcripción. 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 informar 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 la llamada. Este flujo es un ejemplo de colaboración multiagente y de cómo los agentes pueden completar tareas complejas y generar resultados más robustos con una mayor conciencia mientras desempeñan sus funciones especializadas.

Pasos

Paso 1. Configure su entorno

Primero, necesitamos configurar nuestro entorno para ejecutar la aplicación. Puede encontrar estos pasos en el archivo Markdown en la carpeta del proyecto crewAI en GitHub o siguiéndolos aquí.

  • Asegúrese de tener Python >=3.10 <=3.13 instalado en su sistema. Puede comprobar su versión de Python utilizando elpython3 –versión comando.
  • Clone el repositorio de GitHub que puede encontrar aquí. Para conocer con detalle los pasos para clonar un repositorio, consulte la documentación de GitHub.

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

Paso 2. Obtenga las credenciales de la API de watsonx

  1. Inicie sesión en watsonx.ai utilizando su cuenta de IBM® Cloud.
  2. Cree un proyecto watsonx.ai. Tome nota de su ID de proyecto en proyecto > Gestionar > General > ID de proyecto. Necesitará este ID para este tutorial.
  3. Cree una instancia de servicio watsonx.ai Runtime (elija el plan Lite, que es una instancia gratuita).
  4. Genere una clave de API de watsonx.
  5. Asocie el servicio watsonx.ai Runtime con el proyecto que ha creado en watsonx.ai.

Paso 3. Obtenga las credenciales de la API de Serper

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.

Paso 4. Instale crewAI y configure sus credenciales

Necesitamos instalar el marco de trabajo 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 añadir crewAI de la siguiente manera:

instalación de la herramienta uv en crewai

Si utiliza pip para la gestión de paquetes, configure un entorno virtual y luego instale crewAI en ese entorno.

python3 -m venv venv
source ./venv/bin/activate

Para instalar crewAI, ejecute el siguiente comando en su terminal.

pip install 'crewai[tools]'

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

Paso 5. (Opcional) Personalice el equipo

crewAI se puede configurar para utilizar cualquier LLM de código abierto. Los LLM se pueden conectar a través de Ollama y 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.

Paso 6. Ejecute el sistema

Asegúrese de estar en el directorio de trabajo adecuado de este proyecto. Puede cambiar de directorio ejecutando el siguiente comando en su terminal.

cd crew-ai-projects/multiagent-collab-cs-call-center-analysis

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 funcionar durante varios minutos antes de devolver un resultado.

crewai run

 

Este comando inicializa el equipo de análisis del call center, 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 output. crewAI puede devolver JSON, modelos Pydantic y cadenas sin procesar como output. Este es un ejemplo del output generado por el equipo.

Salida de ejemplo

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.

Conclusión

Como se demuestra en el output 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 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 resultados de las tareas de análisis y evaluación textuales. Este resultado refleja una coordinación fluida entre los agentes en el manejo de diferentes partes del flujo de trabajo.

Los marcos multiagente pueden proporcionar un rendimiento general 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.

Soluciones relacionadas
Desarrollo de agentes de IA de IBM 

Permita a los desarrolladores crear, implementar y monitorizar agentes de IA con el estudio IBM watsonx.ai.

Explore watsonx.ai
Agentes y asistentes de IA de IBM

Cree una productividad sin precedentes con uno de los conjuntos de capacidades más completos del sector para ayudar a las empresas a crear, personalizar y gestionar agentes y asistentes de IA. 

Explore los agentes de IA
IBM Granite

Ahorre más de un 90 % en costes con los modelos más pequeños y abiertos de Granite, diseñados para la eficiencia de los desarrolladores. Estos modelos listos para uso empresarial ofrecen un rendimiento excepcional frente a los puntos de referencia de seguridad y en una amplia gama de tareas empresariales, desde la ciberseguridad hasta RAG.

Explore Granite
Dé el siguiente paso

Automatice sus flujos de trabajo complejos y cree una productividad revolucionaria con uno de los conjuntos de capacidades más completos del sector para ayudar a las empresas a crear, personalizar y gestionar agentes de IA y asistentes. 

Explore el desarrollo de agentes de watsonx.ai Descubra watsonx Orchestrate