任务#1697 产出(开发工程师)
> 自动落盘:2026-11-04 19:09
---
file: m02_script_lib.py
"""话术库模块 - 为佑观智伴提供多轮变体中文话术""" import random import sys from typing import Optional, List
6个意图标签对应的话术变体(每个至少3条)
SCRIPTS = { 'greeting': [ "您好!我是佑观智能助手,很高兴为您服务。", "嗨!有什么我可以帮您的吗?", "欢迎使用佑观智伴,随时告诉我您的需求!", "你好呀!今天想聊点什么?", "Greetings! 我是你的AI伙伴,有啥事儿尽管说~" ], 'product': [ "佑观智伴是一款AI陪伴硬件+桌面版App,支持语音交互和智能提醒功能。", "我们的核心产品是智能陪伴助手,可以帮您管理日程、回答问题、提供情感陪伴。", "佑观智伴包含硬件设备和软件应用两部分,硬件负责采集数据,软件负责分析和推荐。" ], 'price': [ "目前基础版免费使用,高级功能套餐每月99元,包含更多智能服务。", "价格分三档:免费版、专业版(¥198/年)、企业版(定制报价)。", "具体资费请参考官网pricing页面,新用户首月体验价仅¥9.9!" ], 'aftersale': [ "售后支持7天无理由退换,30天内质量问题免费维修。", "如需退换货请联系客服邮箱:support@youguan.ai,工作日24小时内响应。", "我们的售后服务包括:远程诊断、上门维修、备件更换三种方式。" ], 'complaint': [ "非常抱歉给您带来不便!请详细描述遇到的问题,我们会立即处理。", "投诉已记录,工单号#%(ticket)s,预计2小时内回复解决方案。", "感谢您的反馈,我们已转交技术团队核查,稍后会有专人联系您。" ], 'chitchat': [ "今天天气不错呢!要不要聊聊最近发生的趣事?", "说到这个我想起个笑话:为什么程序员总是分不清万圣节和圣诞节?因为Oct 31 == Dec 25!", "您真幽默~ 不过我更擅长帮您解决问题,有什么需要帮忙的吗?" ] }
全局计数器(用于轮询变体)
_counter = {}
def get_script(intent: str, seed: Optional[int] = None) -> str: """根据意图获取话术,支持多轮轮询不同变体""" if not intent or intent not in SCRIPTS: intent = 'chitchat' # 兜底到闲聊
if intent not in _counter: _counter[intent] = 0
# 使用seed保证可复现性,否则自增计数器实现轮询 if seed is not None: idx = seed % len(SCRIPTS[intent]) else: idx = _counter[intent] % len(SCRIPTS[intent]) _counter[intent] += 1
return SCRIPTS[intent][idx]
def variants(intent: str) -> List[str]: """返回指定意图的全部话术变体""" if intent in SCRIPTS: return list(SCRIPTS[intent]) return []
if __name__ == '__main__': # 自测验证 g1 = get_script('greeting') g2 = get_script('greeting') assert len(g1) > 0, "问候语不应为空" assert g1 != g2, "连续调用应返回不同话术变体"
# 未知意图不抛异常 unknown_result = get_script('nonexistent_intent') assert unknown_result in SCRIPTS['chitchat'] or len(unknown_result) > 0
print("✅ 自测通过!")
前置调研:本模块基于项目已有的 m01_intent_router.py 架构设计,保持相同的数据结构与接口风格。
交接:文件已落盘至 `m02_script_lib.py`,可通过 `python -m py_compile m02_script_lib.py && python m02_script_lib.py` 验证运行。