Prompt Repetition
langchain4j-community-prompt-repetition 是一个可选的社区模块,为 LangChain4j 的两个集成点提供现成的提示词重复(prompt repetition)集成:
- AI Services 输入护栏(input guardrails)
- RAG 查询转换
它受论文 Prompt Repetition Improves Non-Reasoning LLMs 启发,该论文报告了在一系列非推理工作负载上的收益。在 LangChain4j 中,该模块通过框架原生组件暴露核心的重复输入转换,并为真实应用添加了保守的默认值。
该模块为实验性功能,效果取决于工作负载。在大规模推广前,请在你自己的提示词、模型与任务上验证。
它是什么
提示词重复会将文本改写为如下形式:
Q -> Q\nQ
在 LangChain4j 中,可以应用于两个不同位置:
- 在非 RAG 的 AI Services 调用之前,使用
PromptRepeatingInputGuardrail - 在高级 RAG 流水线的检索之前,使用
RepeatingQueryTransformer
对于 RAG,重复应仅应用于检索查询,而不应应用于发送给模型的最终增强提示词。
Maven 依赖
如果你已经在使用社区模块,建议导入社区 BOM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${latest version here}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后添加 prompt repetition 模块:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-prompt-repetition</artifactId>
</dependency>
也可以直接声明该模块:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-prompt-repetition</artifactId>
<version>${latest version here}</version>
</dependency>
组件
该模块提供三个主要 API:
PromptRepeatingInputGuardrail在调用模型前,重复符合条件的单文本用户输入RepeatingQueryTransformer在高级 RAG 流水线中重复检索查询PromptRepetitionPolicy包含两个集成点共用的重复规则
所有这些 API 都标记为 @Experimental。
非 RAG 用法
对于非 RAG 的 AI Services 调用,将 PromptRepeatingInputGuardrail 挂到 AiServices builder:
PromptRepetitionPolicy policy = PromptRepetitionPolicy.builder()
.mode(PromptRepetitionMode.AUTO)
.maxChars(8_000)
.build();
Assistant assistant = AiServices.builder(Assistant.class)
.chatModel(chatModel)
.inputGuardrails(new PromptRepeatingInputGuardrail(policy))
.build();
当你想在模型调用前改写用户输入,且不处理已增强的 RAG 提示词时,这是首选集成点。
RAG 用法
对于 RAG,仅重复检索查询:
PromptRepetitionPolicy policy = PromptRepetitionPolicy.builder()
.mode(PromptRepetitionMode.AUTO)
.maxChars(8_000)
.build();
RetrievalAugmentor retrievalAugmentor = DefaultRetrievalAugmentor.builder()
.queryTransformer(new RepeatingQueryTransformer(policy))
.build();
这样可将转换保留在检索阶段,避免在已注入检索内容后再次复制最终提示词。
模式
PromptRepetitionPolicy 支持三种模式:
NEVER:禁用重复ALWAYS:重复符合条件的输入AUTO:保守模式,会跳过已重复文本、非常长的输入,以及看起来要求显式推理的提示词
AUTO 是评估时最安全的起点。
安全性与约束
PromptRepeatingInputGuardrail仅改写符合条件的单文本用户输入- 它不适合作为多模态请求的主要集成点
- 默认情况下,当 RAG 增强已经发生时,该护栏会跳过请求
- 在 RAG 设置中,请使用
RepeatingQueryTransformer重复检索查询,而不是重复最终增强提示词 - 该模块为实验性功能,因此 API 与行为可能在未来版本中变化
何时使用
当你希望在 LangChain4j 中以现成方式应用提示词重复时使用本模块,而不是将其当作通用的默认提示词策略。
- 从
PromptRepetitionMode.AUTO开始 - 优先用于非推理或低推理工作负载
- 在你自己的提示词、模型与任务上用 A/B 测试评估
- 除非有明确理由放宽,否则保持默认安全约束
- 将改进视为依赖工作负载,而非保证收益