Claude Platform Docs
Messages노력 수준

메시지별 effort

system 메시지를 사용하여 대화 도중에 effort 수준을 변경하고 프롬프트 캐시를 유지합니다.

메시지별 effort 변경은 요청의 최상위 값을 변경하지 않고 대화의 이후 턴에 대한 새로운 effort 수준을 설정하므로, 캐시된 접두사가 계속 일치합니다.

effort 수준 변경하기

대화 도중에 수준을 변경하려면 다음을 수행하세요:

  1. messages에 role: "system" 메시지를 추가하고, content는 비워 두고 output_config.effort에 새로운 effort 수준을 지정하세요.
  2. mid-conversation-output-config-2026-07-01 베타 헤더를 전송하세요.
  3. 최상위 값은 변경하지 마세요.

다음 예시는 최상위 값을 high로 유지하고 일상적인 후속 요청에서는 low로 낮춥니다:

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    output_config={"effort": "high"},
    messages=[
        {
            "role": "user",
            "content": "Plan a migration from SQLite to PostgreSQL in three short steps.",
        },
        {
            "role": "assistant",
            "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.",
        },
        # effort 전용 시스템 메시지: 새 수준은 다음 사용자 턴부터 적용됩니다.
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."},
    ],
    betas=["mid-conversation-output-config-2026-07-01"],
)

for block in response.content:
    if block.type == "text":
        print(block.text)

메시지의 위치에 따라 새 수준이 적용되기 시작하는 시점이 결정됩니다:

  • 새 입력이 있는 user 턴 바로 뒤에 있는 경우: 해당 턴에 대한 Claude의 응답에 새 수준이 적용됩니다.
  • 앞의 예시처럼 assistant 턴과 다음 user 턴 사이와 같은 그 밖의 위치에 있는 경우: 새 입력이 있는 다음 user 턴부터 새 수준이 적용됩니다.

tool_result 블록만 포함된 user 턴은 새 입력으로 간주되지 않습니다.

이후의 메시지가 변경할 때까지 새 수준이 계속 적용됩니다.

이 메시지는 이미 전송한 모든 내용 뒤에 두고, 이후 요청에서도 그 자리에 유지하세요. 이미 전송한 턴 앞에 삽입하지 말고, 나중에 이동하거나 제거하지도 마세요. preserved thinking(보존된 사고)을 사용하는 모델에서는 이러한 변경 중 어느 것이든 해당 메시지 뒤에 있는 assistant 턴의 thinking 블록을 무효화합니다. 그 이후에 일어나는 일은 API가 유효하지 않은 블록을 처리하는 방식에서 설명합니다.

이 메시지가 내용이 있는 system 메시지 옆에 있는 경우 두 메시지 모두 대화 중 system 메시지의 배치 규칙을 따라야 합니다.

Amazon Bedrock InvokeModel API에서는 베타 값을 헤더 대신 요청 본문의 anthropic_beta 배열로 전송하세요. 해당 환경에서 메시지별 effort를 지원하는 모델은 Bedrock에서의 대화 중간 시스템 메시지를 참조하세요.

오류

  • 베타 헤더 없이 메시지별 output_config를 사용하면 400 오류가 반환됩니다: messages.N.output_config: Extra inputs are not permitted. 여기서 N은 messages 내 system 메시지의 인덱스입니다.
  • 베타 헤더를 사용하더라도 Claude Fable 5와 같이 메시지별 effort를 지원하지 않는 모델은 400 오류를 반환합니다: output_config.effort requires a model that supports per-turn effort; this model does not. Amazon Bedrock에서는 해당 모델과 Claude Opus 5가 대신 Extra inputs are not permitted를 반환합니다.
  • thinking: {"type": "between_tools"}를 사용하는 Claude Sonnet 5.5와 thinking: {"type": "disabled"}를 사용하는 Claude Haiku 5.5에서는 대화 도중에 effort 수준을 변경할 수 없습니다. 이 경우 새 수준을 지정한 메시지별 output_config.effort는 400 오류를 반환합니다. 턴마다 effort를 다르게 하려면 adaptive thinking을 사용하세요.

메시지별 effort와 최상위 effort 비교

요청 간에 최상위 값을 변경하는 것보다 메시지별 effort를 사용하는 것이 좋습니다. 메시지별 변경은 그 이전의 모든 내용을 그대로 유지하므로 캐시된 접두사가 계속 일치합니다. 최상위 변경은 캐시를 다시 시작합니다. Claude Fable 5.1에서는 최상위 변경이 모델을 덜 안정적으로 조정하기도 합니다. 모델의 이전 응답이 이전 수준으로 작성되었고, 모델은 그 응답과 일관성을 유지하려는 경향이 있기 때문입니다.

제공 여부

메시지별 effort
상태
베타
API
  • Messages API
  • Managed Agents 지원되지 않음
베타 헤더
필요
모델
  • Claude Fable 5.2, Fable 5.1
  • Claude Mythos 5.2, Mythos 5.1
  • Claude Opus 5.5, Opus 5
  • Claude Sonnet 5.5
  • Claude Haiku 5.5

이 페이지가 도움이 되었나요?