Loading...
  • 빌드
  • 관리
  • 모델 및 가격
  • 클라이언트 SDK
  • API 참조
Search...
⌘K
Log in
프롬프트 캐싱을 활용한 도구 사용
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
빌드/도구

프롬프트 캐싱을 사용한 도구 사용

여러 턴에 걸쳐 도구 정의를 캐시하고 캐시를 무효화하는 요소를 이해합니다.

이 페이지는 도구 정의에 대한 프롬프트 캐싱을 다룹니다: cache_control 중단점을 배치하는 위치, defer_loading이 캐시를 보존하는 방법, 그리고 캐시를 무효화하는 요소입니다. 일반적인 프롬프트 캐싱에 대해서는 프롬프트 캐싱을 참조하세요.

도구 정의에 대한 cache_control

cache_control: {"type": "ephemeral"}을 tools 배열의 마지막 도구에 배치합니다. 이렇게 하면 첫 번째 도구부터 표시된 중단점까지의 전체 도구 정의 접두사가 캐시됩니다:

{
  "tools": [
    {
      "name": "get_weather",
      "description": "Get the current weather in a given location",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": { "type": "string" }
        },
        "required": ["location"]
      }
    },
    {
      "name": "get_time",
      "description": "Get the current time in a given time zone",
      "input_schema": {
        "type": "object",
        "properties": {
          "timezone": { "type": "string" }
        },
        "required": ["timezone"]
      },
      "cache_control": { "type": "ephemeral" }
    }
  ]
}

mcp_toolset의 경우, cache_control 중단점은 집합의 마지막 도구에 위치합니다. MCP 도구 집합 내에서 도구 순서를 제어할 수 없으므로, mcp_toolset 항목 자체에 중단점을 배치하면 API가 최종 확장된 도구에 적용합니다.

defer_loading과 캐시 보존

지연된 도구는 시스템 프롬프트 접두사에 포함되지 않습니다. 모델이 도구 검색을 통해 지연된 도구를 발견하면, 정의는 대화 기록에 tool_reference 블록으로 인라인으로 추가됩니다. 접두사는 변경되지 않으므로 프롬프트 캐싱이 보존됩니다.

이는 도구 검색을 통해 동적으로 도구를 추가해도 캐시가 깨지지 않음을 의미합니다. 항상 로드되는 작은 도구 집합(캐시됨)으로 대화를 시작하고, 모델이 필요에 따라 추가 도구를 발견하도록 하며, 모든 턴에서 동일한 캐시 히트를 유지할 수 있습니다.

defer_loading은 또한 엄격한 모드에 대한 문법 구성과 독립적으로 작동합니다. 문법은 어떤 도구가 지연되는지와 관계없이 전체 도구 집합에서 구축되므로, 도구가 동적으로 로드될 때 프롬프트 캐싱과 문법 캐싱이 모두 보존됩니다.

캐시를 무효화하는 요소

캐시는 접두사 계층 구조(tools → system → messages)를 따르므로, 한 수준의 변경은 해당 수준과 그 이후의 모든 것을 무효화합니다:

변경무효화
도구 정의 수정전체 캐시(도구, 시스템, 메시지)
웹 검색 또는 인용 토글시스템 및 메시지 캐시
tool_choice 변경메시지 캐시
disable_parallel_tool_use 변경메시지 캐시
이미지 존재/부재 토글메시지 캐시
사고 매개변수 변경메시지 캐시

대화 중간에 tool_choice를 변경해야 하는 경우, 변경 지점 전에 캐시 중단점을 배치하는 것을 고려하세요.

도구별 상호작용 표

도구캐싱 고려사항
웹 검색활성화 또는 비활성화하면 시스템 및 메시지 캐시가 무효화됩니다
웹 가져오기활성화 또는 비활성화하면 시스템 및 메시지 캐시가 무효화됩니다
코드 실행컨테이너 상태는 프롬프트 캐시와 독립적입니다
도구 검색발견된 도구는 tool_reference 블록으로 로드되어 접두사 캐시를 보존합니다
컴퓨터 사용스크린샷 존재 여부가 메시지 캐시에 영향을 줍니다
텍스트 편집기표준 클라이언트 도구, 특별한 캐싱 상호작용 없음
Bash표준 클라이언트 도구, 특별한 캐싱 상호작용 없음
메모리표준 클라이언트 도구, 특별한 캐싱 상호작용 없음

다음 단계

프롬프트 캐싱

TTL 및 가격 책정을 포함한 전체 프롬프트 캐싱 모델을 알아봅니다.

도구 검색

캐시를 깨지 않고 필요에 따라 도구를 로드합니다.

도구 참조

사용 가능한 모든 도구 및 해당 매개변수를 찾아봅니다.

Was this page helpful?

  • 도구 정의에 대한 cache_control
  • defer_loading과 캐시 보존