[DRAFT] ✨ 增加提示词优化功能 (#1356 重设计)#1624
Draft
cyfung1031 wants to merge 1 commit into
Draft
Conversation
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description / 描述
由于这功能尚未得到CodFrm接受,故只留作 Draft PR 形式保存。
由 GPT-5.6 Sol 重构的设计,改进了旧设计不少的问题。
可供參考 (未參考)
旧 PR #1356 中 值得移植到这 PR 的 内容 (未移植)
旧 PR #1356 中,真正值得移植到
pr-optimize-prompt-button的部分只有以下几项。1.
OPTIMIZE_PROMPT_SYSTEM中较严谨的改写规则来源:
值得移植的规则:
只补充消除歧义所必要的上下文
不要过度扩写或过度设计
对已经清楚的输入只做最小修改
保留使用者原始意图
使用与输入相同的语言
根据实际需要整理:
只输出优化结果,不加解释、前言或 Markdown fence
旧 PR 的关键原则是:
这三点目前分支的 system prompt 表达得不够明确,最值得补入。
2.
buildOptimizeUserPrompt()来源:
旧 PR 没有直接把使用者内容裸放进 message,而是先包裹:
值得移植的是:
但建议移植时改成更明确的标签:
并在 system prompt 写明:
3.
extractOptimized()来源:
这是旧 PR 中最值得直接移植的程式逻辑。
功能包括:
优先提取
<optimized>标签例如模型回传:
最后只会取出标签内的内容。
清理 Markdown code fence
可处理模型不遵从指示而输出:
清理残留的
<optimized>标签模型不遵从格式时 fallback 到全文
即使模型没有正确输出
<optimized>,仍然可以得到清理后的文字,而不是直接失败。建议移植成:
然后目前 service 不再直接使用:
而改成:
目前分支只做
.trim(),因此模型输出的前言、标签或 code fence 都可能直接进入输入框。4.
<optimized>输出契约来源同样是:
旧 PR 要求模型:
值得移植的不是特定 XML 名称,而是「明确且可解析的输出契约」。
建议沿用:
好处:
5. 对 optimizer 原始串流内容保持静默的概念
来源:
旧 PR 使用:
目的是避免 UI 看见:
<optimized>标签目前分支的
PromptOptimizerService已经用空 callback:所以实际程式码不用移植,但这个设计原则应保留:Prompt Optimizer 不需要把 token stream 直接呈现给 UI。
6. 为解析逻辑补测试
旧 PR 本身没有完整提供这部分测试,但既然移植
extractOptimized(),应一并加入以下测试:目前分支已有空输入、空回应及取消测试,但没有覆盖格式解析。
建议实际移植清单
新增档案
放入:
修改档案
修改三个地方:
修改测试
加入:
<optimized>提取最终优先顺序
extractOptimized()buildOptimizeUserPrompt()的输入边界<optimized>可解析输出契约