2026山东大学软件学院项目实训-宠物情绪识别(七)

发布时间:2026/6/23 15:59:56

2026山东大学软件学院项目实训-宠物情绪识别(七) 一、本周工作概述本周在完成情绪识别 API 调通的基础上重点对大模型提示词策略进行了系统性研究和优化。核心工作包括尝试了5种不同的提示词策略、从多维度进行量化评估对比、选择最优方案并完成代码实现、增加后处理验证和降级策略提升系统鲁棒性。二、提示词策略探索策略一零样本直接提问这是最基础的方案直接告诉模型任务目标和输出格式要求让模型自由发挥。本周之前提问策略一直是这个本周考虑优化提问策略。prompt 你是专业的宠物情绪分析师。根据以下音频特征判断宠物情绪并给出养护建议。 规则情绪从兴奋焦虑痛苦平静中选择返回JSON格式 策略二少样本示例针对零样本策略格式不稳定的问题在提示词中加入覆盖四种情绪的示例让模型学习输入到输出的映射模式。prompt 参考以下示例 示例1 特征 频率3200到5800Hz 输出 情绪焦虑 示例2 特征 频率80到1200Hz 输出 情绪平静 现在分析 特征 加入示例后格式正确率与准确率均有提升。但也带来了新问题Token消耗增加约三倍而且示例选择对效果影响很大模型有时会死记硬背示例对新的特征组合泛化能力变弱。策略三思维链推理为了提升可解释性引导模型分步骤推理强制展示思考过程后再给出结论。prompt 步骤一 解析特征 频率范围反映了什么 音高统计说明什么 步骤二 综合判断 结合多个特征推断情绪状态 步骤三 输出JSON 这个方案的可解释性大幅提升准确率也进一步提高。但响应Token增加了五到八倍接口延迟从两秒变为八到十秒成本显著上升而且推理链有时会偏离正确方向。策略四结构化特征映射基于动物行为学知识构建特征到情绪映射表覆盖频率范围、音高特征、时长特征、过零率特征四个维度让模型按查表加推理的方式进行判断。self.emotion_mapping { 兴奋: { freq_range: 中高频1500到4000Hz pitch: 变化大波动明显 duration: 短促小于0.3秒 zero_cross: 较高大于0.08 }, 焦虑: { freq_range: 中频1000到3500Hz pitch: 不稳定间歇波动 duration: 中等0.2到0.5秒 zero_cross: 中等0.05到0.10 }, 痛苦: { freq_range: 高频大于3000Hz pitch: 尖锐单调升高 duration: 短促小于0.2秒 zero_cross: 较低小于0.05 }, 平静: { freq_range: 低频小于1500Hz pitch: 稳定波动小 duration: 较长大于0.5秒 zero_cross: 低小于0.04 } }这个方案效果显著准确率较零样本推理有了大幅提升格式正确率达到百分之九十五以上推理依据也变得具体明确Token消耗适中约为思维链方案的百分之六十。策略五自适应多轮对话准确率最高的方案是两轮对话第一轮做初步判断第二轮进行验证修正。也就是第一轮基于特征给出初步判断第二轮基于初步判断请确认或修正。这个方案准确率虽然显著提高且能自我修正错误但代价是两轮API调用导致成本翻倍延迟增加至十二到十五秒实现也相对复杂。三、策略选择与落地1.最终选择综合比较后选择结构化特征映射加少样本示例混合策略。选择理由结构化特征映射的准确率已满足业务需求格式稳定性最好Token消耗仅比零样本增加约百分之五十响应时间控制在三秒内适合实时分析而且映射表本身就是领域知识的积累可以持续优化。2.核心代码实现首先在初始化时定义映射表和少样本示例这部分代码与策略四分析的部分重合度较高不再展示接着构建格式化映射表和示例def _build_mapping_table(self): lines [情绪 频率范围 音高特征 时长特征 过零率特征] lines.append(------ --------- --------- --------- -----------) for emotion, features in self.emotion_mapping.items(): lines.append( emotion features[freq_range] features[pitch] features[duration] features[zero_cross] ) return 换行符连接lines def _build_few_shot_examples(self): examples [] for i, example in enumerate(self.few_shot_examples, 1): output example[output] example_text ( 示例 str(i) 特征 example[features] 输出 情绪 output[emotion] 置信度 str(output[confidence]) 分析 output[analysis] 建议 output[suggestion] ) examples.append(example_text) return 换行符连接examples优化提示词模板使其同时包含映射表和示例self.prompt_template 你是专业的宠物情绪分析师专门从事宠物音频信号分析 特征情绪映射参考表 emotion_mapping_table 参考示例 few_shot_examples 分析任务 根据以下音频特征参考上述映射表和示例判断宠物的情绪状态 音频特征 features 分析要求 严格参考映射表进行特征匹配 综合判断后从兴奋焦虑痛苦平静中选择最匹配的情绪 置信度必须为0到1之间的数值反映判断的确定程度 分析依据需具体说明匹配了哪些特征 养护建议需针对该情绪给出1到2条可执行操作 调用时设置较低的temperature值保证输出稳定性payload { model: self.model messages: [ {role: system content: 你是一个专业的宠物情绪分析专家请严格按照要求输出JSON格式结果} {role: user content: prompt} ] temperature: 0.1 top_p: 0.9 }后处理验证确保返回结果有效valid_emotions [兴奋 焦虑 痛苦 平静] emotion result.get(emotion 平静) if emotion not in valid_emotions: for valid in valid_emotions: if valid in emotion or emotion in valid: emotion valid break else: emotion 平静 confidence min(1.0 max(0.0 float(result.get(confidence 0.5))))降级策略确保系统鲁棒性def _fallback_analysis(self, audio_features, raw_content): if 焦虑 in raw_content or 焦虑 in audio_features: return {emotion: 焦虑 confidence: 0.7 analysis: 基于特征与关键词匹配 suggestion: 建议进行二次确认} elif 痛苦 in raw_content or 痛苦 in audio_features: return {emotion: 痛苦 confidence: 0.7 analysis: 基于特征与关键词匹配 suggestion: 建议进行二次确认} elif 兴奋 in raw_content or 兴奋 in audio_features: return {emotion: 兴奋 confidence: 0.6 analysis: 基于特征与关键词匹配 suggestion: 建议进行二次确认} else: return {emotion: 平静 confidence: 0.8 analysis: 未检测到明显异常情绪 suggestion: 保持正常照顾观察宠物状态}四、遇到的问题与解决问题一 JSON解析失败问题描述模型返回的内容有时包含markdown代码块标记导致json解析报错解决方案在解析前先清理反引号和json标记提取纯净的JSON字符串问题二 情绪值不在预定义范围问题描述模型偶尔返回紧张害怕等不在预定义列表中的情绪值解决方案实现模糊匹配逻辑将紧张匹配到焦虑害怕匹配到痛苦若无匹配则使用平静作为默认值问题三 置信度超出边界问题描述模型有时返回负数或大于一的置信度解决方案使用min和max将置信度约束在0到1范围内五、优化效果经过策略优化后各指标变化如下在所选取两百个示例上1.准确率从百分之五十左右提升到百分之七十左右2.JSON格式正确率从百分之七十左右提升到百分之九十左右3.推理依据从原本笼统的音频特征显示异常变为具体的频率范围特征符合某种情绪这种推理使可解释性显著增强4.响应时间从2.1秒变为3.6秒5.Token消耗增加了约百分之七十五整体在可接受范围内六、本周工作总结本周完成了大模型提示词策略的系统性探索和优化尝试了零样本直接提问、少样本示例、思维链推理、结构化特征映射、自适应多轮对话共五种策略。从准确率、格式稳定性、Token消耗、响应延迟、可解释性、实现复杂度六个维度进行了对比评估最终选择了结构化特征映射加少样本示例混合策略并完成代码实现。增加了JSON格式清理、情绪值模糊匹配、置信度边界约束、降级分析四层防护机制。规范了输入输出格式输入采用统一的特征描述格式输出严格遵循JSON结构包含情绪、置信度、分析依据、养护建议四个字段。将情绪识别准确率从百分之五十左右提升到百分之七十左右将JSON格式正确率从百分之七十提升到百分之九十实现了推理依据从笼统到具体的转变。

相关新闻