[Bug] 对于固定到预设提示词的消息,出现如下问题:①发送时遗漏固定的系统提示词有所遗漏;②无法自动删除固定的系统提示词消息,导致重复发送。
#5485 opened on Sep 21, 2024
Description
📦 部署方式
Vercel
📌 软件版本
v2.15.2
💻 系统环境
Windows
📌 系统版本
Windows 11 Home
🌐 浏览器
Chrome
📌 浏览器版本
128.0.6613.138 (Stable)
🐛 问题描述
- 系统提示词遗漏:对于多条系统提示词,在实际请求中发现只保留了最后两条。
- 系统提示词固定至预设提示词后,不会自动删除,并且会出现请求中,导致没有意义的token占用。
📷 复现步骤
1. 系统提示词遗漏
对于多条系统提示词,在实际请求中发现只保留了最后两条,示例如下:
【编辑消息记录界面】
system : 接下来我会要求你分析文章并回答我提出的问题。 system : 请你根据文章用中文回答我的问题。 system : 回答问题时,应当尽可能以英文原文的文本作为依据。 system : 回答问题时,应当尽可能给出英文原文的出处。
【请求 - messages 部分】
{'role': 'system', 'content': '回答问题时,应当尽可能以英文原文的文本作为依据。'}, {'role': 'system', 'content': '回答问题时,应当尽可能给出英文原文的出处。'}, ...
2. 系统提示词固定后,存在没有意义的token占用
系统提示词固定至预设提示词后,不会自动删除,并且会出现请求中,示例:
【聊天界面 - 固定前】
system : 接下来我会要求你分析文章并回答我提出的问题。 system : 请你根据文章用中文回答我的问题。 system : 回答问题时,应当尽可能以英文原文的文本作为依据。 system : 回答问题时,应当尽可能给出英文原文的出处。
【请求 - messages 部分】
{'role': 'system', 'content': '回答问题时,应当尽可能以英文原文的文本作为依据。'}, {'role': 'system', 'content': '回答问题时,应当尽可能给出英文原文的出处。'}, ...
【聊天界面 - 固定后】
system : 接下来我会要求你分析文章并回答我提出的问题。 system : 请你根据文章用中文回答我的问题。 system : 回答问题时,应当尽可能以英文原文的文本作为依据。 system : 回答问题时,应当尽可能给出英文原文的出处。 system : 接下来我会要求你分析文章并回答我提出的问题。 system : 请你根据文章用中文回答我的问题。 system : 回答问题时,应当尽可能以英文原文的文本作为依据。 system : 回答问题时,应当尽可能给出英文原文的出处。
【请求 - messages 部分】
{'role': 'system', 'content': '接下来我会要求你分析文章并回答我提出的问题。'}, {'role': 'system', 'content': '请你根据文章用中文回答我的问题。'}, {'role': 'system', 'content': '回答问题时,应当尽可能以英文原文的文本作为依据。'}, {'role': 'system', 'content': '回答问题时,应当尽可能给出英文原文的出处。'}, {'role': 'system', 'content': '回答问题时,应当尽可能以英文原文的文本作为依据。'}, {'role': 'system', 'content': '回答问题时,应当尽可能给出英文原文的出处。'}, ...
🚦 期望结果
情形一、避免出现漏发情况:不论有几条系统提示词,均保证在请求中发送。 情形二、在固定系统提示词后能自动从聊天中删除,避免重复。
📝 补充信息
理由
系统提示词在实际使用中可能会被分次、不断地补充、完善,但是没有在上下文与系统提示词中反复出现的必要。 当系统提示词数目较多时,Next Chat 不会发送所有的系统提示词,尝试数次请求之后发现保留的是最末两条系统提示词。这会使得系统提示词在补充之后不够理想,尤其是当前面的提示词段落较长,不方便寻找需要修改的位置的时候。 如果发送所有的系统提示词被认为是一个可选而非必要的手段,建议实现在固定后自动删除固定的系统提示词,更充分地利用有限地上下文token,另外也能简化操作,避免手动删除固定后的系统提示词,尤其是当系统提示词较长或较多时。