0Pricing
AI Prompt Engineering · 강의

예시 순서와 최신성

예시의 순서가 출력에 미치는 영향

예시 순서와 최신성은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

순서는 숨은 하이퍼파라미터입니다

퓨샷 예시의 순서는 정확도를 몇 퍼센트포인트씩 바꿀 수 있으며, 때로는 거의 무작위인 프롬프트를 강력한 프롬프트로, 또는 그 반대로 바꾸기도 합니다. 예시 세트가 고정되어 있어도 이러한 변동성이 발생합니다.

순서 지정을 나중에 고려할 일이 아니라 우선적으로 탐색해야 하는 핵심 하이퍼파라미터로 다루십시오. 순서를 통제하지 않은 퓨샷 결과 보고는 과학적으로 타당하지 않습니다.

import itertools

def order_search(demos, eval_set, build, max_perms=24):
    perms = list(itertools.permutations(demos))[:max_perms]
    scored = [(p, evaluate(build(p), eval_set)) for p in perms]
    return max(scored, key=lambda x: x[1])

최근성 편향의 원리

디코더 전용 트랜스포머에는 최근성 편향이 나타납니다. 생성 지점에 가까운 토큰이 불균형적으로 큰 영향을 미칩니다. 질의 바로 앞의 마지막 데모가 형식, 레이블, 어조를 결정할 가능성이 가장 높습니다.

이는 부분적으로 어텐션 패턴과 위치 인코딩에서 비롯된 현상입니다. 실질적인 결론은 다음과 같습니다. 마지막에 배치한 내용일수록 모델이 가장 쉽게 모방합니다.

# Position weight intuition (illustrative, not exact)
# influence(example_i) roughly increases with proximity to the query
# => the FINAL demo disproportionately anchors the next generation
weights = [0.1, 0.15, 0.25, 0.5]  # earlier ... latest

중간에서 사라지는 정보

긴 문맥에 관한 연구에서는 U자형 어텐션 프로필이 나타난다고 밝힙니다. 모델은 문맥의 시작과 끝에는 잘 주의를 기울이지만 중간 부분에는 충분히 주의를 기울이지 않습니다. 프롬프트 중간에 묻힌 중요한 데모는 사실상 영향이 줄어듭니다.

가장 중요하거나 까다로운 예시는 시작 부분에 배치하거나, 최근성 편향을 고려하여 끝부분 가까이에 배치하십시오. 긴 데모 블록의 중간에 방치해서는 안 됩니다.

def place_key_demos(key, filler):
    # U-shape aware: key items at the edges, filler in the middle
    head = key[: len(key)//2]
    tail = key[len(key)//2 :]
    return head + filler + tail

다수 레이블과 마지막 위치

최근성 편향과 다수 레이블 편향은 서로 겹쳐 강화됩니다. 마지막 데모가 분류 A라면 모델은 A를 예측하는 쪽으로 기울게 됩니다. 여기에 A가 많은 데모 세트가 결합되면 사전 분포가 크게 치우칩니다.

균형 잡힌 분류에서는 레이블을 번갈아 배치하고, 프롬프트 변형본마다 마지막 예시가 항상 같은 분류에 속하지 않도록 하십시오.

def alternate_labels(by_label, k):
    labels = list(by_label)
    out = []
    i = 0
    while len(out) < k:
        lbl = labels[i % len(labels)]
        if by_label[lbl]:
            out.append(by_label[lbl].pop())
        i += 1
    return out  # final element varies by construction

유사도 오름차순 예시

검색 증강 퓨샷에서 강력한 휴리스틱은 검색된 예시를 질의와의 유사도가 낮은 순서로 배열하는 것입니다. 그러면 가장 관련성 높은 예시가 질의에 가장 가까이 놓여 최신성의 이점을 얻습니다.

이 방식은 동적 선택과 최신성 활용을 결합합니다. 관련 맥락이 포함될 뿐 아니라 모델이 가장 강하게 주목하는 위치에 배치됩니다.

def order_by_similarity(query_emb, retrieved):
    scored = [(d, cos(query_emb, d.emb)) for d in retrieved]
    scored.sort(key=lambda x: x[1])     # ascending
    return [d for d, _ in scored]        # most similar last (near query)

curriculum 순서 배열

추론이나 생성에서는 curriculum 순서(쉬운 것부터 어려운 것까지)가 모델이 목표 동작을 단계적으로 구축하는 데 도움이 될 수 있습니다. 마지막에는 질의 바로 앞에 전체 추론 깊이를 보여 주는 복잡한 예시를 배치합니다.

이는 과제에 따라 달라지므로 도움이 된다고 가정하지 말고 무작위 순서 및 유사도 순서와 비교하여 검증해야 합니다.

def curriculum(demos, difficulty_fn):
    return sorted(demos, key=difficulty_fn)  # easiest first, hardest last

순서 민감도 측정

여러 순서를 표본 추출하고 정확도의 분산을 보고하여 프롬프트가 얼마나 취약한지 정량화하십시오. 분산이 높다는 것은 운영 환경에서 예측할 수 없이 성능이 저하될 수 있는 불안정한 프롬프트임을 의미합니다.

이 지표를 사용하여 프롬프트 설계를 비교하십시오. 순서에 강건한 프롬프트가 점수는 조금 더 높지만 변동성이 큰 프롬프트보다 안전합니다.

import random

def order_sensitivity(demos, eval_set, build, trials=20):
    accs = []
    for _ in range(trials):
        perm = random.sample(demos, len(demos))
        accs.append(evaluate(build(perm), eval_set))
    return mean(accs), stdev(accs)  # report both; low stdev = robust

탐색 없는 순서 선택

순서를 평가할 레이블이 없을 때는 탐색용 집합에 대한 모델 예측의 엔트로피를 사용하여 순서를 선택할 수 있습니다. 확신도가 높고 엔트로피가 낮으며 예측이 고르게 분산되는 순서는 일반화 성능도 더 좋은 경향이 있습니다(Lu et al., 2022).

이를 통해 레이블이 있는 검증 집합 없이도 좋은 순열을 선택할 수 있습니다.

def select_order_by_entropy(perms, probe_inputs, build):
    def score(perm):
        ents = [entropy(model_probs(build(perm), x)) for x in probe_inputs]
        return -mean(ents)        # prefer confident, low-entropy orderings
    return max(perms, key=score)

보정을 통한 안정화

순서 민감도와 최신성 편향은 모두 특정 레이블의 비중을 부풀립니다. 문맥 보정은 내용이 없는 입력에 대한 모델의 사전분포를 추정하고 예측 확률을 수정하여 이를 완화하며, 특정 하나의 순서가 미치는 영향을 줄입니다.

보정과 적절한 순서 지정을 함께 사용하면 단 하나의 최적 순열을 찾아가는 것보다 운영 환경에서 더 안정적인 동작을 얻을 수 있습니다.

p_prior = model_probs(build(perm), content_free='N/A')
def calibrate(probs):
    return normalize(probs / p_prior)  # cancels order-induced label skew

캐싱과 순서 안정성

프롬프트 캐싱을 사용하는 경우 캐시 적중을 위해 접두부(예시 블록 포함)가 바이트 단위로 동일하게 유지되어야 합니다. 요청마다 예시를 자주 다시 섞으면 캐시 재사용이 불가능해지고 비용과 지연 시간이 증가합니다.

해결책은 정적 예시 블록에 대해 검증된 단일 순서를 고정하고 캐시하는 것입니다. 동적 순서 변경은 검색된 질의별 후반부에만 적용하십시오.

# Stable cached prefix + dynamic tail
prefix = render(FIXED_ORDERED_DEMOS)   # cache_control on this block
tail   = render(order_by_similarity(q_emb, retrieved))
prompt = prefix + tail + query

순서 전략 점검 목록

실용적인 기본 설정은 다음과 같습니다. 레이블의 균형을 맞추고 번갈아 배치하며, 핵심 예시와 어려운 예시를 양 끝에 놓고(가운데는 피함), 검색된 예시는 유사도가 낮은 순서로 배열하여 가장 좋은 예시를 질의 가까이에 둡니다. 또한 순서에 따른 분산을 측정하고 보정을 적용하여 남은 치우침을 완화하십시오.

그런 다음 캐싱을 위해 순서를 고정하고 예시 집합이 변경될 때마다 다시 검증하십시오.

def final_order(demos, q_emb):
    demos = alternate_labels(group(demos), len(demos))
    return order_by_similarity(q_emb, demos)  # validated, then cached

빠른 확인

중요한 예시의 위치에 대해 추론해 보십시오.

요약

핵심 요점:

  • 예시 순서는 정확도를 몇 점씩 바꿀 수 있는 초매개변수이므로, 순서를 탐색하고 분산을 보고하십시오.
  • 최신성 편향으로 인해 마지막 예시가 가장 큰 영향력을 갖고, ‘가운데에서 길을 잃는’ 현상으로 중앙의 예시가 과소 반영됩니다.
  • 레이블의 균형을 맞추고 번갈아 배치하며, 검색된 예시는 유사도가 낮은 순서로 배열하고 curriculum 순서도 고려하십시오.
  • 레이블이 부족할 때는 엔트로피를 사용하여 순서를 선택하고, 문맥 보정을 적용하여 치우침을 완화하십시오.
  • 프롬프트 캐싱을 위해 안정적인 순서를 고정하고, 동적으로 검색된 후반부만 다시 배열하십시오.

자주 묻는 질문

“예시 순서와 최신성” 강의는 무료인가요?

네 — “예시 순서와 최신성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

“예시 순서와 최신성”에서 뭘 배우나요?

예시의 순서가 출력에 미치는 영향 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“예시 순서와 최신성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 제로 샷, 원 샷, 퓨 샷
  2. 효과적인 예시 설계
  3. 예시 순서와 최신성
  4. 동적 퓨 샷 선택
← AI Prompt Engineering(으)로 돌아가기