---
title: 메시지별 effort
url: https://platform.claude.com/docs/ko/build-with-claude/effort-per-message
description: system 메시지를 사용하여 대화 도중에 effort 수준을 변경하고 프롬프트 캐시를 유지합니다.
featureMetadata:
  status: beta
  betaHeader: mid-conversation-output-config-2026-07-01
  supportedModels:
    - claude-fable-5-2
    - claude-mythos-5-2
    - claude-fable-5-1
    - claude-mythos-5-1
    - claude-opus-5-5
    - claude-opus-5
    - claude-sonnet-5-5
    - claude-haiku-5-5
  supportedPlatforms:
    Claude API: beta
    Amazon Bedrock: beta
    Amazon Bedrock (bedrock-runtime):
      availability: beta
      note: 요청 본문의 `anthropic_beta` 배열에 베타 값을 보내세요.
    Claude Platform on AWS: beta
    Claude Models on Google Cloud (Anthropic managed): beta
    Claude Models on Google Cloud (Google managed): beta
    Microsoft Foundry: beta
---

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

## effort 수준 변경하기

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

1. `messages`에 `role: "system"` 메시지를 추가하고, `content`는 비워 두고 `output_config.effort`에 새로운 [effort](https://platform.claude.com/docs/ko/build-with-claude/effort) 수준을 지정하세요.
2. `mid-conversation-output-config-2026-07-01` [베타 헤더](https://platform.claude.com/docs/ko/api/beta-headers)를 전송하세요.
3. 최상위 값은 변경하지 마세요.

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

<CodeGroup>
  ```bash cURL
  # effort 전용 시스템 메시지: 새 수준은 다음 사용자 턴부터 적용됩니다.
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2026-10-21" \
    -H "anthropic-beta: mid-conversation-output-config-2026-07-01" \
    -H "content-type: application/json" \
    -d '{
      "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."},
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."}
      ]
    }'
  ```

  ```bash CLI
  ant beta:messages create \
    --beta mid-conversation-output-config-2026-07-01 <<'YAML'
  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.
  YAML
  ```

  ```python Python
  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)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const response = await 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 (const block of response.content) {
    if (block.type === "text") {
      console.log(block.text);
    }
  }
  ```

  ```csharp C#
  using Anthropic.Models.Beta;
  using Anthropic.Models.Beta.Messages;
  using Model = Anthropic.Models.Messages.Model;

  AnthropicClient client = new();

  var response = await client.Beta.Messages.Create(new MessageCreateParams
  {
      Model = Model.ClaudeFable5_1,
      MaxTokens = 4096,
      OutputConfig = new() { Effort = Effort.High },
      Messages =
      [
          new BetaUserMessageParam { Content = "Plan a migration from SQLite to PostgreSQL in three short steps." },
          new BetaAssistantMessageParam { Content = "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts." },
          // Effort 전용 시스템 메시지: 새 수준은 다음 사용자 턴부터 적용됩니다.
          new BetaSystemMessageParam
          {
              Content = new([]),
              OutputConfig = new() { Effort = BetaSystemMessageOutputConfigEffort.Low },
          },
          new BetaUserMessageParam { Content = "Summarize the plan in one sentence." },
      ],
      Betas = [AnthropicBeta.MidConversationOutputConfig2026_07_01],
  });

  foreach (var block in response.Content)
  {
      if (block.TryPickText(out var textBlock))
      {
          Console.WriteLine(textBlock.Text);
      }
  }
  ```

  ```go Go
  client := anthropic.NewClient()

  response, err := client.Beta.Messages.New(context.Background(), anthropic.BetaMessageNewParams{
  	Model:     anthropic.ModelClaudeFable5_1,
  	MaxTokens: 4096,
  	OutputConfig: anthropic.BetaOutputConfigParam{
  		Effort: anthropic.BetaOutputConfigEffortHigh,
  	},
  	Messages: []anthropic.BetaMessageParam{
  		anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Plan a migration from SQLite to PostgreSQL in three short steps.")),
  		{OfAssistant: &anthropic.BetaAssistantMessageParam{
  			Content: []anthropic.BetaContentBlockParamUnion{anthropic.NewBetaTextBlock("1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.")},
  		}},
  		// Effort 전용 시스템 메시지: 새 레벨은 다음 사용자 턴부터 적용됩니다.
  		anthropic.NewBetaSystemMessage(anthropic.BetaSystemMessageOutputConfigParam{
  			Effort: anthropic.BetaSystemMessageOutputConfigEffortLow,
  		}),
  		anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Summarize the plan in one sentence.")),
  	},
  	Betas: []anthropic.AnthropicBeta{anthropic.AnthropicBetaMidConversationOutputConfig2026_07_01},
  })
  if err != nil {
  	log.Fatal(err)
  }

  for _, block := range response.Content {
  	if textBlock, ok := block.AsAny().(anthropic.BetaTextBlock); ok {
  		fmt.Println(textBlock.Text)
  	}
  }
  ```

  ```java Java
  import com.anthropic.models.beta.AnthropicBeta;
  import com.anthropic.models.beta.messages.BetaMessage;
  import com.anthropic.models.beta.messages.BetaOutputConfig;
  import com.anthropic.models.beta.messages.BetaSystemMessageOutputConfig;
  import com.anthropic.models.beta.messages.BetaSystemMessageParam;
  import com.anthropic.models.beta.messages.MessageCreateParams;
  import com.anthropic.models.messages.Model;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_FABLE_5_1)
          .maxTokens(4096L)
          .addBeta(AnthropicBeta.MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01)
          .outputConfig(BetaOutputConfig.builder()
              .effort(BetaOutputConfig.Effort.HIGH)
              .build())
          .addUserMessage("Plan a migration from SQLite to PostgreSQL in three short steps.")
          .addAssistantMessage("1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.")
          // effort 전용 시스템 메시지: 새 수준은 다음 사용자 턴부터 적용됩니다.
          .addMessage(BetaSystemMessageParam.builder()
              .contentOfBlocks(List.of())
              .outputConfig(BetaSystemMessageOutputConfig.builder()
                  .effort(BetaSystemMessageOutputConfig.Effort.LOW)
                  .build())
              .build())
          .addUserMessage("Summarize the plan in one sentence.")
          .build();

      BetaMessage response = client.beta().messages().create(params);
      response.content().stream()
          .flatMap(block -> block.text().stream())
          .forEach(textBlock -> IO.println(textBlock.text()));
  }
  ```

  ```php PHP
  use Anthropic\Beta\AnthropicBeta;
  use Anthropic\Beta\Messages\BetaMessageParam;
  use Anthropic\Beta\Messages\BetaOutputConfig;
  use Anthropic\Beta\Messages\BetaSystemMessageOutputConfig;
  use Anthropic\Beta\Messages\BetaTextBlock;
  use Anthropic\Client;
  use Anthropic\Messages\Model;

  $client = new Client();

  $response = $client->beta->messages->create(
      model: Model::CLAUDE_FABLE_5_1,
      maxTokens: 4096,
      outputConfig: BetaOutputConfig::with(effort: 'high'),
      messages: [
          BetaMessageParam::with(role: 'user', content: 'Plan a migration from SQLite to PostgreSQL in three short steps.'),
          BetaMessageParam::with(role: 'assistant', content: '1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.'),
          // effort 전용 시스템 메시지: 새 수준은 다음 사용자 턴부터 적용됩니다.
          BetaMessageParam::with(
              role: 'system',
              content: [],
              outputConfig: BetaSystemMessageOutputConfig::with(effort: 'low'),
          ),
          BetaMessageParam::with(role: 'user', content: 'Summarize the plan in one sentence.'),
      ],
      betas: [AnthropicBeta::MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01],
  );

  foreach ($response->content as $block) {
      if ($block instanceof BetaTextBlock) {
          echo $block->text, PHP_EOL;
      }
  }
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  response = client.beta.messages.create(
    model: Anthropic::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: [Anthropic::AnthropicBeta::MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01]
  )

  response.content.each do |block|
    case block
    when Anthropic::Beta::BetaTextBlock
      puts block.text
    end
  end
  ```
</CodeGroup>

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

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

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

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

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

이 메시지가 내용이 있는 `system` 메시지 옆에 있는 경우 두 메시지 모두 [대화 중 system 메시지의 배치 규칙](https://platform.claude.com/docs/ko/build-with-claude/mid-conversation-system-messages#limitations)을 따라야 합니다.

Amazon Bedrock InvokeModel API에서는 베타 값을 헤더 대신 요청 본문의 `anthropic_beta` 배열로 전송하세요. 해당 환경에서 메시지별 effort를 지원하는 모델은 [Bedrock에서의 대화 중간 시스템 메시지](https://platform.claude.com/docs/ko/build-with-claude/claude-on-amazon-bedrock-legacy#mid-conversation-system-messages-on-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 비교

요청 간에 [최상위 값을 변경](https://platform.claude.com/docs/ko/build-with-claude/effort#top-level-effort-on-the-next-request)하는 것보다 메시지별 effort를 사용하는 것이 좋습니다. 메시지별 변경은 그 이전의 모든 내용을 그대로 유지하므로 캐시된 접두사가 계속 일치합니다. 최상위 변경은 캐시를 다시 시작합니다. Claude Fable 5.1에서는 최상위 변경이 모델을 덜 안정적으로 조정하기도 합니다. 모델의 이전 응답이 이전 수준으로 작성되었고, 모델은 그 응답과 일관성을 유지하려는 경향이 있기 때문입니다.

## 제공 여부

메시지별 effort은(는) 일부 모델에서 베타 상태입니다.

### API 지원

#### [Messages API](https://platform.claude.com/docs/ko/build-with-claude/working-with-messages)

* 제공 여부: 사용 가능

| 상태             | 클라우드 플랫폼                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 모델                                                                                                                                                                                                                                                                                                                                         |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 베타             | Claude API, [Amazon Bedrock](https://platform.claude.com/docs/ko/build-with-claude/claude-in-amazon-bedrock), [Claude Platform on AWS](https://platform.claude.com/docs/ko/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/anthropic-managed), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/google-managed), [Microsoft Foundry](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry) | [Claude Fable 5.1](https://platform.claude.com/docs/ko/models/fable-5-1/overview), [Claude Opus 5.5](https://platform.claude.com/docs/ko/models/opus-5-5/overview)                                                                                                                                                                         |
| 베타<sup>1</sup> | [Amazon Bedrock (bedrock-runtime)](https://platform.claude.com/docs/ko/build-with-claude/claude-on-amazon-bedrock-legacy)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | [Claude Fable 5.2](https://platform.claude.com/docs/ko/models/fable-5-2/overview), [Claude Mythos 5.2](https://platform.claude.com/docs/ko/models/mythos-5-2/overview), [Claude Fable 5.1](https://platform.claude.com/docs/ko/models/fable-5-1/overview), [Claude Opus 5.5](https://platform.claude.com/docs/ko/models/opus-5-5/overview) |
| 베타             | Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/ko/build-with-claude/claude-platform-on-aws), [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/anthropic-managed), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/google-managed), [Microsoft Foundry](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry)                                                                                                   | [Claude Fable 5.2](https://platform.claude.com/docs/ko/models/fable-5-2/overview), [Claude Opus 5](https://platform.claude.com/docs/ko/models/opus-5/overview), [Claude Sonnet 5.5](https://platform.claude.com/docs/ko/models/sonnet-5-5/overview), [Claude Haiku 5.5](https://platform.claude.com/docs/ko/models/haiku-5-5/overview)     |
| 베타             | Claude API, [Amazon Bedrock](https://platform.claude.com/docs/ko/build-with-claude/claude-in-amazon-bedrock), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/google-managed), [Microsoft Foundry (hosted on Anthropic)](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry)                                                                                                                                                                                                                                               | [Claude Mythos 5.1](https://platform.claude.com/docs/ko/models/mythos-5-1/overview)                                                                                                                                                                                                                                                        |
| 베타             | Claude API, [Claude Models on Google Cloud (Anthropic managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/anthropic-managed), [Claude Models on Google Cloud (Google managed)](https://platform.claude.com/docs/ko/build-with-claude/claude-models-on-google-cloud/google-managed), [Microsoft Foundry (hosted on Anthropic)](https://platform.claude.com/docs/ko/build-with-claude/claude-in-microsoft-foundry)                                                                                                                                                                                     | [Claude Mythos 5.2](https://platform.claude.com/docs/ko/models/mythos-5-2/overview)                                                                                                                                                                                                                                                        |

1. 요청 본문의 `anthropic_beta` 배열에 베타 값을 보내세요.

#### [Managed Agents](https://platform.claude.com/docs/ko/managed-agents/overview)

* 제공 여부: 사용 불가
* 사용법: 대신 에이전트의 모델 설정을 재정의하여 세션의 노력 수준을 설정하세요.

### 필수 베타 헤더

[베타 헤더 개요](https://platform.claude.com/docs/ko/api/beta-headers)

베타 헤더를 사용하면 실험적 기능과 새로운 모델 기능이 표준 API에 포함되기 전에 액세스할 수 있습니다.

* `mid-conversation-output-config-2026-07-01`
