Browse Source

fix(app): 修复推荐问题显示哨兵标记异常

SuggestionResponseParser 剥离旧版 ___SUGGESTIONS___ 哨兵标记,避免按行降级解析成垃圾条目;同步更新 suggestion_prompt 种子默认值,移除与新架构"只输出 JSON 数组"要求矛盾的哨兵文案
Spring-AI-1.1.2
wanghanlin 3 weeks ago
parent
commit
0aa11a5ec6
  1. 9
      src/main/java/com/wok/supportbot/app/SuggestionResponseParser.java
  2. 14
      src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java
  3. 12
      src/main/resources/init-database.sql

9
src/main/java/com/wok/supportbot/app/SuggestionResponseParser.java

@ -194,6 +194,15 @@ public final class SuggestionResponseParser {
// 1. 尝试标准 JSON 解析 // 1. 尝试标准 JSON 解析
String trimmed = jsonPart.strip(); String trimmed = jsonPart.strip();
// 剥离旧版哨兵标记___SUGGESTIONS___ 及兼容大写变形取哨兵后的 JSON 部分
// 旧版 suggestion_prompt 会要求模型输出哨兵若未剥离会被按行降级解析成垃圾条目
int sentinelIdx = findSentinelIndex(trimmed);
if (sentinelIdx >= 0) {
int matchedLen = trimmed.startsWith(SENTINEL, sentinelIdx)
? SENTINEL.length()
: LOOSE_SENTINEL.length();
trimmed = trimmed.substring(sentinelIdx + matchedLen).strip();
}
// 去掉可能的 markdown 代码块包裹 // 去掉可能的 markdown 代码块包裹
trimmed = trimCodeBlock(trimmed); trimmed = trimCodeBlock(trimmed);

14
src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java

@ -1384,18 +1384,10 @@ public class DatabaseInitConfig {
""", "ai_system_prompt", "", "AI 对话全局系统提示词为空则不注入修改后即时生效无需重启"); """, "ai_system_prompt", "", "AI 对话全局系统提示词为空则不注入修改后即时生效无需重启");
// AI 推荐问题suggest-message-list种子数据 // AI 推荐问题suggest-message-list种子数据
// 格式要求由 SuggestionGenerator.buildPrompt 统一追加此处仅提供基础文案
// 不再要求模型输出 ___SUGGESTIONS___ 哨兵标记避免与新架构"只输出 JSON 数组"要求矛盾
String defaultSuggestionPrompt = """ String defaultSuggestionPrompt = """
推荐问题生成规则
在回答正文结束后请严格按以下格式生成 3 条用户可能继续追问的推荐问题
___SUGGESTIONS___
["推荐问题1", "推荐问题2", "推荐问题3"]
要求
1. 推荐问题需与当前回答内容相关覆盖用户可能关心的不同方面
2. 推荐问题是用户可直接点击发送的完整问题文本
3. 必须是合法的 JSON 字符串数组
4. ___SUGGESTIONS___ 是分隔标记不要在回答正文中出现此标记
请根据历史对话生成 3 条用户最可能继续提问的推荐问题
"""; """;
jdbcTemplate.update(""" jdbcTemplate.update("""

12
src/main/resources/init-database.sql

@ -803,17 +803,7 @@ ON CONFLICT (config_key) DO NOTHING;
INSERT INTO system_config (config_key, config_value, description) INSERT INTO system_config (config_key, config_value, description)
VALUES ('suggestion_prompt', VALUES ('suggestion_prompt',
'【推荐问题生成规则】
3
___SUGGESTIONS___
["推荐问题1", "推荐问题2", "推荐问题3"]
1.
2.
3. JSON
4. ___SUGGESTIONS___ ',
'请根据历史对话,生成 3 条用户最可能继续提问的推荐问题。',
'AI 推荐问题 Prompt 模板(仅在 suggestion_enabled=true 时生效)') 'AI 推荐问题 Prompt 模板(仅在 suggestion_enabled=true 时生效)')
ON CONFLICT (config_key) DO NOTHING; ON CONFLICT (config_key) DO NOTHING;

Loading…
Cancel
Save