Phân tích dịch vụ hỗ trợ khách hàng bằng Gemini 2.5 Pro và CrewAI

CrewAI được thiết kế để điều phối các tác nhân AI tự động, cộng tác để đạt được các mục tiêu phức tạp. Công cụ này đơn giản hoá việc phát triển hệ thống nhiều tác nhân bằng cách cho phép bạn xác định các tác nhân có vai trò, mục tiêu và cốt truyện cụ thể, sau đó chỉ định tác vụ cho các tác nhân đó. Ví dụ này minh hoạ cách xây dựng hệ thống nhiều tác nhân cho trường hợp sử dụng của Giám đốc điều hành (COO): phân tích dữ liệu hỗ trợ khách hàng để xác định vấn đề và đề xuất cải tiến quy trình bằng Gemini 2.5 Pro.

Mục tiêu là tạo một "nhóm" gồm các tác nhân AI có thể:

  1. Truy xuất và phân tích dữ liệu hỗ trợ khách hàng (được mô phỏng trong ví dụ này).
  2. Xác định các vấn đề thường gặp và nút thắt cổ chai trong quy trình.
  3. ��ề xuất các điểm cải thiện hữu ích.
  4. Biên soạn kết quả tìm được thành một báo cáo ngắn gọn phù hợp với COO.

Nếu chưa có Khoá Gemini API, bạn có thể nhận khoá miễn phí trong Google AI Studio.

 pip install "crewai[tools]"

Đặt khoá Gemini API làm biến môi trường có tên GEMINI_API_KEY. Định cấu hình CrewAI để sử dụng mô hình Gemini 2.5 Pro.

import os
from crewai import LLM

# Read your API key from the environment variable
gemini_api_key = os.getenv("GEMINI_API_KEY")

if not gemini_api_key:
    raise ValueError("GEMINI_API_KEY environment variable not set.")

# Use Gemini 2.5 Pro Experimental model
gemini_llm = LLM(
    model='gemini/gemini-2.5-pro-preview-05-06', 
    api_key=gemini_api_key,
    temperature=0.0 # Lower temperature for more factual analysis
)

Xác định thành phần

Các ứng dụng CrewAI được xây dựng bằng một số thành phần chính: Công cụ, Tác nhân, Tác vụ và chính Nhóm.

Công cụ

Công cụ là các chức năng mà tác nhân có thể sử dụng để tương tác với thế giới bên ngoài hoặc thực hiện các hành động cụ thể. Tại đây, chúng ta xác định một công cụ phần giữ chỗ để mô phỏng việc tìm nạp dữ liệu hỗ trợ khách hàng. Trong một ứng dụng thực tế, lớp này có thể kết nối với cơ sở dữ liệu, API hoặc hệ thống tệp.

from crewai.tools import BaseTool

# Placeholder Tool for fetching customer support data
class CustomerSupportDataTool(BaseTool):
    name: str = "Customer Support Data Fetcher"
    description: str = "Fetches recent customer support interactions, tickets, and feedback. Returns a summary string."

    def _run(self, argument: str) -> str:
        # In a real scenario, this would query a database or API.
        # For this example, we return simulated data.
        print(f"--- Fetching data for query: {argument} ---")
        return (
            """Recent Support Data Summary:
- 50 tickets related to 'login issues'. High resolution time (avg 48h).
- 30 tickets about 'billing discrepancies'. Mostly resolved within 12h.
- 20 tickets on 'feature requests'. Often closed without resolution.
- Frequent feedback mentions 'confusing user interface' for password reset.
- High volume of calls related to 'account verification process'.
- Sentiment analysis shows growing frustration with 'login issues' resolution time.
- Support agent notes indicate difficulty reproducing 'login issues'."""
        )

support_data_tool = CustomerSupportDataTool()

Nhân viên hỗ trợ

Tác nhân là các worker AI riêng lẻ trong nhóm của bạn. Mỗi tác nhân có một role, goal, backstory cụ thể, được chỉ định llm và có thể là tools.

from crewai import Agent

# Agent 1: Data Analyst
data_analyst = Agent(
    role='Customer Support Data Analyst',
    goal='Analyze customer support data to identify trends, recurring issues, and key pain points.',
    backstory=(
        """You are an expert data analyst specializing in customer support operations. 
        Your strength lies in identifying patterns and quantifying problems from raw support data."""
    ),
    verbose=True,
    allow_delegation=False, # This agent focuses on its specific task
    tools=[support_data_tool], # Assign the data fetching tool
    llm=gemini_llm # Use the configured Gemini LLM
)

# Agent 2: Process Optimizer
process_optimizer = Agent(
    role='Process Optimization Specialist',
    goal='Identify bottlenecks and inefficiencies in current support processes based on the data analysis. Propose actionable improvements.',
    backstory=(
        """You are a specialist in optimizing business processes, particularly in customer support. 
        You excel at pinpointing root causes of delays and inefficiencies and suggesting concrete solutions."""
    ),
    verbose=True,
    allow_delegation=False,
    # No specific tools needed, relies on the analysis context provided by the data_analyst
    llm=gemini_llm
)

# Agent 3: Report Writer
report_writer = Agent(
    role='Executive Report Writer',
    goal='Compile the analysis and improvement suggestions into a concise, clear, and actionable report for the COO.',
    backstory=(
        """You are a skilled writer adept at creating executive summaries and reports. 
        You focus on clarity, conciseness, and highlighting the most critical information and recommendations for senior leadership."""
    ),
    verbose=True,
    allow_delegation=False,
    llm=gemini_llm
)

Tasks

Tác vụ xác định các nhiệm vụ cụ thể cho các tác nhân. Mỗi tác vụ có một description, expected_output và được chỉ định cho một agent. Các tác vụ có thể phụ thuộc vào kết quả của các tác vụ trước đó.

from crewai import Task

# Task 1: Analyze Data
analysis_task = Task(
    description=(
        """Fetch and analyze the latest customer support interaction data (tickets, feedback, call logs) 
        focusing on the last quarter. Identify the top 3-5 recurring issues, quantify their frequency 
        and impact (e.g., resolution time, customer sentiment). Use the Customer Support Data Fetcher tool."""
    ),
    expected_output=(
        """A summary report detailing the key findings from the customer support data analysis, including:
- Top 3-5 recurring issues with frequency.
- Average resolution times for these issues.
- Key customer pain points mentioned in feedback.
- Any notable trends in sentiment or support agent observations."""
    ),
    agent=data_analyst # Assign task to the data_analyst agent
)

# Task 2: Identify Bottlenecks and Suggest Improvements
optimization_task = Task(
    description=(
        """Based on the data analysis report provided by the Data Analyst, identify the primary bottlenecks 
        in the support processes contributing to the identified issues (especially the top recurring ones). 
        Propose 2-3 concrete, actionable process improvements to address these bottlenecks. 
        Consider potential impact and ease of implementation."""
    ),
    expected_output=(
        """A concise list identifying the main process bottlenecks (e.g., lack of documentation for agents, 
        complex escalation path, UI issues) linked to the key problems. 
A list of 2-3 specific, actionable recommendations for process improvement 
(e.g., update agent knowledge base, simplify password reset UI, implement proactive monitoring)."""
    ),
    agent=process_optimizer # Assign task to the process_optimizer agent
    # This task implicitly uses the output of analysis_task as context
)

# Task 3: Compile COO Report
report_task = Task(
    description=(
        """Compile the findings from the Data Analyst and the recommendations from the Process Optimization Specialist 
        into a single, concise executive report for the COO. The report should clearly state:
1. The most critical customer support issues identified (with brief data points).
2. The key process bottlenecks causing these issues.
3. The recommended process improvements.
Ensure the report is easy to understand, focuses on actionable insights, and is formatted professionally."""
    ),
    expected_output=(
        """A well-structured executive report (max 1 page) summarizing the critical support issues, 
        underlying process bottlenecks, and clear, actionable recommendations for the COO. 
        Use clear headings and bullet points."""
    ),
    agent=report_writer # Assign task to the report_writer agent
)

Nhóm sản xuất

Crew kết hợp các tác nhân và tác vụ với nhau, xác định quy trình công việc (ví dụ: tuần tự).

from crewai import Crew, Process

# Define the crew with agents, tasks, and process
support_analysis_crew = Crew(
    agents=[data_analyst, process_optimizer, report_writer],
    tasks=[analysis_task, optimization_task, report_task],
    process=Process.sequential,  # Tasks will run sequentially in the order defined
    verbose=True
)

Chạy Crew

Cuối cùng, hãy bắt đầu thực thi nhóm bằng mọi dữ liệu đầu vào cần thiết.

# Start the crew's work
print("--- Starting Customer Support Analysis Crew ---")
# The 'inputs' dictionary provides initial context if needed by the first task.
# In this case, the tool simulates data fetching regardless of the input.
result = support_analysis_crew.kickoff(inputs={'data_query': 'last quarter support data'})

print("--- Crew Execution Finished ---")
print("--- Final Report for COO ---")
print(result)

Giờ đây, tập lệnh sẽ thực thi. Data Analyst sẽ sử dụng công cụ, Process Optimizer sẽ phân tích kết quả và Report Writer sẽ biên dịch báo cáo cuối cùng, sau đó in báo cáo đó vào bảng điều khiển. Chế độ cài đặt verbose=True sẽ hiển thị quy trình suy nghĩ và hành động chi tiết của từng tác nhân.