This module includes optional prompt repetition components.
Prompt repetition rewrites:
Q -> Q\nQ
Use it only where it helps your workload.
PromptRepeatingInputGuardrailfor non-RAG user input.RepeatingQueryTransformerfor RAG retrieval queries.PromptRepetitionPolicyshared by both.
NEVER: disable.ALWAYS: repeat when eligible.AUTO: conservative mode:- skip already repeated input
- skip very long input (
maxChars) - skip reasoning-intent prompts (
reasoningKeywords)
PromptRepetitionPolicy policy = PromptRepetitionPolicy.builder()
.mode(PromptRepetitionMode.AUTO)
.maxChars(8_000)
.build();
Assistant assistant = AiServices.builder(Assistant.class)
.chatModel(chatModel)
.inputGuardrails(new PromptRepeatingInputGuardrail(policy))
.build();Repeat the retrieval query only. Do not repeat the full augmented prompt.
PromptRepetitionPolicy policy = PromptRepetitionPolicy.builder()
.mode(PromptRepetitionMode.AUTO)
.maxChars(8_000)
.build();
RetrievalAugmentor augmentor = DefaultRetrievalAugmentor.builder()
.queryTransformer(new RepeatingQueryTransformer(policy))
.build();- Input guardrail rewrites only single-text user messages.
- Input guardrail skips by default when RAG augmentation is detected.
- Idempotence is built in:
- first pass:
Q -> Q\nQ - repeated pass:
SKIPPED_ALREADY_REPEATED
- first pass:
- Start with
AUTO. - Keep
maxCharsconservative. - Tune
reasoningKeywordsfor your workload. - Track apply/skip reasons during A/B evaluation.