Colaboração multiagentes para análise de chamadas do cliente usando o watsonx.ai e o CrewAI

Vanna Winland

AI Advocate & Technology Writer

Meredith Syed

Technical Content, Editorial Lead

IBM

Neste tutorial, demonstramos como uma equipe de vários agentes de inteligência artificial (IA) pode colaborar para concluir tarefas complexas e otimizar fluxo de trabalho. Criamos uma aplicação Python para explicar a orquestração de agentes especializados que trabalham em uma arquitetura multiagentes. No final, você verá e executará um exemplo de colaboração multiagentes em uma aplicação de IA agêntica.

A aplicação com a qual estamos trabalhando é uma equipe de análise de atendimento ao cliente, utilizando o CrewAI como o framework multiagentes e o IBM watsonx.ai para implementar o grande modelo de linguagem (LLM) que a impulsiona.

Agentes de IA são entidades baseadas em LLMs que podem realizar operações em nome de um usuário ou sistema de IA agêntica. As arquiteturas agênticas são estruturadas em torno de dois sistemas diferentes: de agente único e multiagentes.

Sistemas de agente único são melhores para resolver problemas restritos, porque dependem de um agente de LLM para realizar tarefas de IA generativa. Por exemplo, um agente único de chatbot pode concentrar-se em tarefas ou conversas específicas que pode concluir dentro do escopo de seus recursos individuais.

Sistemas multiagentes (MAS) são frameworks que orquestram a funcionalidade e as interações entre agentes de IA. Em vez de tentar abranger todos os recursos em um único agente, as arquiteturas multiagentes usam diferentes agentes para trabalhar no mesmo ambiente para atingir um objetivo compartilhado. Os principais benefícios dos sistemas multiagentes incluem a colaboração e adaptabilidade deles para resolver problemas além dos recursos de um único agente. A melhor abordagem depende da complexidade das tarefas de aprendizado de máquina necessárias para compilar uma solução ou alcançar um certo resultado.

Resolução de problemas com sistemas multiagentes

O CrewAI é um framework agêntico de código aberto que orquestra a automação de agentes de LLM reunindo equipes personalizáveis ou equipes de agentes de desempenho de papéis. Aplicamos um caso de uso setorial simplificado para explicar como os agentes colaboram em uma arquitetura multiagentes.

Imagine um caso de uso do mundo real para uma central de atendimento ao cliente. O software de telecomunicações para analisar as transcrições da central de atendimento é usado para aprimorar a experiência do cliente e avaliar a qualidade da chamada. Em softwares mais robustos, as transcrições podem até ser analisadas em tempo real junto com grandes conjuntos de dados, incluindo metadados de chamadas. Por uma questão de explicabilidade, o conjunto de dados da nossa aplicação é simples: uma transcrição de simulação entre um representante de atendimento ao cliente e um 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. 

Uma equipe de agentes colaborativos gera um relatório abrangente com base na análise de texto e em métricas de avaliação da central de atendimento do cliente. Esse relatório ajuda os gerentes de atendimento ao cliente a resumir os principais eventos da chamada, avaliar o desempenho e fornecer recomendações para melhorias.

A equipe de análise de chamadas do atendimento ao cliente

Figura 1 - Diagrama da arquitetura de agentes Figura 1 - Diagrama da arquitetura de agentes

A equipe de análise de chamadas de atendimento ao cliente é composta por três agentes com funções especializadas e metas predefinidas. A configuração de agentes inclui um analisador de transcrições, um especialista em garantia de qualidade e um gerador de relatórios. Os objetivos e características do agente são definidos por três atributos principais: função, objetivo e história de fundo.

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.

O agente analisador de transcrições realiza uma análise completa na transcrição para extrair insights e informações importantes. O analisador, então, resume suas descobertas em um relatório que é transmitido aos outros agentes para auxiliar em suas tarefas. Esse agente usa um pacote de ferramentas personalizadas para executar técnicas de processamento de linguagem natural (NLP), como extração de palavras-chave e análise de sentimento.

O agente especializado em garantia de qualidade avalia a qualidade da chamada com base nos principais insights do relatório do analisador de transcrição e em sua própria experiência descrita na implementação e avaliação de métricas de avaliação da central de atendimento. Esse agente também pode pesquisar na internet para recuperar métricas e processos relevantes para avaliar o desempenho do funcionário e fornecer feedback para melhorar a qualidade geral do serviço.

O agente gerador de relatórios gera um relatório com base nos insights do relatório de análise de transcrições e nas métricas e no feedback fornecidos pela avaliação de garantia de qualidade. O agente é especializado em organizar os dados em um relatório abrangente. O objetivo do relatório é fornecer aos gerentes de atendimento ao cliente um detalhamento dos principais insights da chamada e recomendações para melhorar a qualidade do atendimento ao cliente.

Ferramentas dos agentes

Cada agente tem acesso a ferramentas, habilidades ou funções que os agentes usam para realizar tarefas diferentes. O CrewAI oferece as ferramentas existentes, integração com as ferramentas do LangChain e a opção de criar suas próprias ferramentas personalizadas. A equipe de análise do atendimento ao cliente usa uma combinação, com cada ferramenta especificada para a tarefa do agente e o objetivo da aplicação. Cada agente tem certas permissões para as ferramentas que pode acessar em sua configuração.
 
As ferramentas personalizadas são criadas definindo uma descrição clara da finalidade da ferramenta. Por exemplo, o agente analisador de transcrições tem várias ferramentas personalizadas para análise 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

A descrição da ferramenta é o que o agente usa como lógica para realizar a análise de sentimento na transcrição.

Os agentes também podem usar ferramentas existentes e interfaces de programação de aplicativos (APIs) integradas. O agente especializado em garantia de qualidade tem acesso a umsearch_tool  que usa o SerperDevTool para pesquisar na internet e retornar os resultados mais relevantes para suas consultas. O agente pode usar sua função especializada como avaliador experiente em atendimento ao cliente, mas também aproveitar a internet para buscar as métricas necessárias para avaliar a chamada e usar em seu relatório.

Fluxo de trabalho de tarefas

As tarefas são as atribuições específicas concluídas pelos agentes com detalhes de execução facilitados por três atributos de tarefas necessários: descrição, agente, saída esperada. Os agentes executam suas tarefas em uma sequência lógica usando as descrições detalhadas de cada tarefa como guia.

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

O fluxo de trabalho de tarefas é executado em um processo sequencial que começa com a análise de transcrição concluída pelo analisador de transcrições. Os resultados de uma tarefa podem estabelecer o contexto para uma tarefa futura. Durante a próxima sequência, o especialista em garantia de qualidade aproveita o relatório de análise de transcrições para informar sua avaliação de qualidade, observando quaisquer palavras-chave ou frases que indiquem escalonamento.

O agente gerador de relatórios usa as saídas do analisador de transcrições e dos agentes especialistas em garantia de qualidade como contexto para gerar um relatório abrangente sobre a transcrição da chamada. Esse fluxo é um exemplo de colaboração entre vários agentes e de como os agentes podem concluir tarefas complexas e gerar saídas mais robustas com maior consciência do contexto enquanto desempenham suas funções especializadas.

Etapas

Etapa 1. Configure seu ambiente

Primeiro, precisamos configurar nosso ambiente para executar a aplicação. Você pode encontrar essas etapas no arquivo de remarcação dentro da pasta do projeto CrewAI no GitHub ou seguindo aqui.

  • Certifique-se de ter o Python 3.10 ou superior 3.13 ou inferior instalado em seu sistema. Você pode verificar sua versão do Python usando o comandopython3 –version .
  • Clone o repositório do GitHub encontrado aqui. Para ver etapas detalhadas sobre como clonar um repositório, consulte a documentação do GitHub.

A estrutura do projeto deve se assemelhar às seguintes etapas:

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

Etapa 2. Obtenha as credenciais da API do watsonx

  1. Faça login no watsonx.ai usando sua conta do IBM Cloud.
  2. Crie um projeto do watsonx.ai. Anote a ID do projeto em Projeto > Gerenciar > Geral > ID do projeto. Você precisará dessa ID para este tutorial.
  3. Crie uma instância do serviço watsonx.ai Runtime (escolha o plano Lite, que é uma instância gratuita).
  4. Gere uma chave de API do watsonx.
  5. Associe o serviço watsonx.ai Runtime ao projeto que você criou no watsonx.ai.

Etapa 3. Obtenha credenciais da API do Serper

Gere e anote sua chave de API do Serper gratuita. O Serper é a API de pesquisa do Google que estamos usando neste projeto.

Etapa 4. Instale o CrewAI e defina suas credenciais

Precisamos instalar o framework CrewAI para este tutorial e definir as credenciais do watsonx.ai que geramos na etapa 2.

Se você usa o uv para gerenciamento de pacotes, pode adicionar o CrewAI da seguinte forma:

uv tool install crewai

Se vestiver usando o pip para gerenciamento de pacotes, configure um ambiente virtual e instale o CrewAI nesse ambiente.

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

Para instalar o CrewAI, execute o seguinte comando em seu 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

Etapa 5. (Opcional) Personalize o Crew

O CrewAI pode ser configurado para utilizar qualquer LLM de código aberto. Os LLMs podem ser conectados por meio do Ollama e de várias outras APIs, como o IBM® watsonx e o OpenAI. Os usuários também podem aproveitar ferramentas criadas previamente disponíveis no toolkit do CrewAI, bem como ferramentas do LangChain.

Etapa 6. Execute o sistema

Certifique-se de que você esteja no diretório de trabalho adequado deste projeto. Você pode alterar os diretórios executando o seguinte comando em seu terminal.

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

Para iniciar sua equipe de agentes de IA e iniciar a execução de tarefas, execute este comando na pasta raiz do seu projeto. Observe que a equipe pode ficar em execução por vários minutos antes de retornar um resultado.

crewai run

 

Esse comando inicializa a equipe de análise da central de atendimento, reunindo os agentes e atribuindo-lhes tarefas, conforme definido na sua configuração. Este exemplo, não modificado, executará o IBM® Granite no watsonx.ai para criar um arquivo report.md com a saída. O CrewAI pode retornar JSON, modelos Pydantic e strings brutas como saída. Aqui está um exemplo de saída produzida pelo Crew.

Exemplo de saída

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.

Conclusão

Conforme demonstrado no exemplo de saída, os agentes trabalharam juntos para realizar a complexa tarefa de analisar, avaliar e gerar um relatório sobre o exemplo de transcrição. A colaboração entre os agentes melhorou a eficiência e a precisão da aplicação, ao orquestrar cada agente para se especializar em um aspecto específico do processo. O agente do relatório, por exemplo, gerou um relatório organizado que inclui as descobertas das tarefas de análise e avaliação de texto. Esse resultado reflete uma coordenação tranquila entre os agentes no tratamento de diferentes partes do fluxo de trabalho.

Frameworks multiagentes podem fornecer um desempenho mais robusto e melhorado por meio da colaboração entre os agentes. Nem toda arquitetura multiagentes funciona da mesma forma. Por exemplo, algumas são específicas para o desenvolvimento de software, enquanto outras, como CrewAI e AutoGen, oferecem configurações mais combináveis.

Soluções relacionadas
Desenvolvimento de agentes de IA da IBM 

Permita que desenvolvedores criem, implementem e monitorem agentes de IA com o IBM watsonx.ai studio.

Explore o watsonx.ai
Agentes de IA e assistentes da IBM

Atinja uma produtividade revolucionária com um dos conjuntos de recursos mais abrangentes do setor para ajudar as empresas a criar, personalizar e gerenciar agentes e assistentes de IA. 

Explore agentes de IA
IBM Granite

Tenha mais de 90% de economia de custos com os modelos menores e abertos do Granite, projetados para a eficiência do desenvolvedor. Esses modelos prontos para uso corporativo oferecem desempenho excepcional em relação aos benchmarks de segurança e em uma ampla variedade de tarefas corporativas, da cibersegurança a RAG.

Explore Granite
Dê o próximo passo

Automatize seus fluxos de trabalho complexos e crie uma produtividade revolucionária com um dos conjuntos de recursos mais abrangentes do setor para ajudar empresas a construir, personalizar e fazer o gerenciamento de agentes e assistentes de IA. 

Explore o desenvolvimento de agentes no watsonx.ai Conheça o watsonx Orchestrate