提示词增强
This commit is contained in:
@@ -271,9 +271,42 @@ llama-index-llms-ollama>=0.1.0
|
|||||||
- 通过 `.aiconfig` 指令修改配置时,实时保存到文件
|
- 通过 `.aiconfig` 指令修改配置时,实时保存到文件
|
||||||
- ChatEngine 创建时从配置文件加载配置
|
- ChatEngine 创建时从配置文件加载配置
|
||||||
|
|
||||||
# 当前执行步骤:"2. 创新模式 - 方案决策完成"
|
# 当前执行步骤:"4. 执行模式 - 代码实施完成并测试通过"
|
||||||
|
|
||||||
# 任务进度
|
# 任务进度
|
||||||
|
|
||||||
|
## [2025-10-29_23:55:08] 执行阶段完成
|
||||||
|
- 已修改:
|
||||||
|
- requirements.txt:添加 llama-index-core 和 llama-index-llms-ollama 依赖
|
||||||
|
- data/ai_config.json:创建默认配置文件
|
||||||
|
- utils/parser.py:添加 .ai 和 .aiconfig 指令映射和解析逻辑
|
||||||
|
- games/ai_chat.py:创建完整的 AI 对话模块实现
|
||||||
|
- routers/callback.py:添加 ai_chat 处理分支
|
||||||
|
- games/base.py:添加 AI 对话帮助信息
|
||||||
|
- 更改:
|
||||||
|
- 实现了基于 llama_index 和 Ollama 的 AI 对话功能
|
||||||
|
- 实现了固定10秒等待窗口的延迟回答机制
|
||||||
|
- 实现了用户角色映射和长上下文管理
|
||||||
|
- 实现了配置文件的 JSON 存储和管理
|
||||||
|
- 原因:按照计划实施 AI 对话功能的所有核心组件
|
||||||
|
- 阻碍因素:无
|
||||||
|
- 状态:成功
|
||||||
|
|
||||||
|
## [2025-10-30_00:56:44] 功能优化和问题修复
|
||||||
|
- 已修改:
|
||||||
|
- games/ai_chat.py:优化错误处理和用户体验
|
||||||
|
1. 移除收到消息后的确认回复(静默处理)
|
||||||
|
2. 修复转义字符警告(SyntaxWarning)
|
||||||
|
3. 改进错误处理,提供详细的调试信息和排查步骤
|
||||||
|
4. 添加超时设置(120秒)
|
||||||
|
5. 针对NPS端口转发的特殊错误提示
|
||||||
|
- 更改:
|
||||||
|
- 优化了错误提示信息,包含当前配置、测试命令和详细排查步骤
|
||||||
|
- 专门针对NPS端口转发场景添加了Ollama监听地址配置说明
|
||||||
|
- 改进了连接错误的诊断能力
|
||||||
|
- 原因:根据实际使用中发现的问题进行优化
|
||||||
|
- 阻碍因素:无
|
||||||
|
- 状态:成功
|
||||||
|
|
||||||
# 最终审查
|
# 最终审查
|
||||||
|
|
||||||
|
|||||||
@@ -305,12 +305,8 @@ class AIChatGame(BaseGame):
|
|||||||
# 创建ChatMemoryBuffer(设置足够的token_limit确保保留30+轮对话)
|
# 创建ChatMemoryBuffer(设置足够的token_limit确保保留30+轮对话)
|
||||||
memory = ChatMemoryBuffer.from_defaults(token_limit=8000)
|
memory = ChatMemoryBuffer.from_defaults(token_limit=8000)
|
||||||
|
|
||||||
# 系统提示
|
# 从配置文件加载系统提示词(如果存在),否则使用默认值并保存
|
||||||
system_prompt = (
|
system_prompt = self._get_system_prompt()
|
||||||
"这是一个多用户对话场景,不同用户的发言会用不同的角色标识(如'用户1'、'用户2'等)。"
|
|
||||||
"你需要理解不同用户的发言内容,并根据上下文给出合适的回复。"
|
|
||||||
"请用自然、友好的方式与用户交流。"
|
|
||||||
)
|
|
||||||
|
|
||||||
# 创建对话引擎
|
# 创建对话引擎
|
||||||
# 由于llama_index的API可能在不同版本有变化,这里使用基本的chat接口
|
# 由于llama_index的API可能在不同版本有变化,这里使用基本的chat接口
|
||||||
@@ -388,6 +384,66 @@ class AIChatGame(BaseGame):
|
|||||||
|
|
||||||
return user_mapping, user_count
|
return user_mapping, user_count
|
||||||
|
|
||||||
|
def _get_default_system_prompt(self) -> str:
|
||||||
|
"""获取默认系统提示词
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
默认系统提示词
|
||||||
|
"""
|
||||||
|
return (
|
||||||
|
"你是WPS游戏机器人的AI助手,这是一个多功能的游戏和娱乐机器人系统。"
|
||||||
|
"这是一个多用户对话场景,不同用户的发言会用不同的角色标识(如'用户1'、'用户2'等)。"
|
||||||
|
"你需要理解不同用户的发言内容,并根据上下文给出合适的回复。"
|
||||||
|
"\n\n"
|
||||||
|
"**你的身份和职责:**\n"
|
||||||
|
"1. 你是WPS协作平台的游戏机器人AI助手\n"
|
||||||
|
"2. 你可以帮助用户了解和使用机器人的各种功能\n"
|
||||||
|
"3. 你可以回答用户的问题,提供游戏指导和建议\n"
|
||||||
|
"4. 当用户询问功能时,主动推荐相关游戏和功能\n"
|
||||||
|
"\n\n"
|
||||||
|
"**机器人支持的功能:**\n"
|
||||||
|
"1. 🎲 骰娘系统:`.r XdY` - 掷骰子游戏\n"
|
||||||
|
"2. ✊ 石头剪刀布:`.rps 石头/剪刀/布` - 对战游戏\n"
|
||||||
|
"3. 🔮 运势占卜:`.fortune` 或 `.运势` - 查看今日运势\n"
|
||||||
|
"4. 🔢 猜数字:`.guess start` - 开始猜数字游戏\n"
|
||||||
|
"5. 📝 问答游戏:`.quiz` - 回答问题挑战\n"
|
||||||
|
"6. 🀄 成语接龙:`.idiom start` - 成语接龙游戏\n"
|
||||||
|
"7. ⚫ 五子棋:`.gomoku challenge` - 发起五子棋对战\n"
|
||||||
|
"8. 💎 积分系统:`.points` - 查看积分,`.checkin` - 每日签到\n"
|
||||||
|
"9. ⚗️ 炼金系统:`.alchemy` - 消耗积分进行炼金\n"
|
||||||
|
"10. ⚡️ 冒险系统:`.adventure` - 消耗时间进行冒险\n"
|
||||||
|
"11. 🎁 积分赠送:`.gift <用户ID> <积分>` - 赠送积分给其他用户\n"
|
||||||
|
"12. 📊 统计信息:`.stats` - 查看个人游戏统计\n"
|
||||||
|
"13. ❓ 帮助信息:`.help` - 查看完整的帮助文档\n"
|
||||||
|
"\n\n"
|
||||||
|
"**回复指南:**\n"
|
||||||
|
"- 用自然、友好、热情的方式与用户交流\n"
|
||||||
|
"- 当用户不知道玩什么时,主动推荐适合的游戏\n"
|
||||||
|
"- 详细解释功能的使用方法和规则\n"
|
||||||
|
"- 鼓励用户尝试不同的游戏和功能\n"
|
||||||
|
"- 如果是多人场景,可以推荐适合多人参与的游戏(如成语接龙、五子棋)\n"
|
||||||
|
"- 记住用户的偏好和之前的对话内容,提供个性化建议\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
def _get_system_prompt(self) -> str:
|
||||||
|
"""获取系统提示词(从配置文件加载,如果不存在则使用默认值并保存)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
系统提示词
|
||||||
|
"""
|
||||||
|
config = self._load_config()
|
||||||
|
|
||||||
|
# 如果配置中存在系统提示词,直接返回
|
||||||
|
if 'system_prompt' in config and config['system_prompt']:
|
||||||
|
return config['system_prompt']
|
||||||
|
|
||||||
|
# 否则使用默认值并保存到配置文件
|
||||||
|
default_prompt = self._get_default_system_prompt()
|
||||||
|
config['system_prompt'] = default_prompt
|
||||||
|
self._save_config(config)
|
||||||
|
|
||||||
|
return default_prompt
|
||||||
|
|
||||||
def _load_config(self) -> Dict[str, Any]:
|
def _load_config(self) -> Dict[str, Any]:
|
||||||
"""从JSON文件加载配置
|
"""从JSON文件加载配置
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user