prompt-repetition

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Prompt Repetition (프롬프트 반복)

Prompt Repetition(提示词重复)

해결하는 문제 (Problem)

解决的问题

LLM은 Causal Language Model로 학습되어 각 토큰이 이전 토큰만 참조합니다. 이로 인해:
  1. Context-Question 문제: Context 처리 시 아직 Question을 알 수 없음
  2. Options-First MCQ 문제: 선택지를 볼 때 질문의 맥락을 완전히 이해 못함
  3. Position/Index 문제: 긴 리스트에서 특정 위치 정보에 대한 어텐션 가중치 약화
프롬프트 반복은 두 번째 패스에서 첫 번째 패스 전체를 참조할 수 있게 하여, 마치 양방향 어텐션의 일부 이점을 모방하는 효과를 얻습니다.

LLM是Causal Language Model,训练时每个token仅参考之前的token,由此导致以下问题:
  1. 上下文-问题矛盾:处理上下文时还未获取到问题信息
  2. 选项优先型MCQ问题:查看选项时无法完全理解问题语境
  3. 位置/索引问题:长列表中针对特定位置信息的注意力权重被弱化
提示词重复可让第二次处理流程参考第一次的全部内容,从而获得类似双向注意力机制的部分效果

When to use this skill

何时使用该技巧

  • 경량 모델 사용 시: claude-haiku, gemini-flash, gpt-4o-mini 등
  • Options-First MCQ: 선택지가 질문보다 먼저 나오는 객관식
  • Context + Question: 긴 컨텍스트에서 특정 정보 검색
  • Index/Position Tasks: 인벤토리, 리스트에서 위치 기반 쿼리
  • NPC Dialogue: 게임 AI 캐릭터 일관성 유지
  • 비추론 작업: Chain-of-Thought 미사용 작업

  • 使用轻量模型时:claude-haiku、gemini-flash、gpt-4o-mini等
  • 选项优先型客观题:选项早于问题出现的选择题
  • 上下文+问题场景:长上下文中的特定信息检索
  • 索引/位置类任务:库存、列表中的位置查询
  • NPC对话:维持游戏AI角色的一致性
  • 非推理任务:不使用Chain-of-Thought(CoT)的任务

작동 원리

工作原理

기존 Causal Attention의 한계

传统因果注意力的局限

[Context] → [Question]
Context 토큰 처리 시 Question 내용을 참조 불가
Question 토큰이 나타날 때는 Context에 대한 어텐션 가중치 결정 완료
[Context] → [Question]
处理Context token时无法参考Question内容
Question token出现时,对Context的注意力权重已确定

프롬프트 반복의 해결 방식

提示词重复的解决方案

[First Pass]                [Second Pass]
Context → Question    →    Context' → Question'
                              ↑         ↑
                          첫 번째 패스 전체 참조 가능
두 번째 반복에서 모델이 첫 번째 프롬프트 전체에 걸쳐 정보를 다시 처리하고, 주요 개념에 대한 어텐션 가중치를 강화함으로써 성능이 개선됩니다.
주의: 이는 모델 아키텍처를 양방향으로 변경하는 것이 아니라, Causal 모델의 한계를 프롬프트 엔지니어링으로 완화하는 기법입니다.

[第一次处理]                [第二次处理]
Context → Question    →    Context' → Question'
                              ↑         ↑
                          可参考第一次处理的全部内容
在第二次重复处理中,模型会重新处理第一次提示词的全部信息,并强化核心概念的注意力权重,以此提升性能。
注意:这并非将模型架构改为双向机制,而是通过提示词工程缓解因果模型的局限性。

연구 결과 (Google Research 2025)

研究结果(Google Research 2025)

지표결과
유의미한 개선 (p < 0.1)47 / 70 벤치마크
성능 저하0
중립23
개선 비율67%
가장 극적인 개선: Gemini 2.0 Flash-Lite on NameIndex: 21.33% → 97.33% (+76%p)
指标结果
显著提升(p < 0.1)47 / 70 项基准测试
性能下降0
无变化23
提升占比67%
最显著提升案例: Gemini 2.0 Flash-Lite 在NameIndex任务:21.33% → 97.33%(+76个百分点)

테스트된 모델

测试覆盖的模型

  • Gemini 2.0 Flash / Flash Lite
  • GPT-4o / GPT-4o-mini
  • Claude 3.7 Sonnet / Claude 3 Haiku
  • Deepseek V3
  • Gemini 2.0 Flash / Flash Lite
  • GPT-4o / GPT-4o-mini
  • Claude 3.7 Sonnet / Claude 3 Haiku
  • Deepseek V3

테스트된 벤치마크

测试覆盖的基准任务

  • ARC (Challenge) - 과학 추론
  • OpenBookQA - 오픈 도메인 QA
  • GSM8K - 수학 문제
  • MMLU-Pro - 다중 작업 언어 이해
  • MATH - 수학 문제 해결
  • NameIndex / MiddleMatch - 커스텀 Position 태스크

  • ARC (Challenge) - 科学推理
  • OpenBookQA - 开放域问答
  • GSM8K - 数学题
  • MMLU-Pro - 多任务语言理解
  • MATH - 数学解题
  • NameIndex / MiddleMatch - 自定义位置类任务

적용 절차

应用步骤

1단계: 자동 적용 대상 모델 확인

步骤1:确认自动适用的模型

Provider자동 적용 모델비적용 모델
Claudehaiku 계열opus, sonnet
Geminiflash, flash-litepro, ultra
OpenAIgpt-4o-mini, gpt-lowgpt-4o, gpt-4
服务商自动适用模型不适用模型
Claudehaiku系列opus、sonnet
Geminiflash、flash-litepro、ultra
OpenAIgpt-4o-mini、gpt-lowgpt-4o、gpt-4

2단계: 작업 유형별 반복 횟수 결정

步骤2:根据任务类型确定重复次数

작업 유형키워드 패턴반복 횟수예상 개선
Options-First MCQ
A. B. C. D.
선택지 먼저
2회+15-40%p
Index/Position
slot
,
position
,
index
,
번째
3회+50-76%p
Context + Question일반 질문2회+5-15%p
With CoT
step by step
,
think through
0회 (적용 안함)~0%
任务类型关键词模式重复次数预期提升幅度
选项优先型MCQ
A. B. C. D.
选项前置
2次+15-40个百分点
索引/位置类
slot
position
index
번째
3次+50-76个百分点
上下文+问题普通问题2次+5-15个百分点
搭配CoT使用
step by step
think through
0次(不适用)~0%

3단계: 토큰 제한 확인

步骤3:检查token限制

python
undefined
python
undefined

자동 적용 전 컨텍스트 체크

自动应用前的上下文检查

max_context = model_context_window * 0.8 # 80% 안전 마진 if len(prompt_tokens) * repetitions > max_context: repetitions = max(1, int(max_context / len(prompt_tokens)))
undefined
max_context = model_context_window * 0.8 # 80%安全余量 if len(prompt_tokens) * repetitions > max_context: repetitions = max(1, int(max_context / len(prompt_tokens)))
undefined

4단계: 프롬프트 변환

步骤4:转换提示词

python
def apply_prompt_repetition(prompt: str, times: int = 2) -> str:
    """프롬프트를 지정 횟수만큼 반복

    Args:
        prompt: 원본 프롬프트
        times: 반복 횟수 (기본 2회)

    Returns:
        반복된 프롬프트
    """
    if times <= 1:
        return prompt
    return "\n\n".join([prompt] * times)

python
def apply_prompt_repetition(prompt: str, times: int = 2) -> str:
    """将提示词重复指定次数

    Args:
        prompt: 原始提示词
        times: 重复次数(默认2次)

    Returns:
        重复后的提示词
    """
    if times <= 1:
        return prompt
    return "\n\n".join([prompt] * times)

실전 예제

实作示例

예제 1: Options-First MCQ (가장 큰 효과)

示例1:选项优先型MCQ(效果最显著)

Before:
A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.
After (반복 ×2 적용):
A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.

A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.
예상 출력:
A
정확도: 기존 78% → 반복 적용 후 93% (+15%p)

应用前:
A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.
应用后(重复2次):
A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.

A. Paris
B. London
C. Berlin
D. Madrid

Which city is the capital of France?
Reply with one letter.
预期输出:
A
准确率:原78% → 应用后93%(+15个百分点)

예제 2: Index/Position Tasks (최대 효과)

示例2:索引/位置类任务(提升幅度最大)

Before:
Inventory:
1. Iron Sword
2. Leather Armor
3. Health Potion (x5)
4. Magic Staff
...
25. Dragon Scale
...
50. Ancient Map

What item is in slot 25?
After (반복 ×3 적용): 프롬프트 3회 반복
예상 출력:
Dragon Scale
정확도: 기존 21% → 반복 적용 후 97% (+76%p)

应用前:
Inventory:
1. Iron Sword
2. Leather Armor
3. Health Potion (x5)
4. Magic Staff
...
25. Dragon Scale
...
50. Ancient Map

What item is in slot 25?
应用后(重复3次): 提示词重复3次
预期输出:
Dragon Scale
准确率:原21% → 应用后97%(+76个百分点)

예제 3: 툴 호출 프롬프트 처리

示例3:工具调用提示词处理

참고: 툴 호출 지시가 포함된 프롬프트도 전체가 반복됩니다. 구현의 단순성과 일관성을 위해 전체 반복 방식을 채택했습니다.
Before:
Use the calculator tool to compute 234 * 567.
What is the result?
After (반복 ×2):
Use the calculator tool to compute 234 * 567.
What is the result?

Use the calculator tool to compute 234 * 567.
What is the result?
연구 결과에 따르면 툴 호출 부분을 포함한 전체 반복도 효과적입니다.

注意:包含工具调用指令的提示词也需完整重复。为实现简洁性与一致性,采用全量重复方式。
应用前:
Use the calculator tool to compute 234 * 567.
What is the result?
应用后(重复2次):
Use the calculator tool to compute 234 * 567.
What is the result?

Use the calculator tool to compute 234 * 567.
What is the result?
研究结果显示,包含工具调用部分的全量重复同样有效。

Production-Ready 구현

生产级实现

자동 적용 변환기

自动应用转换器

python
"""prompt_repetition_transformer.py"""
from dataclasses import dataclass, field
from typing import Optional, Callable, List
import re
python
"""prompt_repetition_transformer.py"""
from dataclasses import dataclass, field
from typing import Optional, Callable, List
import re

모델별 컨텍스트 윈도우 (토큰 수)

各模型的上下文窗口(token数量)

MODEL_CONTEXT_WINDOWS = { "claude-3-haiku": 200_000, "claude-haiku": 200_000, "gemini-flash": 1_000_000, "gemini-flash-lite": 1_000_000, "gemini-2.0-flash": 1_000_000, "gpt-4o-mini": 128_000, "gpt-low": 128_000, }
MODEL_CONTEXT_WINDOWS = { "claude-3-haiku": 200_000, "claude-haiku": 200_000, "gemini-flash": 1_000_000, "gemini-flash-lite": 1_000_000, "gemini-2.0-flash": 1_000_000, "gpt-4o-mini": 128_000, "gpt-low": 128_000, }

자동 적용 대상 모델

自动应用的目标模型

AUTO_APPLY_MODELS = list(MODEL_CONTEXT_WINDOWS.keys())
AUTO_APPLY_MODELS = list(MODEL_CONTEXT_WINDOWS.keys())

CoT 패턴 (적용 제외)

CoT模式(不适用提示词重复)

COT_PATTERNS = [ r"step by step", r"think through", r"let's think", r"reasoning:", r"chain of thought", ]
COT_PATTERNS = [ r"step by step", r"think through", r"let's think", r"reasoning:", r"chain of thought", ]

Position/Index 패턴 (3회 반복)

位置/索引模式(重复3次)

POSITION_PATTERNS = [ r"slot \d+", r"position \d+", r"index \d+", r"\d+번째", r"item \d+", r"row \d+", r"column \d+", ]
@dataclass class PromptRepetitionConfig: """프롬프트 반복 설정""" default_repetitions: int = 2 position_repetitions: int = 3 separator: str = "\n\n" max_context_ratio: float = 0.8 applied_marker: str = "<!-- prompt-repetition-applied -->"
class PromptRepetitionTransformer: """경량 모델용 프롬프트 반복 자동 적용 변환기"""
def __init__(self, config: Optional[PromptRepetitionConfig] = None):
    self.config = config or PromptRepetitionConfig()

def should_apply(self, model: str, prompt: str) -> bool:
    """자동 적용 여부 결정"""
    # 이미 적용된 경우 스킵
    if self.config.applied_marker in prompt:
        return False

    # 대상 모델 확인
    model_lower = model.lower()
    if not any(m in model_lower for m in AUTO_APPLY_MODELS):
        return False

    # CoT 패턴 감지 시 스킵
    prompt_lower = prompt.lower()
    for pattern in COT_PATTERNS:
        if re.search(pattern, prompt_lower):
            return False

    return True

def determine_repetitions(self, prompt: str, model: str) -> int:
    """작업 유형에 따른 반복 횟수 결정"""
    prompt_lower = prompt.lower()

    # Position/Index 패턴 감지 → 3회
    for pattern in POSITION_PATTERNS:
        if re.search(pattern, prompt_lower):
            return self.config.position_repetitions

    return self.config.default_repetitions

def estimate_tokens(self, text: str) -> int:
    """간단한 토큰 수 추정 (정확도보다 속도 우선)"""
    # 평균적으로 4자 = 1토큰으로 추정
    return len(text) // 4

def transform(self, prompt: str, model: str) -> str:
    """프롬프트에 반복 적용"""
    if not self.should_apply(model, prompt):
        return prompt

    repetitions = self.determine_repetitions(prompt, model)

    # 컨텍스트 제한 체크
    model_lower = model.lower()
    max_tokens = 128_000  # 기본값
    for m, tokens in MODEL_CONTEXT_WINDOWS.items():
        if m in model_lower:
            max_tokens = tokens
            break

    max_allowed = int(max_tokens * self.config.max_context_ratio)
    prompt_tokens = self.estimate_tokens(prompt)

    # 토큰 제한 초과 시 반복 횟수 조정
    while prompt_tokens * repetitions > max_allowed and repetitions > 1:
        repetitions -= 1

    if repetitions <= 1:
        return prompt

    # 반복 적용 + 마커 추가
    repeated = self.config.separator.join([prompt] * repetitions)
    return f"{self.config.applied_marker}\n{repeated}"

def wrap_llm_call(self, llm_fn: Callable, model: str) -> Callable:
    """LLM 호출 함수 래핑"""
    def wrapped(prompt: str, **kwargs):
        transformed = self.transform(prompt, model)
        return llm_fn(transformed, **kwargs)
    return wrapped

---
POSITION_PATTERNS = [ r"slot \d+", r"position \d+", r"index \d+", r"\d+번째", r"item \d+", r"row \d+", r"column \d+", ]
@dataclass class PromptRepetitionConfig: """提示词重复配置""" default_repetitions: int = 2 position_repetitions: int = 3 separator: str = "\n\n" max_context_ratio: float = 0.8 applied_marker: str = "<!-- prompt-repetition-applied -->"
class PromptRepetitionTransformer: """轻量模型专用提示词重复自动应用转换器"""
def __init__(self, config: Optional[PromptRepetitionConfig] = None):
    self.config = config or PromptRepetitionConfig()

def should_apply(self, model: str, prompt: str) -> bool:
    """判断是否应自动应用"""
    # 已应用过则跳过
    if self.config.applied_marker in prompt:
        return False

    # 检查是否为目标模型
    model_lower = model.lower()
    if not any(m in model_lower for m in AUTO_APPLY_MODELS):
        return False

    # 检测到CoT模式则跳过
    prompt_lower = prompt.lower()
    for pattern in COT_PATTERNS:
        if re.search(pattern, prompt_lower):
            return False

    return True

def determine_repetitions(self, prompt: str, model: str) -> int:
    """根据任务类型确定重复次数"""
    prompt_lower = prompt.lower()

    # 检测到位置/索引模式 → 重复3次
    for pattern in POSITION_PATTERNS:
        if re.search(pattern, prompt_lower):
            return self.config.position_repetitions

    return self.config.default_repetitions

def estimate_tokens(self, text: str) -> int:
    """简易token数量估算(优先速度而非精度)"""
    # 平均每4个字符=1个token
    return len(text) // 4

def transform(self, prompt: str, model: str) -> str:
    """对提示词应用重复处理"""
    if not self.should_apply(model, prompt):
        return prompt

    repetitions = self.determine_repetitions(prompt, model)

    # 检查上下文限制
    model_lower = model.lower()
    max_tokens = 128_000  # 默认值
    for m, tokens in MODEL_CONTEXT_WINDOWS.items():
        if m in model_lower:
            max_tokens = tokens
            break

    max_allowed = int(max_tokens * self.config.max_context_ratio)
    prompt_tokens = self.estimate_tokens(prompt)

    # 超出token限制时调整重复次数
    while prompt_tokens * repetitions > max_allowed and repetitions > 1:
        repetitions -= 1

    if repetitions <= 1:
        return prompt

    # 应用重复处理并添加标记
    repeated = self.config.separator.join([prompt] * repetitions)
    return f"{self.config.applied_marker}\n{repeated}"

def wrap_llm_call(self, llm_fn: Callable, model: str) -> Callable:
    """包装LLM调用函数"""
    def wrapped(prompt: str, **kwargs):
        transformed = self.transform(prompt, model)
        return llm_fn(transformed, **kwargs)
    return wrapped

---

효과 측정 방법 (Verification)

效果验证方法

A/B 테스트 방법

A/B测试方法

python
def run_ab_test(prompts: List[str], llm_fn, model: str, ground_truth: List[str]):
    """반복 적용 효과 A/B 테스트"""
    transformer = PromptRepetitionTransformer()

    results = {"baseline": [], "repeated": []}

    for prompt, expected in zip(prompts, ground_truth):
        # Baseline
        response_a = llm_fn(prompt)
        results["baseline"].append(response_a == expected)

        # With Repetition
        repeated_prompt = transformer.transform(prompt, model)
        response_b = llm_fn(repeated_prompt)
        results["repeated"].append(response_b == expected)

    baseline_acc = sum(results["baseline"]) / len(prompts)
    repeated_acc = sum(results["repeated"]) / len(prompts)

    print(f"Baseline 정확도: {baseline_acc:.2%}")
    print(f"반복 적용 정확도: {repeated_acc:.2%}")
    print(f"개선: {repeated_acc - baseline_acc:+.2%}p")
python
def run_ab_test(prompts: List[str], llm_fn, model: str, ground_truth: List[str]):
    """重复应用效果的A/B测试"""
    transformer = PromptRepetitionTransformer()

    results = {"baseline": [], "repeated": []}

    for prompt, expected in zip(prompts, ground_truth):
        # 基准组
        response_a = llm_fn(prompt)
        results["baseline"].append(response_a == expected)

        # 重复应用组
        repeated_prompt = transformer.transform(prompt, model)
        response_b = llm_fn(repeated_prompt)
        results["repeated"].append(response_b == expected)

    baseline_acc = sum(results["baseline"]) / len(prompts)
    repeated_acc = sum(results["repeated"]) / len(prompts)

    print(f"基准准确率: {baseline_acc:.2%}")
    print(f"重复应用后准确率: {repeated_acc:.2%}")
    print(f"提升幅度: {repeated_acc - baseline_acc:+.2%}p")

주요 측정 지표

核心测量指标

지표측정 방법
정확도정답률 비교
일관성동일 프롬프트 10회 실행 분산
토큰 비용입력 토큰 증가율
지연 시간p50, p99 latency 비교

指标测量方法
准确率正确率对比
一致性同一提示词执行10次的结果差异
Token成本输入token增长率
延迟p50、p99延迟对比

사용하지 않아야 할 경우

不适用场景

경우이유
CoT 사용 중추론 과정이 이미 컨텍스트 제공
추론 모델 (opus, sonnet)이미 최적화됨, 효과 미미
매우 긴 프롬프트컨텍스트 한계 초과 위험
이미 반복 적용됨중복 적용 시 토큰 낭비

场景原因
使用CoT时推理过程已提供足够上下文
高性能模型(opus、sonnet)已优化完善,效果微乎其微
超长提示词存在超出上下文限制的风险
已应用过重复处理重复应用会浪费token

비용-정확도 분석

成本-准确率分析

지표기준반복 적용변화
입력 토큰500/req1000/req+100%
출력 토큰100/req100/req0%
지연시간 (p50)450ms460ms+2%
지연시간 (p99)1200ms1250ms+4%
정확도78%89%+14%p
정답당 비용$0.019$0.020+5%
핵심: Prefill 단계는 GPU에서 고도로 병렬화되어 입력 토큰 2배 증가에도 지연 시간 증가는 미미함

指标基准值重复应用后变化幅度
输入Token500/请求1000/请求+100%
输出Token100/请求100/请求0%
延迟(p50)450ms460ms+2%
延迟(p99)1200ms1250ms+4%
准确率78%89%+14个百分点
单正确答案成本$0.019$0.020+5%
核心结论:Prefill阶段在GPU中高度并行化,因此输入token翻倍对延迟的影响极小

Multi-Agent 통합

Multi-Agent整合

Agent별 자동 적용 전략

各Agent的自动应用策略

Agent모델반복 적용적용 위치
Claude Orchestratoropus/sonnet선택적-
Claude Executorhaiku자동skill_loader.py
Gemini Analystflash자동MCP 호출 시
OpenAIgpt-4o-mini자동skill_loader.py
Agent模型重复应用设置应用位置
Claude Orchestratoropus/sonnet可选-
Claude Executorhaiku自动应用skill_loader.py
Gemini Analystflash自动应用MCP调用时
OpenAIgpt-4o-mini自动应用skill_loader.py

중복 적용 방지

避免重复应用

멀티 에이전트 파이프라인에서 중복 적용을 방지하기 위해:
  1. 마커 사용:
    <!-- prompt-repetition-applied -->
    마커로 이미 적용된 프롬프트 감지
  2. 메타데이터 전달: 에이전트 간
    x-prompt-repetition-applied: true
    헤더 전달
  3. 오케스트레이터 관리: Claude Orchestrator가 하위 에이전트 호출 시 적용 여부 추적
在多Agent流水线中,为避免重复应用可采取以下措施:
  1. 使用标记:通过
    <!-- prompt-repetition-applied -->
    标记检测已处理的提示词
  2. 传递元数据:Agent间通过
    x-prompt-repetition-applied: true
    头信息传递状态
  3. 由编排器管理:Claude Orchestrator跟踪子Agent的应用状态

적용 패턴

应用模式

[Claude Sonnet] 계획 수립 (반복 불필요)
[Gemini Flash] 분석 (반복 ×2 자동 적용, 마커 추가)
[Claude Haiku] 실행 (마커 감지 → 중복 적용 스킵)

[Claude Sonnet] 制定计划(无需重复)
[Gemini Flash] 分析(自动重复2次,添加标记)
[Claude Haiku] 执行(检测到标记 → 跳过重复应用)

skill_loader.py 연동 가이드

skill_loader.py集成指南

권장 구현

推荐实现

python
undefined
python
undefined

skill_loader.py에 추가할 코드

需添加到skill_loader.py的代码

from prompt_repetition_transformer import PromptRepetitionTransformer
class SkillLoader: def init(self, ...): # ... 기존 코드 ... self.prompt_transformer = PromptRepetitionTransformer()
def apply_auto_skills(self, prompt: str, model: str) -> str:
    """자동 적용 스킬 처리"""
    # prompt-repetition 자동 적용
    for skill in self.skills.values():
        auto_apply = skill.get('data', {}).get('auto-apply', {})
        if auto_apply.get('trigger') == 'auto':
            target_models = auto_apply.get('models', [])
            if any(m in model.lower() for m in target_models):
                prompt = self.prompt_transformer.transform(prompt, model)

    return prompt

---
from prompt_repetition_transformer import PromptRepetitionTransformer
class SkillLoader: def init(self, ...): # ... 原有代码 ... self.prompt_transformer = PromptRepetitionTransformer()
def apply_auto_skills(self, prompt: str, model: str) -> str:
    """处理自动应用的技巧"""
    # 自动应用prompt-repetition
    for skill in self.skills.values():
        auto_apply = skill.get('data', {}).get('auto-apply', {})
        if auto_apply.get('trigger') == 'auto':
            target_models = auto_apply.get('models', [])
            if any(m in model.lower() for m in target_models):
                prompt = self.prompt_transformer.transform(prompt, model)

    return prompt

---

제약사항

限制条件

필수 규칙

必须遵守的规则

  1. 경량 모델 우선: haiku, flash, mini 계열에서 가장 효과적
  2. 반복 횟수 제한: 일반 작업 2회, Position 작업 최대 3회
  3. 컨텍스트 모니터링: 반복으로 인한 컨텍스트 초과 주의
  4. 마커 확인: 중복 적용 방지를 위해 마커 체크 필수
  1. 优先轻量模型:在haiku、flash、mini系列模型中效果最佳
  2. 限制重复次数:普通任务2次,位置类任务最多3次
  3. 监控上下文:注意避免因重复导致超出上下文限制
  4. 检查标记:必须通过标记避免重复应用

금지 사항

禁止操作

  1. 패딩으로 대체 금지:
    .
    등으로 길이만 늘리는 것은 효과 없음 (연구 결과)
  2. CoT와 동시 사용 금지: 효과 상쇄됨
  3. 추론 모델에 강제 적용 금지: 이미 최적화됨
  4. 중복 적용 금지: 마커 없이 연속 적용 시 토큰 낭비

  1. 禁止用填充替代:用
    .
    等字符仅增加长度无效果(研究结果验证)
  2. 禁止与CoT同时使用:效果会相互抵消
  3. 禁止强制应用于高性能模型:此类模型已优化完善
  4. 禁止重复应用:无标记的连续应用会浪费token

Quick Reference

速查手册

=== 자동 적용 대상 모델 ===
claude-3-haiku, claude-haiku
gemini-flash, gemini-flash-lite, gemini-2.0-flash
gpt-4o-mini, gpt-low

=== 반복 횟수 ===
기본 작업: 2회
Position/Index (slot/position/index 키워드): 3회
CoT 사용: 0회 (적용 안함)

=== 효과 (Google Research 2025) ===
개선 비율: 67% (47/70 벤치마크)
성능 저하: 0건
최대 개선: +76%p (NameIndex)

=== 비용 ===
입력 토큰: +100%
지연 시간: +2% (Prefill 병렬화)
정답당 비용: +5%

=== 중복 적용 방지 ===
마커: <!-- prompt-repetition-applied -->

=== 自动应用目标模型 ===
claude-3-haiku, claude-haiku
gemini-flash, gemini-flash-lite, gemini-2.0-flash
gpt-4o-mini, gpt-low

=== 重复次数 ===
普通任务:2次
位置/索引类(含slot/position/index关键词):3次
搭配CoT:0次(不适用)

=== 效果(Google Research 2025) ===
提升占比:67%(47/70基准任务)
性能下降:0例
最大提升幅度:+76个百分点(NameIndex任务)

=== 成本 ===
输入Token:+100%
延迟:+2%(Prefill并行化)
单正确答案成本:+5%

=== 避免重复应用 ===
标记:<!-- prompt-repetition-applied -->

참고 자료

参考资料