openJiuwen DeepSearch 同义缩写 Prompt 深度解析:synonym_rewrite_shorten 模板与改写链路

发布时间:2026/10/13 6:03:58
openJiuwen DeepSearch 同义缩写 Prompt 深度解析:synonym_rewrite_shorten 模板与改写链路 人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体【免费下载链接】deepsearchopenJiuwen DeepSearch是一款知识增强的深度搜索与研究框架有业界领先的片段级引用和溯源推理能力提供精准Agentic搜索与研究能力项目地址https://gitcode.com/openJiuwen/deepsearch点击查看免费下载导读本文聚焦 openJiuwen DeepSearch 用户反馈处理模块中的同义改写能力以synonym_rewrite_shorten提示模板user.md 与 system.md为核心剖析其 Prompt 结构、输入契约、缩写质量约束以及从前端shorten动作到 LLM 改写、再到报告区间替换的完整实现链路。读者读完本文后既能掌握该模板的设计意图与可复用规范也能结合源码定位同义改写各环节的调用关系与测试验证方法。一、模板在系统中的定位1.1 同义改写三兄弟expand / shorten / polish在 openJiuwen DeepSearch 中报告生成完成后用户仍可对选中文本执行三类同义改写动作前端 action提示模板目录语义expandsynonym_rewrite_expand/扩写在保持原意与事实边界的前提下充实表达shortensynonym_rewrite_shorten/缩写压缩冗余表达保留核心观点与结论方向polishsynonym_rewrite_polish/润色优化措辞与句法信息量基本不变三者由 action_definitions.py 中的SynonymRewriteActionSubcategory枚举定义并在SynonymRewriter.ACTION_TO_PROMPT映射表中完成动作到模板目录名的转换ACTION_TO_PROMPT { expand: synonym_rewrite_expand, polish: synonym_rewrite_polish, shorten: synonym_rewrite_shorten, }1.2 模板的目录与文件组织每个提示模板目录都遵循统一约定存放两个文件system.md系统角色与行为规范描述模型应扮演的角色、缩写/改写原则与输出要求user.md用户侧输入模板使用 Jinja2 语法声明输入变量定义“把什么交给模型”的结构。synonym_rewrite_shorten目录即由 system.md 与 user.md 组成两者配对构成一次完整调用中的 system user 消息。二、user.md输入模板逐行解读synonym_rewrite_shorten/user.md全文如下# Input - Requested language: {{ language }} {% if user_instruction %}- [Top Priority] Special user instruction: {{ user_instruction }}{% endif %} # Source Text {{ original_text }}2.1 三个模板输入变量变量必填性含义与来源language必填报告语言如zh-CN、en-US由前端反馈处理时传入的language参数透传user_instruction可选用户补充指令通过feedback.get(user_instruction, )获取为空时整段条件分支不渲染original_text必填待缩写的原始文本是模型改写的唯一事实来源变量契约由 message_builder.py 的build_prompt_messages驱动渲染并在 test_deepresearch_prompt_contracts.py 中以契约形式固化synonym_rewrite_shorten: (language, original_text, user_instruction),其中user_instruction被标记为可选变量_OPTIONAL_VARIABLES中包含synonym_rewrite_shorten: {user_instruction}与模板中{% if user_instruction %}的条件渲染逻辑严格对应。2.2 模板设计的三个关键语义显式声明目标语言Requested language让模型输出语言与报告语言保持一致避免缩写后出现语码混杂。用户指令最高优先级[Top Priority]前缀明确告知模型当用户补充指令与通用缩写原则冲突时以用户指令为先。原文是唯一事实边界# Source Text部分只注入original_text从输入端就约束模型“只能压缩既有内容不得引入外部事实”。三、system.md缩写规范的 12 条核心约束synonym_rewrite_shorten/system.md定义了角色与完整行为规范可归纳为以下维度3.1 角色定位You are a rigorous assistant for shortening research-style text.模型被定义为“严谨的学术研究文本缩写助手”任务是压缩冗余表达同时保留核心观点、关键支撑、约束条件与结论方向使结果更简洁、聚焦、可读。3.2 缩写的第一性目标The primary goal of shortening is to compress redundancy, not to sacrifice key information in exchange for a shorter length.这是整套规范的基石缩写的第一目标永远是压缩冗余而非牺牲信息。任何以信息损失为代价换取篇幅缩短的做法都被明确禁止。3.3 信息保留清单不可删除项核心观点essential viewpoints关键支撑key support逻辑关系logical relationships结论方向conclusion direction约束、前提、适用范围、例外以及结论所依赖的依据Do not remove constraints, preconditions, scope, exceptions, or the basis on which the conclusion depends注意最后一条是研究类文本缩写最容易出错的点。科学表达中常见的“在 X 条件下”“仅当……时”“除……外”等限定语在缩写时必须原样保留否则会改变结论的适用范围。3.4 可压缩对象可以压缩的是示例、解释性内容和修饰性描述但不能删除支撑主论断所必需的关键信息。允许压缩但不允许消除信息语义是“压缩表达”与“删内容”的本质区别。3.5 事实边界禁止添加Do not add facts, data, cases, citations, or conclusions that are not provided in the source text.缩写是“减法”操作禁止为原文补充任何事实、数据、案例、引用或结论。所有未在原文中出现的增量信息均不得产生。3.6 结论强度守恒Do not create stronger conclusions than the original through overgeneralization, and do not compress cautious wording into absolute judgments.缩写不得通过过度概括使结论变强也不得把谨慎措辞压缩成绝对判断。例如原文的“可能”“初步表明”等限定词不可因缩写而被抹去。3.7 结构保序Preserve the source texts basic logical order; do not disrupt the hierarchy of emphasis when shortening.缩写要保持原文基本逻辑顺序与重点层级不得为了紧凑而重排段落结构或颠倒主次。3.8 篇幅目标The shortened text should usually be about 50%-70% of the original, but if the original is already very compact, prioritize informational completeness over mechanical compression.常规目标缩写后约为原文的50%–70%例外当原文已高度紧凑时信息完整性优先于机械压缩不强行凑比例。这一条体现了规范的反教条倾向比例只是参考基准不是硬性 KPI。3.9 输出语言与引用纪律按用户输入中请求的语言输出不添加任何引用标记或参考注记Do not add citation markers or reference annotations。后者与后端设计高度一致选区内的 citation / inference 标记由 report_edit_utils.py 在调用模型前剥离因此模板明确禁止模型自行生成引用标记避免与既有溯源体系产生双重引用。3.10 输出格式要求Output only the shortened text directly. Do not include any prefatory note, process analysis, self-check, or closing explanation.模型只能输出纯缩写文本本身不允许前置说明、过程分析、自检或结尾解释。这保证了返回结果可以直接替换原选区无需额外清洗。四、源码级实现链路从 shorten 动作到报告替换4.1 动作路由与校验前端以 JSON 形式提交反馈由 user_feedback_processor.py 的UserFeedbackProcessor处理parse_feedback将 JSON 字符串解析为字典补齐默认字段validate/validate_basic校验selected_text、start_offset、end_offset与报告正文逐字对齐report_content[start_offset:end_offset] ! selected_text时报OFFSET_MISMATCH错误validate_by_action校验 action 白名单execute判断action in SYNONYM_REWRITE_ACTIONS后将控制权交给SynonymRewriter.synonym_rewrite。4.2 SynonymRewriter缩写执行的四个阶段核心实现位于 synonym_rewrite.py缩写shorten与扩写、润色共用同一套执行骨架阶段一剥离选区内的结构化标记stripped_text, _, _ strip_markup_in_range(report_content, start_offset, end_offset) removed_markup_len len(report_content) - len(stripped_text) stripped_end end_offset - removed_markup_len original_text_clean stripped_text[start_offset:stripped_end]strip_markup_in_range见 report_edit_utils.py使用正则识别三类标记checked citation[checked_citation:n][[m]](url)链接引用[[m]](url)普通引用[citation: n]inference 标记结论还原为纯文本并收集 ID这样模型拿到的original_text是纯文本既不会被[[n]](url)干扰改写也不会误改结构化引用。阶段二构造 Prompt 消息并调用 LLMcontext_vars { original_text: original_text, language: language, user_instruction: user_instruction, } messages build_prompt_messages(prompt_name, context_vars)build_prompt_messages从 prompts 根目录加载synonym_rewrite_shorten/system.md与user.md通过 Jinja2FileSystemLoader渲染产出[{role: system, ...}, {role: user, ...}]消息列表再经ainvoke_llm_with_stats带统计信息调用 LLM。阶段三拼接新报告并计算偏移new_report stripped_text[:start_offset] rewritten_text stripped_text[stripped_end:] rewritten_end_offset start_offset len(rewritten_text)返回值包含new_report、original_text、original_text_clean、rewritten_text、rewritten_start_offset、rewritten_end_offset等字段供前端按区间替换。阶段四可选的局部溯源UserFeedbackProcessor.execute中若enable_local_source_trace为 True改写结果还会进入apply_local_source_trace_to_action_result更新 citation关闭时直接返回改写结果参见 synonym-rewrite.md 的功能说明。4.3 一次 shorten 的完整请求示例以shorten为例前端反馈 JSON 形如{ action: shorten, selected_text: 需要精简的段落内容, start_offset: 4, end_offset: 14, user_instruction: 尽量压缩到一半篇幅 }后端处理流程parse_feedback → validateoffset 对齐 → SynonymRewriter.synonym_rewrite → strip_markup_in_range剥离 citation/inference → build_prompt_messages(synonym_rewrite_shorten, {original_text, language, user_instruction}) → LLM 返回纯文本缩写 → 拼接 new_report、计算 rewritten offsets → 可选局部溯源更新 citation → 流式回传前端4.4 流式结果契约改写成功后结果经UserFeedbackRewriteStreamResult定义于 action_definitions.py序列化为流式负载{ original_text: ..., original_start_offset: 4, original_end_offset: 14, rewritten_text: ..., rewritten_start_offset: 4, rewritten_end_offset: 10, action_category: synonym_rewrite, action_subcategory: shorten, feedback_interaction_count: 1 }前端据此按新区间直接替换旧选区。五、测试验证模板契约与行为保障5.1 Prompt 契约测试test_deepresearch_prompt_contracts.py 对全仓库 Prompt 做统一契约校验system.md不允许出现运行时变量test_prompt_contract断言system_vars set()user.md的变量集合必须与声明的契约完全一致synonym_rewrite_shorten的契约被注册为(language, original_text, user_instruction)其中user_instruction为可选。这意味着任何改动模板变量而不同步契约的提交都会被 CI 拦截。5.2 同义改写行为测试test_rewrite.py 覆盖的关键场景包括ACTION_TO_PROMPT与SYNONYM_REWRITE_ACTIONS集合完全一致get_prompt_name(shorten) synonym_rewrite_shorten未知 action 抛出USER_FEEDBACK_PROCESSOR_INVALID_ACTION异常剥离选区内的 citation 标记、保留选区外与未选中的重复引用实例test_synonym_rewrite_keeps_unselected_duplicate_reference_instances保留选区外的 inference 元数据test_synonym_rewrite_preserves_inference_messages缩写后选区外尾部 citation 偏移不变test_synonym_rewrite_preserves_trailing_citation_offsets。5.3 推荐运行命令uv run pytest tests/algorithm/prompts/test_deepresearch_prompt_contracts.py uv run pytest tests/user_feedback_processor/test_rewrite.py如改动涉及局部溯源接入还应运行uv run pytest tests/user_feedback_processor/test_local_source_trace.py六、给提示模板使用者的实践建议不要为shorten提供外部资料模板只接受original_text作为事实来源若需要在缩写的同时补充信息应走supplementary_search链路而非同义改写。user_instruction是最高优先级指令可传入“压缩到 200 字以内”“保留所有数字与年份”等定向约束但需注意不得与模板的“禁止添加事实”冲突。依赖选区清理机制无需在提示中要求处理引用citation / inference 由后端统一剥离模型侧只需遵守“不输出引用标记”。缩写比例是软约束50%–70% 是常规目标原文已高度紧凑时模板明确要求信息完整性优先不宜对极短文本机械压比。定制新模板时保持契约一致若修改system.md/user.md须同步更新 test_deepresearch_prompt_contracts.py 中的_PROMPT_VARIABLES与_OPTIONAL_VARIABLES并确保system.md保持无运行时变量。延伸阅读同义改写功能文档覆盖同义改写的维护范围、核心流程、数据契约与边界处理用户反馈处理总览同义改写在用户反馈整体框架中的位置局部溯源改写后 citation 更新机制提示模板构建器Jinja2 渲染与变量校验实现动作定义expand/shorten/polish的动作映射赞分享人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体【免费下载链接】deepsearchopenJiuwen DeepSearch是一款知识增强的深度搜索与研究框架有业界领先的片段级引用和溯源推理能力提供精准Agentic搜索与研究能力项目地址https://gitcode.com/openJiuwen/deepsearch点击查看免费下载相关推荐openJiuwen DeepSearch 同义改写润色 Prompt 模板解析synonym_rewrite_polish 的设计、渲染与调用链路openJiuwen DeepSearch 同义改写润色 Prompt 模板解析synonym_rewrite_polish 的设计、渲染与调用链路 本篇技术人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体OpenJiuwen DeepSearch 同义缩写提示词解析synonym_rewrite_shorten 的设计原则与完整调用链路OpenJiuwen DeepSearch 同义缩写提示词解析 synonym_rewrite_shorten 的设计原则与完整调用链路 本文聚焦 openJ人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体openJiuwen DeepSearch 同义改写能力解析从前端 expand/shorten/polish 到 SynonymRewriter 的完整链路openJiuwen DeepSearch 同义改写能力解析从前端 expand/shorten/polish 到 SynonymRewriter 的完整链路人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体上一篇Twake Drive性能优化技巧提升文件处理速度下一篇告别PPT排版混乱PPTist网格系统如何实现像素级对齐创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询