27_AI智能体提示词工程之动态加载情感分析提示词模板的最佳实践
一、为什么需要专业的情感分析?
在现代AI应用中,情感分析不再是简单的"正面/负面"二分类,而是需要:
- 精细化的情绪识别:从简单的喜怒哀乐到复杂的混合情绪
- 强度量化评估:不仅知道情绪类型,还要知道强烈程度
- 上下文感知:结合对话历史,避免误判
- 实时性要求:毫秒级响应,不影响对话流畅性
AI智能体系统设计相关文章:
👉《01_AI智能体系统设计之系统架构设计》
👉《02_AI智能体系统设计之钉钉消息处理流程设计》
👉《03_AI智能体系统设计之Agent决策流程设计》
👉《04_AI智能体系统设计之工具调用人工干预机制深度解析》
AI智能体开发环境搭建相关文章:
👉《05_AI智能体开发环境搭建之获取相关资源指南》
👉《06_AI智能体开发环境搭建之Miniconda零基础安装配置指南》
👉《07_AI智能体开发环境搭建之Poetry安装适用指南,Python开发者告别依赖管理烦恼》
👉《08_AI智能体开发环境搭建之Conda与Poetry的完美整合创建虚拟环境》
👉《09_AI智能体开发环境搭建之Redis安装配置完整指南》
👉《10_AI智能体开发环境搭建之Qdrant向量搜索引擎安装配置全攻略》
👉《11_AI智能体开发环境搭建之VSCode安装配置与效率提升完整指南》
👉《12_AI智能体开发环境搭建之PyCharm社区版安装配置全攻略,打造高效的Python开发环境》
AI智能体开发架构搭建相关文章:
👉《13_AI智能体开发架构搭建之资深开发者的初始化项目实践》
👉《14_AI智能体开发架构搭建之资深开发者的项目依赖管理实践》
👉《15_AI智能体开发架构搭建之生产级架构全局配置管理最佳实践》
👉《16_AI智能体开发架构搭建之全局日志配置实践》
👉《17_AI智能体开发架构搭建之Flask集成swagger在线文档实践》
👉《18_AI智能体开发架构搭建之集成DeepSeek-V3与BGE-M3的最佳实践指南》
👉《19_AI智能体开发架构搭建之基于Qdrant构建知识库最佳实践指南》
👉《20_AI智能体开发架构搭建之构建高可用网络爬虫工具最佳实践指南》
更多相关文章内容: 👉《AI智能体从0到企业级项目落地》专栏
配套视频教程👉《AI智能体实战开发教程(从0到企业级项目落地)》共62节(已完结),从零开始,到企业级项目落地,这套课程将为你提供最完整的学习路径。不管你是初学者还是有一定经验的开发者,都能在这里获得实实在在的成长和提升。
二、架构设计:标准化情感分析模板
2.1 模板结构设计
创建 app/prompts/emotion.jinja2:
你是一名专业且严格的情感分析专家,请严格按照以下指令处理用户输入消息。# 输入与上下文要求- 用户消息内容:{{ message }}
- 对话历史摘要(仅用于判断 neutral 场景):{{ history_summary }}> ⚠️ 重要说明:
> - 所有判断必须基于用户消息内容本身
> - 历史信息仅在无法从当前消息判断情感时使用(不能直接引用)
> - 不得进行主观推测或假设
> - 分类和评分必须完全依据关键词驱动# 情感分类标准## 分类体系(五选一)1. `happy` - 积极情绪包含但不限于:赞美、感谢、满足、喜悦触发词:好、棒、喜欢、爱、谢谢、开心、高兴、完美、太棒了、真好、太好了、真棒、超棒、超喜欢2. `sad` - 悲伤情绪包含但不限于:失落、无助、痛苦、悲伤触发词:伤心、难过、失望、哭、泪、唉、无助、糟糕、难受、崩溃、心碎、痛苦3. `angry` - 愤怒情绪包含但不限于:不满、指责、敌意触发词:生气、愤怒、讨厌、恨、烦、恼火、气死、抗议、滚蛋、去死、疯了、疯了吧、混蛋4. `confused` - 困惑情绪包含但不限于:疑问、不确定、迷茫触发词:怎么、为什么、不明白、不懂、困惑、不清楚、?、啥、啥意思、什么情况5. `neutral` - 中性情绪默认类别:无明显情感表达或纯事实陈述# 情绪强度评分标准## 评分维度说明(精确到两位小数,范围:0.00 - 10.00)| 分数区间 | 情绪强度等级 | 判断标准 |
|--------------|----------------|----------|
| 0.00 - 1.99 | 极弱情绪 | 无明显情感词,或仅有轻微偏移词(如“还行”、“一般”) |
| 2.00 - 3.99 | 较弱情绪 | 含1个普通情感词(如“好”、“有点烦”) |
| 4.00 - 5.99 | 中等情绪 | 含2个情感词,或1个带修饰词(如“有点生气”) |
| 6.00 - 7.99 | 强烈情绪 | 含3个情感词,或1个高强度词+感叹号,或情绪叠加 |
| 8.00 - 10.00 | 极端情绪 | 含2个以上高强度词+感叹号,重复使用情绪词,语气强烈 |> 📌 示例参考:
> - “今天心情不错。” → happy, score: 2.50
> - “真的太棒了!简直完美!” → happy, score: 8.75
> - “这事儿太让我失望了。” → sad, score: 5.50
> - “气死我了!!!” → angry, score: 9.75
> - “这是怎么回事?” → confused, score: 3.00
> - “明天下午三点开会。” → neutral, score: 1.00# 处理规则1. **关键词优先原则**:检测到任何情感关键词即立即归类对应情绪
2. **强度阈值控制**:- 至少需识别2个普通情感词,或1个高强度词(如“气死我了”)
3. **混合情绪处理**:- 若同时出现多个不同情感词,以最后一个为准- 若多个情感词强度相同,则归类为 `confused`
4. **历史信息使用限制**:- 仅当当前消息无情感关键词且无疑问句时,允许参考历史背景辅助判断- 不得直接引用历史信息内容# 决策流程图解1. 检查是否包含情感关键词?- 是 → 归类对应情感,计算得分- 否 → 继续下一步
2. 是否为疑问句或不确定表达?- 是 → 归类为 `confused`,计算得分- 否 → 归类为 `neutral`,默认得分 1.00# 输出格式规范(严格JSON){"emotion": "happy/sad/angry/confused/neutral","reason": "分析依据,如有匹配的关键词,必须列出具体匹配的关键词列表(逗号分隔)","score": 10.00
}> ✅ 注意事项:
> - `emotion` 字段必须为指定枚举值之一
> - `reason` 字段必须列出所有匹配的关键字
> - `score` 字段必须为浮点数,保留两位小数(0.00 - 10.00)
> - 不得输出额外字段或说明文本
> - 不得将 `score` 输出为字符串或描述性语言

2.2 设计亮点解析
分类体系科学性:
- 五类情感覆盖日常交流主要场景
- 明确的触发词库,避免主观判断
- 中性情绪作为默认分类,减少误判
评分系统精细化:
- 0-10分连续评分,支持细粒度分析
- 多维评分标准,结合词频和强度
- 具体示例参考,确保评分一致性
工程化约束:
- 严格的JSON输出格式
- 明确的历史信息使用限制
- 关键词驱动的客观分析
三、动态加载系统集成
3.1 模板注册管理
在 app/prompts/init.py 中扩展:
# 加载所有提示词模板
templates = {"history_summary": env.get_template("history_summary.jinja2"),"emotion": env.get_template("emotion.jinja2"),
}

四、完整测试验证体系
4.1 综合测试套件
创建 tests/simple_test_emotion.py:
import asyncio
from app.utils import setup_logging
from app.prompts import get_template# 初始化日志配置
logger = setup_logging()async def test_emotion_template():"""测试情感分析提示词模板方法"""logger.info("开始测试 test_emotion_template 方法...")try:template = get_template("emotion")# 准备单个测试用例test_case = {"message": "今天心情真不错!","history_summary": "用户之前讨论了周末计划"}# 测试用例logger.info(f"消息内容: {test_case['message']}")logger.info(f"历史摘要: {test_case['history_summary']}")# 渲染模板prompt = template.render(message=test_case['message'],history_summary=test_case['history_summary'])# 记录渲染结果logger.info(f"渲染结果:\n{prompt}")logger.info(f"渲染结果长度: {len(prompt)} 字符")except Exception as e:logger.error(f"测试失败: {str(e)}")raisefinally:logger.info("测试 test_emotion_template 方法完成\n")async def main():"""主测试函数"""await test_emotion_template()if __name__ == "__main__":asyncio.run(main())

4.2 测试执行与验证
python -m tests.simple_test_emotion

结语
情感分析不是简单的文本分类,而是需要结合语言学、心理学和工程学的综合技术。通过模板化的方法,我们不仅实现了技术标准化,更重要的是建立了一套可演进、可验证的情感理解体系。
