0Pricing
AI Prompt Engineering · 강의

긴 접두사 캐싱

프롬프트 캐싱으로 비용 제어

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

접두사 캐싱이 존재하는 이유

모든 긴 프롬프트는 생성 전에 토큰을 인코딩하기 위한 프리필 비용을 지불합니다. 동일한 긴 접두사가 여러 호출에서 반복될 때, 예를 들어 시스템 프롬프트, 도구 사양, 대규모 참고 문서가 반복될 때 프롬프트 캐싱을 사용하면 제공업체가 이미 계산한 어텐션 상태를 재사용할 수 있으므로 다시 계산할 필요가 없습니다.

  • 캐시 적중이 발생하면 지연 시간과 입력 비용이 크게 줄어듭니다.
  • 절감 효과는 접두사의 크기와 재사용 빈도에 따라 커집니다.

캐싱은 접두사를 기준으로 합니다

캐시는 프롬프트 시작부터 이어지는 정확한 토큰 접두사 일치를 기준으로 합니다. 캐시된 범위는 시작부터 처음으로 달라지는 지점까지 이어집니다. 앞부분의 무엇이든 변경하면 그 뒤의 모든 내용이 캐시를 사용하지 못합니다.

따라서 적중을 극대화하는 배치에서는 가장 안정적인 콘텐츠를 앞에 두고 가장 가변적인 콘텐츠를 뒤에 두어야 합니다.

# Cache reuse covers: [identical prefix .... first difference)
# One early edit invalidates the whole downstream cache.

안정성에 따라 순서 정하기

가장 안정적인 콘텐츠부터 가장 불안정한 콘텐츠 순으로 배치하십시오. 변경되지 않는 시스템 규칙과 도구 정의를 먼저 두고, 그다음 크고 안정적인 참고 자료, 세션 동안 안정적인 컨텍스트, 마지막으로 요청마다 달라지는 입력과 질문을 배치하십시오.

  • 안정적인 내용 -> 앞(캐싱 가능).
  • 가변적인 내용 -> 뒤(다시 계산되는 유일한 부분).

이 하나의 순서 원칙이 대부분의 캐싱 효과를 이끌어 냅니다.

prompt = [
  SYSTEM_RULES,        # never changes
  TOOL_SPECS,          # rarely changes
  REFERENCE_CORPUS,    # stable for the session
  USER_TURN            # changes every call -> keep last
]

캐시 중단점

일부 제공업체에서는 명시적인 캐시 중단점을 표시할 수 있습니다. 각 안정적인 구간의 끝에 중단점을 배치하면 시스템이 해당 지점까지 캐시할 수 있습니다. 가장 큰 안정적 블록, 즉 참고 자료 모음이나 긴 시스템 프롬프트를 캐시 가능하도록 표시하십시오.

명시적인 표시가 없더라도 구조를 안정성 순서로 구성하십시오. 그러면 암시적인 접두사 일치도 여전히 도움이 됩니다.

blocks = [
  {'text': SYSTEM_RULES, 'cache': True},
  {'text': REFERENCE_CORPUS, 'cache': True},  # big win
  {'text': user_turn}  # uncached
]

숨은 접두사 변화를 주의하기

미묘하고 의도하지 않은 변경은 캐싱을 조용히 중단합니다. 시스템 프롬프트의 타임스탬프, 앞부분에 삽입된 요청별 식별자, 순서가 바뀐 도구 정의, 비결정적인 JSON 키 순서가 그 예입니다. 각각 접두사를 변경하여 전체를 다시 계산하게 만듭니다.

호출마다 달라지는 요소가 있는지 접두사를 점검하고, 그런 요소를 캐시된 영역 뒤로 옮기십시오.

# BAD: dynamic value early -> kills cache
# system = 'Session ' + str(uuid4()) + ' rules: ...'
# GOOD: keep system static; put the id in the tail user turn.

TTL 및 캐시 수명

캐시는 제공업체가 정의한 TTL이 지나면 만료되며, 적중될 때마다 갱신되는 경우가 많습니다. 호출이 너무 드물면 콜드 미스가 반복됩니다. 집중적으로 몰리는 고빈도 작업 부하에서는 캐싱이 효과적이지만, 드물고 산발적인 호출에서는 사용하기 전에 캐시가 만료될 수 있습니다.

트래픽 패턴을 TTL에 맞추고, 중요한 접두부에는 연결 유지 핑을 사용하는 방안도 고려하십시오.

캐싱의 비용 모델

캐싱에서는 일반적으로 캐시 항목을 쓰기할 때 약간의 추가 비용을 내고, 이를 읽기할 때는 큰 할인을 받습니다. 경제성은 재사용에 유리합니다. 한 번의 쓰기 비용을 여러 번의 읽기에 분산하면 순절감액이 커지지만, 한 번만 사용하고 쓰기만 수행하면 비용이 약간 더 들 수 있습니다.

  • 재사용률이 높음 -> 캐시를 적극적으로 사용하십시오.
  • 일회성 접두부 -> 캐싱이 이득이 되지 않을 수 있습니다.
def worth_caching(prefix_tokens, expected_reuses, write_mult, read_mult):
    no_cache = expected_reuses
    cached = write_mult + read_mult * (expected_reuses - 1)
    return cached < no_cache  # in normalized prefix-cost units

안정적인 시스템 블록 설계

시스템 프롬프트와 도구 사양을 결정적으로 만들고 버전을 고정하십시오. 도구 정의를 정규 방식으로 정렬하고, 동적 데이터를 삽입하지 않으며, 신중하게 계획한 릴리스에서만 변경하십시오. 안정적인 시스템 블록은 모든 요청이 공유하는 수명이 길고 적중률이 높은 캐시 항목이 됩니다.

캐시된 접두부를 가볍게 수정하는 문자열이 아니라 버전이 있는 산출물로 취급하십시오.

TOOLS = sorted(tool_defs, key=lambda t: t['name'])  # canonical order
SYSTEM_VERSION = 'v3'  # change deliberately, not per request

다중 차례 에이전트에서의 캐싱

에이전트 반복문에서는 계속 늘어나는 대화가 자연스러운 캐시가 됩니다. 각 차례가 다음 차례에서 재사용할 접두부를 확장하기 때문입니다. 새 차례는 끝에 추가하고 이전 차례는 절대로 다시 작성하지 마십시오. 그러면 이전 캐시가 계속 유효합니다.

압축해야 한다면 기존 접두부를 반복해서 변경하는 대신, 이후 차례에서 사용할 새로운 안정적인 접두부가 만들어지는 방식으로 수행하십시오.

캐시 효과 측정

계측하십시오. 대부분의 제공업체는 호출마다 캐시된 입력 토큰과 캐시되지 않은 입력 토큰을 보고합니다. 적중률을 추적하고, 적중률이 낮다면 접두부가 변했는지 살펴보십시오. 적중률 저하는 대개 프롬프트 앞부분에 최근 추가된 동적 값이 있음을 나타냅니다.

  • 캐시된_토큰 / 전체_입력_토큰을 기록합니다.
  • 배포 후 적중률이 떨어지면 경고를 발생시킵니다.
hit_rate = usage['cache_read_input_tokens'] / max(1, usage['input_tokens'])
assert hit_rate > 0.6, 'prefix drift suspected'

캐싱을 고려한 프롬프트 배치

긴 접두부의 비용을 관리하려면 안정성에 따라 내용을 정렬하고, 가장 큰 안정 블록을 캐시 경계점으로 표시하며, 숨은 변동을 제거하고, 시스템/도구 블록을 고정하고 버전 관리하며, 에이전트 반복문에서는 끝에만 추가하고, 적중률을 모니터링하십시오. 목표는 크고 재사용 가능한 접두부 하나와 호출마다 다시 계산하는 작고 변동성 있는 끝부분을 만드는 것입니다.

빠른 확인

매일 수천 건의 질의에서 10만 토큰으로 된 참조 말뭉치를 재사용하지만 캐시 적중률이 거의 0에 가깝습니다.

복습: 긴 접두부 캐싱

프롬프트 캐싱은 정확하고 안정적인 접두부의 프리필을 재사용하여, 재사용이 잦을 때 지연 시간과 입력 비용을 크게 줄입니다. 가장 안정적인 내용부터 배치하고, 큰 안정 블록을 경계점으로 표시하며, 모든 변동 요소를 끝부분으로 보내십시오. 숨은 변동을 제거하고, 시스템/도구 블록을 고정하고 버전 관리하며, 에이전트 반복문에서는 끝에만 추가하고, 적중률을 모니터링하십시오. 그러면 적중률 저하를 통해 앞부분에 새로 도입된 변동 값을 알아낼 수 있습니다.

자주 묻는 질문

“긴 접두사 캐싱” 강의는 무료인가요?

네 — “긴 접두사 캐싱” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 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개 중 4번째 강의입니다.

“긴 접두사 캐싱” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 백만 토큰 컨텍스트 창
  2. 중간 내용이 잊히는 현상
  3. 대규모 프롬프트 구조화
  4. 긴 접두사 캐싱
← AI Prompt Engineering(으)로 돌아가기