> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 접두사 캐싱

> 접두사 캐싱으로 반복되는 프롬프트의 지연 시간을 줄이고, 필요한 경우 cache_salt로 캐시 재사용을 격리하세요.

W\&B Inference는 지원되는 호스팅 모델에 접두사 캐싱을 적용하여, 프롬프트 접두사가 동일한 반복 요청을 더 빠르게 처리합니다.

요청의 프롬프트 접두사가 같은 백엔드에서 처리된 이전 요청과 동일하면, 모델은 접두사 전체를 다시 계산하지 않고 이전에 계산된 키-값(KV) 캐시를 재사용합니다. 따라서 반복되는 프롬프트, 긴 system 프롬프트, 공유 접두사가 일정한 워크로드에서 지연 시간이 줄어듭니다.

접두사 캐싱은 지원되는 모델에서 자동으로 적용되므로 요청에서 따로 활성화할 필요가 없습니다. 이 페이지에서는 접두사 캐싱이 가장 효과적인 경우와 `cache_salt`로 캐시 격리를 제어하는 방법을 설명합니다.

<h2 id="when-prefix-caching-helps">
  접두사 캐싱이 유용한 경우
</h2>

접두사 캐싱은 긴 공통 접두사를 공유하는 요청을 반복해서 보낼 때 가장 효과적입니다. 예를 들면 다음과 같습니다.

* 여러 요청에서 재사용되는 긴 system 프롬프트
* 긴 공유 문서 뒤에 서로 다른 사용자 질문이 이어지는 경우
* 요청마다 조금씩만 달라지는 반복적인 평가 프롬프트
* 대화 이력의 상당 부분이 그대로 유지되는 멀티턴 워크로드

<h2 id="cache-isolation">
  캐시 격리
</h2>

일부 환경에서는 서로 다른 사용자나 애플리케이션 간에 캐시가 재사용되지 않도록 해야 할 수 있습니다. `cache_salt` 매개변수로 이를 제어할 수 있습니다.

기본적으로 프롬프트 접두사가 동일한 요청은 백엔드에서 허용하는 경우 공유 인프라의 캐시를 재사용할 수 있습니다.

캐시 재사용을 특정 신뢰 경계 내로 제한하려면 `cache_salt` 요청 매개변수를 설정하세요. 프롬프트 접두사와 `cache_salt`가 모두 일치하는 경우에만 요청이 접두사 캐시를 재사용합니다.

단일 사용자, 테넌트, 세션 또는 애플리케이션 경계 내에서는 캐시를 재사용하되 다른 호출자와는 재사용하지 않으려면 `cache_salt`를 사용하세요.

<h3 id="how-it-works">
  작동 방식
</h3>

`cache_salt`의 지정 여부와 값에 따라 캐시 재사용 방식이 다음과 같이 달라집니다.

* 프롬프트 접두사가 같고 `cache_salt`가 없는 경우: 일치하는 요청 간에 캐시가 재사용될 수 있습니다.
* 프롬프트 접두사가 같고 `cache_salt`도 같은 경우: 캐시를 재사용할 수 있습니다.
* 프롬프트 접두사가 같지만 `cache_salt`가 다른 경우: 캐시가 격리되어 salt가 서로 다르면 재사용되지 않습니다.

<Note>
  `cache_salt`를 지정할 때는 비어 있지 않은 문자열이어야 합니다.
</Note>

<h2 id="examples">
  예시
</h2>

다음 예시는 `cache_salt`를 사용하여 캐시 재사용을 격리하는 Chat Completion 요청을 보내는 방법을 보여줍니다.

<Tabs>
  <Tab title="Python">
    ```python theme={"system"}
    import openai

    client = openai.OpenAI(
        base_url="https://api.inference.wandb.ai/v1",
        api_key="<your-api-key>",
    )

    response = client.chat.completions.create(
        model="moonshotai/Kimi-K2.5",
        messages=[
            {
                "role": "system",
                "content": "You are a careful assistant that answers concisely."
            },
            {
                "role": "user",
                "content": "Summarize this document in one sentence: <long shared prefix here>"
            },
        ],
        extra_body={
            "cache_salt": "tenant-a-user-123-secret",
        },
    )

    print(response.choices[0].message.content)
    ```
  </Tab>

  <Tab title="Bash">
    ```bash theme={"system"}
    curl https://api.inference.wandb.ai/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your-api-key>" \
      -d '{
        "model": "moonshotai/Kimi-K2.5",
        "messages": [
          { "role": "system", "content": "You are a careful assistant that answers concisely." },
          { "role": "user", "content": "Summarize this document in one sentence: <long shared prefix here>" }
        ],
        "cache_salt": "tenant-a-user-123-secret"
      }'
    ```
  </Tab>
</Tabs>

<h2 id="response-behavior">
  응답 동작
</h2>

요청에 접두사 캐싱이 적용되었는지 확인하려면 응답의 사용량 세부 정보를 확인하세요. 일부 모델에서는 접두사 캐시가 재사용되면 사용량 세부 정보의 `usage.prompt_tokens_details.cached_tokens`에 캐시된 토큰 수가 표시될 수 있습니다. 이 필드의 제공 여부는 모델과 백엔드에 따라 다릅니다.

<h2 id="related-pages">
  관련 페이지
</h2>

관련 주제는 다음 페이지를 참고하세요.

* [Chat Completion](/ko/products/inference/serverless/api-reference/chat-completions)
* [스트리밍 응답 활성화](/ko/products/inference/serverless/response-settings/streaming)
* [구조화된 출력](/ko/products/inference/serverless/response-settings/structured-output)
* [JSON 모드](/ko/products/inference/serverless/response-settings/json-mode)
