在上一篇文章中,我们讨论了如何构建一个代码助手Agent。今天,我想分享另一个实际项目:如何构建一个智能客服Agent。这个项目源于我们一个电商客户的真实需求 - 提升客服效率,降低人工成本。
从客户需求说起
记得第一次和客户沟通时的场景:
客户:我们每天要处理上万条客服请求,人工成本太高了
我:主要是哪些类型的请求?
客户:订单查询、退换货、商品咨询这些,很多都是重复性的工作
我:这些场景很适合用AI Agent来处理
客户:那具体怎么做呢?
经过深入分析,我们确定了几个核心需求:
- 自动回答常见问题
- 智能订单处理
- 情感识别与安抚
- 人工协作机制
技术方案设计
首先是整体架构:
from typing import List, Dict, Any, Optional
from enum import Enum
from pydantic import BaseModel
import asyncio
class ServiceTask(Enum):
INQUIRY = "inquiry"
ORDER = "order"
COMPLAINT = "complaint"
GENERAL = "general"
class CustomerContext(BaseModel):
user_id: str
query: str
history: List[Dict[str, str]]
sentiment: Optional[float]
order_info: Optional[Dict[str, Any]]
class ServiceAssistant:
def __init__(
self,
config: Dict[str, Any]
):
# 1. 初始化对话模型
self.chat_model = ChatLLM(
model="gpt-4",
temperature=0.7,
context_length=4000
)
# 2. 初始化知识库
self.knowledge_base = VectorStore(
embeddings=TextEmbeddings(),
collection="service_knowledge"
)
# 3. 初始化工具集
self.tools = {
"order": OrderSystem(),
"product": ProductCatalog(),
"sentiment": SentimentAnalyzer(),
"template": ResponseTemplate()
}
async def process_request(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 分析用户意图
intent = await self._analyze_intent(
context
)
# 2. 准备服务知识
knowledge = await self._prepare_knowledge(
intent,
context
)
# 3. 生成回复方案
plan = await self._generate_plan(
intent,
context,
knowledge
)
# 4. 执行服务流程
response = await self._execute_service(
plan,
context
)
return response
async def _analyze_intent(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 情感分析
sentiment = await self.tools["sentiment"].analyze(
context.query
)
# 2. 意图识别
intent = await self.chat_model.classify(
context.query,
context.history
)
# 3. 实体提取
entities = await self._extract_entities(
context.query
)
return {
"sentiment": sentiment,
"intent": intent,
"entities": entities
}
订单处理功能
首先实现最常用的订单处理功能:
class OrderProcessor:
def __init__(
self,
model: ChatLLM,
order_system: OrderSystem
):
self.model = model
self.order_system = order_system
async def process_order_query(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 提取订单信息
order_info = await self._extract_order_info(
context
)
# 2. 查询订单状态
status = await self._query_order_status(
order_info
)
# 3. 生成回复内容
response = await self._generate_response(
context,
order_info,
status
)
return response
async def _extract_order_info(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 从对话中提取
extracted = await self.model.extract_info(
context.query,
["order_id", "time", "product"]
)
# 2. 查询用户订单
if not extracted.get("order_id"):
orders = await self.order_system.query_recent_orders(
context.user_id
)
extracted["orders"] = orders
# 3. 补充订单详情
if extracted.get("order_id"):
details = await self.order_system.get_order_details(
extracted["order_id"]
)
extracted.update(details)
return extracted
async def _generate_response(
self,
context: CustomerContext,
order_info: Dict[str, Any],
status: Dict[str, Any]
) -> Dict[str, str]:
# 1. 选择回复模板
template = await self._select_template(
status["type"]
)
# 2. 填充订单信息
response = await self._fill_template(
template,
order_info,
status
)
# 3. 个性化调整
response = await self._personalize_response(
response,
context
)
return response
商品咨询功能
接下来是商品咨询功能:
class ProductAdvisor:
def __init__(
self,
model: ChatLLM,
product_catalog: ProductCatalog
):
self.model = model
self.catalog = product_catalog
async def process_inquiry(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 理解咨询意图
intent = await self._understand_inquiry(
context
)
# 2. 搜索相关产品
products = await self._search_products(
intent
)
# 3. 生成推荐建议
recommendations = await self._generate_recommendations(
context,
products,
intent
)
return recommendations
async def _understand_inquiry(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 提取产品特征
features = await self.model.extract_features(
context.query
)
# 2. 识别购买意向
intention = await self._analyze_intention(
context
)
# 3. 确定预算范围
budget = await self._estimate_budget(
context
)
return {
"features": features,
"intention": intention,
"budget": budget
}
async def _generate_recommendations(
self,
context: CustomerContext,
products: List[Dict[str, Any]],
intent: Dict[str, Any]
) -> Dict[str, Any]:
# 1. 排序产品列表
ranked_products = await self._rank_products(
products,
intent
)
# 2. 生成产品描述
descriptions = await self._generate_descriptions(
ranked_products,
intent
)
# 3. 添加购买建议
suggestions = await self._add_suggestions(
descriptions,
context
)
return {
"products": ranked_products,
"descriptions": descriptions,
"suggestions": suggestions
}
投诉处理功能
再来实现投诉处理功能:
class ComplaintHandler:
def __init__(
self,
model: ChatLLM,
sentiment_analyzer: SentimentAnalyzer
):
self.model = model
self.analyzer = sentiment_analyzer
async def handle_complaint(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 分析投诉等级
severity = await self._analyze_severity(
context
)
# 2. 生成处理方案
solution = await self._generate_solution(
context,
severity
)
# 3. 执行补偿措施
compensation = await self._process_compensation(
context,
severity,
solution
)
return {
"severity": severity,
"solution": solution,
"compensation": compensation
}
async def _analyze_severity(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 情感强度分析
sentiment = await self.analyzer.analyze_intensity(
context.query
)
# 2. 问题影响评估
impact = await self._assess_impact(
context
)
# 3. 客户价值评估
value = await self._evaluate_customer_value(
context.user_id
)
return {
"sentiment": sentiment,
"impact": impact,
"value": value,
"level": self._calculate_severity_level(
sentiment,
impact,
value
)
}
async def _generate_solution(
self,
context: CustomerContext,
severity: Dict[str, Any]
) -> Dict[str, Any]:
# 1. 匹配解决方案
solution = await self._match_solution(
context,
severity
)
# 2. 生成安抚话术
comfort = await self._generate_comfort_words(
context,
severity
)
# 3. 制定后续计划
followup = await self._plan_followup(
context,
severity
)
return {
"solution": solution,
"comfort": comfort,
"followup": followup
}
人工协作机制
最后是人工协作机制:
class HumanCollaboration:
def __init__(
self,
model: ChatLLM,
config: Dict[str, Any]
):
self.model = model
self.config = config
async def check_handover(
self,
context: CustomerContext
) -> Dict[str, Any]:
# 1. 评估复杂度
complexity = await self._evaluate_complexity(
context
)
# 2. 检查转人工规则
should_handover = await self._check_rules(
context,
complexity
)
# 3. 准备交接信息
handover_info = await self._prepare_handover(
context,
complexity
) if should_handover else None
return {
"should_handover": should_handover,
"complexity": complexity,
"handover_info": handover_info
}
async def _evaluate_complexity(
self,
context: CustomerContext
) -> Dict[str, float]:
# 1. 问题复杂度
query_complexity = await self.model.evaluate_complexity(
context.query
)
# 2. 情感复杂度
sentiment_complexity = await self._evaluate_sentiment_complexity(
context
)
# 3. 解决难度
solution_complexity = await self._evaluate_solution_complexity(
context
)
return {
"query": query_complexity,
"sentiment": sentiment_complexity,
"solution": solution_complexity,
"overall": (
query_complexity +
sentiment_complexity +
solution_complexity
) / 3
}
async def _prepare_handover(
self,
context: CustomerContext,
complexity: Dict[str, float]
) -> Dict[str, Any]:
# 1. 总结对话历史
summary = await self._summarize_conversation(
context
)
# 2. 标记关键信息
key_points = await self._mark_key_points(
context,
summary
)
# 3. 生成处理建议
suggestions = await self._generate_suggestions(
context,
complexity
)
return {
"summary": summary,
"key_points": key_points,
"suggestions": suggestions
}
实际效果
经过三个月的运营,这个智能客服系统取得了显著成效:
效率提升
- 自动回复率达到75%
- 平均响应时间降低60%
- 人工成本降低45%
服务质量
- 客户满意度提升15%
- 问题解决率提高20%
- 投诉处理更及时
运营收益
- 客服人员精力集中在复杂问题
- 服务时段延长至24/7
- 数据分析更全面
实践心得
在开发这个智能客服系统的过程中,我总结了几点经验:
以人为本
- 理解客户情感
- 注重服务体验
- 保持人性化
流程优先
- 先优化流程
- 再引入AI
- 持续迭代
数据驱动
- 重视数据收集
- 分析改进方向
- 量化服务质量
写在最后
一个好的智能客服不仅要能准确回答问题,更要有同理心,能够理解和回应客户的情感需求。它就像一个经验丰富的客服主管,在合适的时候给出恰当的回应。
在下一篇文章中,我会讲解如何开发一个数据分析Agent。如果你对智能客服的开发有什么想法,欢迎在评论区交流。