上一篇我们实现了对话管理,Bot能记住对话历史了。这一篇来解决客服场景的关键问题:用户说"你们的服务太差了!我要投诉!",Bot怎么识别这是愤怒情绪,及时转人工?这就是情感分析——客服Bot的"情商"。
1什么是情感分析?为什么重要?
情感分析(Sentiment Analysis)是Agent感知模块的高级功能。它的作用是:识别用户情绪,及时响应负面情绪。
图:情感分析流程

情感分析的重要性:
三个关键作用:
1. 及时转人工:识别愤怒情绪,立即转人工客服
2. 调整语气:识别负面情绪,用更温和的语气回复
3. 预警机制:识别情绪变化趋势,提前干预
2情感等级的定义
客服场景的情感分为5个等级:
json[
{
"level": 1,
"name": "正面",
"keywords": ["谢谢", "感谢", "好的", "满意"],
"response": "礼貌感谢"
},
{
"level": 2,
"name": "中性",
"keywords": ["你好", "在吗", "请问"],
"response": "正常回复"
},
{
"level": 3,
"name": "轻微负面",
"keywords": ["有点慢", "不太方便"],
"response": "道歉+改进建议"
},
{
"level": 4,
"name": "负面",
"keywords": ["太慢了", "等了很久", "不满意"],
"response": "道歉+加快处理"
},
{
"level": 5,
"name": "愤怒",
"keywords": ["投诉", "太差了", "垃圾", "骗子"],
"response": "立即转人工"
}
]情感等级的处理策略:
| Level 1 | ||
| Level 2 | ||
| Level 3 | ||
| Level 4 | ||
| Level 5 |
3情感分析的实现方式
2026年,情感分析有三种主流方式:
| 关键词匹配 | |||
| 小模型分类 | |||
| 大模型识别 |
图:情感等级处理流程

客服场景我们选择关键词匹配 + 大模型识别的混合方案:
混合方案的优势:
1. 常见情绪词("投诉"、"太差了")用关键词匹配,速度快
2. 复杂情绪表达用大模型识别,准确率高
3. 情感等级≥4,立即转人工
4实战:实现情感分析插件
我们创建情感分析插件:
plugins/sentiment_analysis/plugin.py:
pythonimport json
from pathlib import Path
from typing import Dict
classSentimentAnalysisPlugin:
"""情感分析插件"""
def__init__(self, sentiment_file: str = "data/sentiments.json"):
self.sentiments = self._load_sentiments(sentiment_file)
self.keyword_map = self._build_keyword_map()
def_load_sentiments(self, sentiment_file: str) -> list:
"""加载情感定义"""
path = Path(sentiment_file)
if path.exists():
with open(path, 'r', encoding='utf-8') as f:
return json.load(f)
return []
def_build_keyword_map(self) -> Dict[str, int]:
"""构建关键词映射表"""
keyword_map = {}
for sentiment inself.sentiments:
for keyword in sentiment.get("keywords", []):
keyword_map[keyword] = sentiment["level"]
return keyword_map
defanalyze(self, user_input: str) -> Dict:
"""分析用户情感"""
# 第一步:关键词匹配
sentiment_level = self._keyword_match(user_input)
# 第二步:如果关键词匹配失败,用大模型识别
if sentiment_level == 0:
sentiment_level = self._llm_analyze(user_input)
# 获取情感信息
sentiment = self._get_sentiment_by_level(sentiment_level)
return {
"level": sentiment_level,
"name": sentiment.get("name", "未知"),
"response_strategy": sentiment.get("response", "正常回复"),
"need_handoff": sentiment_level >= 4
}
def_keyword_match(self, user_input: str) -> int:
"""关键词匹配"""
max_level = 0
words = user_input.split()
for word in words:
if word inself.keyword_map:
level = self.keyword_map[word]
max_level = max(max_level, level)
return max_level
def_llm_analyze(self, user_input: str) -> int:
"""大模型分析(简化版)"""
# 实际项目中会调用大模型API
# 这里简化为返回中性
return2
def_get_sentiment_by_level(self, level: int) -> Dict:
"""根据等级获取情感信息"""
for sentiment inself.sentiments:
if sentiment["level"] == level:
return sentiment
return {"level": 2, "name": "中性", "response": "正常回复"}5集成到Bot中
将情感分析插件集成到客服Bot:
src/bot.py(更新版):
pythonfrom plugins.sentiment_analysis.plugin import SentimentAnalysisPlugin
classCustomerServiceBot:
def__init__(self, config_path: str = "config/customer_service.yaml"):
self.config = self._load_config(config_path)
self.system_prompt = self._load_prompt()
self.intent_plugin = IntentRecognitionPlugin()
self.kb_plugin = KnowledgeBasePlugin()
self.dialog_manager = DialogManager(max_history=10)
self.sentiment_plugin = SentimentAnalysisPlugin()
defchat(self, user_input: str) -> str:
# 先分析情感
sentiment_result = self.sentiment_plugin.analyze(user_input)
# 如果情感等级≥4,立即转人工
if sentiment_result["need_handoff"]:
return"非常抱歉给您带来不便。我立即为您转接人工客服处理。"
# 正常处理意图
intent_result = self.intent_plugin.recognize(user_input)
# 根据情感调整回复语气
response = self._process_intent(intent_result, user_input)
# 根据情感等级调整语气
if sentiment_result["level"] == 3:
response = "抱歉给您带来不便。" + response
return response6测试情感分析效果
python# 测试情感分析
from plugins.sentiment_analysis.plugin import SentimentAnalysisPlugin
plugin = SentimentAnalysisPlugin()
# 测试正面情绪
print(plugin.analyze("谢谢"))
# 输出:{'level': 1, 'name': '正面', 'need_handoff': False}
# 测试中性情绪
print(plugin.analyze("你好"))
# 输出:{'level': 2, 'name': '中性', 'need_handoff': False}
# 测试负面情绪
print(plugin.analyze("太慢了"))
# 输出:{'level': 4, 'name': '负面', 'need_handoff': True}
# 测试愤怒情绪
print(plugin.analyze("我要投诉"))
# 输出:{'level': 5, 'name': '愤怒', 'need_handoff': True}
# 测试完整Bot
from src.bot import CustomerServiceBot
bot = CustomerServiceBot()
print(bot.chat("你们的服务太差了!"))
# 输出:非常抱歉给您带来不便。我立即为您转接人工客服处理。7情感分析的优化方向
三个优化方向:
1. 情绪追踪:记录情绪变化趋势,识别情绪升级(如从"有点慢"到"太慢了")
2. 个性化回复:根据用户历史情绪,调整回复策略
3. 预警机制:情绪等级≥3时,提前预警,准备转人工
8总结:情感分析是Bot的"情商"
本篇要点:
1. 情感分析识别情绪:正面、中性、轻微负面、负面、愤怒5个等级
2. 关键词匹配最快:常见情绪词快速识别
3. 大模型识别最准:复杂情绪表达准确识别
4. 等级≥4转人工:负面和愤怒情绪立即转人工
5. 调整回复语气:根据情感等级调整语气
下一篇,我们来写订单查询插件——如何让Bot查询订单状态。
客服Agent实战系列01 · 项目初始化02 · Bot定义:System Prompt设计03 · 意图识别插件04 · 知识库插件05 · 对话管理 06 · 情感分析插件← 你在这里... 共14篇前置系列:Agent开发系列 06:记忆模块
夜雨聆风