---
title: エフォート
url: https://platform.claude.com/docs/ja/build-with-claude/effort
description: effortパラメータを使用して、Claudeが応答時に使用するトークン数を制御し、応答の徹底性とトークン効率のバランスを調整します。
featureMetadata:
  status: ga
  zdr:
    eligibility: eligible
    note: Excludes [Covered Models](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements).
  supportedModels:
    - claude-fable-5-1
    - claude-mythos-5-1
    - claude-fable-5
    - claude-mythos-5
    - claude-mythos-preview
    - claude-opus-5-5
    - claude-opus-5
    - claude-opus-4-8
    - claude-opus-4-7
    - claude-opus-4-6
    - claude-opus-4-5-20251101
    - claude-sonnet-5-5
    - claude-sonnet-5
    - claude-sonnet-4-6
    - claude-haiku-5-5
  supportedPlatforms:
    Claude API: ga
    Claude Platform on AWS: ga
    Amazon Bedrock: ga
    Google Cloud: ga
    Microsoft Foundry: ga
---

「effort」（エフォート）パラメータを使用すると、Claudeがリクエストに応答する際に費やすトークン数を制御できます。単一のモデルで、応答の徹底度とトークン効率のバランスを調整できます。トップレベルのeffortパラメータは、サポートされているすべてのモデルでベータヘッダーなしで利用できます。[メッセージごとのエフォート](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)はベータ版です。

<Tip>
  エフォートが思考とどのように相互作用するか、またどの制御手段を使うべきかについては、[思考とエフォート](https://platform.claude.com/docs/ja/build-with-claude/thinking#thinking-and-effort)を参照してください。適応型思考が利用可能な場合、思考の深さを制御するにはエフォートを使用することを推奨します。
</Tip>

## エフォートレベルを設定する

リクエストに`output_config.effort`を設定します。次の例では、`medium`エフォートで1つのリクエストを実行し、応答テキストを出力します。

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 4096,
      "messages": [{
        "role": "user",
        "content": "Analyze the trade-offs between microservices and monolithic architectures"
      }],
      "output_config": {
        "effort": "medium"
      }
    }'
  ```

  ```bash CLI
  ant messages create \
    --model claude-opus-5-5 \
    --max-tokens 4096 \
    --output-config '{effort: medium}' \
    --message '{role: user, content: "Analyze the trade-offs between microservices and monolithic architectures"}' \
    --transform 'content.#(type=="text").text' \
    --raw-output
  ```

  ```python Python
  client = anthropic.Anthropic()

  response = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=4096,
      messages=[
          {
              "role": "user",
              "content": "Analyze the trade-offs between microservices and monolithic architectures",
          }
      ],
      output_config={"effort": "medium"},
  )

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

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

  const response = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [
      {
        role: "user",
        content: "Analyze the trade-offs between microservices and monolithic architectures"
      }
    ],
    output_config: {
      effort: "medium"
    }
  });

  const textBlock = response.content.find(
    (block): block is Anthropic.TextBlock => block.type === "text"
  );
  console.log(textBlock?.text);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 4096,
      Messages = [
          new() {
              Role = Role.User,
              Content = "Analyze the trade-offs between microservices and monolithic architectures"
          }
      ],
      OutputConfig = new OutputConfig
      {
          Effort = Effort.Medium
      }
  };

  var message = await client.Messages.Create(parameters);
  Console.WriteLine(message);
  ```

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

  response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 4096,
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("Analyze the trade-offs between microservices and monolithic architectures")),
  	},
  	OutputConfig: anthropic.OutputConfigParam{
  		Effort: anthropic.OutputConfigEffortMedium,
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  for _, block := range response.Content {
  	if textBlock, ok := block.AsAny().(anthropic.TextBlock); ok {
  		fmt.Println(textBlock.Text)
  	}
  }
  ```

  ```java Java
  import com.anthropic.models.messages.OutputConfig;

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

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_OPUS_5_5)
          .maxTokens(4096L)
          .addUserMessage("Analyze the trade-offs between microservices and monolithic architectures")
          .outputConfig(OutputConfig.builder()
              .effort(OutputConfig.Effort.MEDIUM)
              .build())
          .build();

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

  ```php PHP
  $client = new Client();

  $message = $client->messages->create(
      maxTokens: 4096,
      messages: [
          ['role' => 'user', 'content' => 'Analyze the trade-offs between microservices and monolithic architectures']
      ],
      model: 'claude-opus-5-5',
      outputConfig: ['effort' => 'medium'],
  );

  foreach ($message->content as $block) {
      if ($block->type === 'text') {
          echo $block->text, PHP_EOL;
      }
  }
  ```

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

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [
      { role: "user", content: "Analyze the trade-offs between microservices and monolithic architectures" }
    ],
    output_config: {
      effort: "medium"
    }
  )

  message.content.each do |block|
    puts block.text if block.type == :text
  end
  ```
</CodeGroup>

## エフォートの仕組み

ほとんどのClaudeモデルはデフォルトでhighエフォートとなり、優れた結果を得るために必要なだけトークンを消費します。Claude Opus 5.5とClaude Haiku 5.5のデフォルトはmediumです。エフォートレベルを`max`に上げて絶対的に最高の能力を引き出すことも、レベルを下げてトークン使用量をより控えめにし、ある程度の能力低下を受け入れつつ速度とコストを最適化することもできます。

<Tip>
  `effort`をモデルのデフォルト（Claude Opus 5.5とClaude Haiku 5.5では`"medium"`、その他のモデルでは`"high"`）に設定すると、`effort`パラメータを完全に省略した場合とまったく同じ動作になります。
</Tip>

effortパラメータは、応答内の**すべてのトークン**に影響します。これには以下が含まれます。

* テキストによる応答と説明
* ツール呼び出しと関数の引数
* 思考（有効な場合）

エフォートはすべての出力トークンに適用されるため、思考が有効かどうかにかかわらず機能します。エフォートを下げると、ツール呼び出しの数も減り、より簡潔になります。

### エフォートレベル

| レベル      | 説明                                                                                                                                                                                                                                                                       | 典型的なユースケース                                         |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
| `max`    | トークン消費に制約のない、絶対的な最大能力。Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 5.5、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 5.5、Claude Sonnet 5、Claude Sonnet 4.6、Claude Haiku 5.5で利用可能です。 | 可能な限り深い推論と最も徹底的な分析を必要とするタスク                        |
| `xhigh`  | 長期的な作業のための拡張された能力。Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5、Claude Mythos 5、Claude Opus 5.5、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Sonnet 5.5、Claude Sonnet 5、Claude Haiku 5.5で利用可能です。                                                             | 数百万トークン規模の予算を持つ、長時間（30分以上）実行されるエージェントタスクやコーディングタスク |
| `high`   | 優れた結果を得るために、タスクに必要なだけトークンを消費します。Claude Opus 5.5とClaude Haiku 5.5を除く、エフォートをサポートするすべてのモデルでのデフォルトです。                                                                                                                                                                        | 複雑な推論、難しいコーディング問題、エージェントタスク                        |
| `medium` | 適度なトークン節約を伴うバランスの取れたアプローチ。Claude Opus 5.5とClaude Haiku 5.5でのデフォルトです。                                                                                                                                                                                                     | 速度、コスト、パフォーマンスのバランスが求められるエージェントタスク                 |
| `low`    | 最も効率的。ある程度の能力低下を伴いつつ、大幅なトークン節約が可能です。                                                                                                                                                                                                                                     | サブエージェントなど、最高の速度と最低のコストが求められるよりシンプルなタスク            |

`max`をサポートするすべてのモデルが`xhigh`をサポートしているわけではありません。

<Note>
  エフォートは動作上のシグナルであり、厳密なトークン予算ではありません。低いエフォートレベルでも、Claudeは十分に難しい問題については思考しますが、同じ問題に対して高いエフォートレベルの場合よりも思考量は少なくなります。
</Note>

以下のモデルごとの推奨事項は、この表と異なる場合にはこの表よりも優先されます。

### Claude Fable 5.1の推奨エフォートレベル

Claude Fable 5.1は5つのエフォートレベルすべてをサポートしています。**デフォルトの`high`から始めてください。** 最も能力に敏感なエージェント型作業やコーディング作業には`xhigh`または`max`に上げ、評価で品質が維持されることが確認できたら、定型的な作業やレイテンシに敏感な作業には`medium`または`low`に下げてください。`high`以上では、大きな`max_tokens`を設定してください。これは総出力（思考と応答テキストの合計）に対するハードリミットです。同じ推奨事項がClaude Mythos 5.1にも適用されます。[Claude Fable 5.1のプロンプティング](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-fable-5-1#consider-all-effort-levels)を参照してください。

Claude Fable 5.1は、メッセージごとの`output_config`による[会話途中でのエフォート変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)もサポートしており、これによりプロンプトキャッシュが保持されます。

### Claude Fable 5の推奨エフォートレベル

エフォートは、Claude Fable 5において知能、レイテンシ、コストのトレードオフを調整するための主要な制御手段です。**ほとんどのタスクではデフォルトの`high`から始め**、最も能力に敏感なワークロードには`xhigh`を使用し、定型的な作業には`medium`または`low`に下げてください。Claude Fable 5では低いエフォート設定でも十分に高いパフォーマンスを発揮し、以前のモデルの`xhigh`のパフォーマンスを上回ることもよくあります。`high`および`xhigh`では、大きな`max_tokens`を設定してください。これは総出力（思考と応答テキストの合計）に対するハードリミットです。[コスト管理](https://platform.claude.com/docs/ja/build-with-claude/thinking-steering-and-cost#cost-control)を参照してください。

タスクは完了するものの必要以上に時間がかかる場合、またはより高速でインタラクティブな作業スタイルを望む場合は、エフォートを下げてください。同じ推奨事項がClaude Mythos 5にも適用されます。より詳しいガイダンスについては、[Claude Fable 5のプロンプティング](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-fable-5)を参照してください。

### Claude Opus 5.5の推奨エフォートレベル

Claude Opus 5.5は5つのエフォートレベルすべてをサポートしており、`medium`がデフォルトです（Claude Opus 5以前のOpusモデルのデフォルトは`high`であるため、`effort`を省略したリクエストはClaude Opus 5の場合より1レベル低く実行されます）。適応型思考は常に有効で無効にできないため、エフォートはモデルがどれだけ推論するか、そしてリクエストにどれだけコストがかかるかを決める主要な制御手段です。以前のモデルの設定を引き継ぐのではなく、独自の評価でエフォートのスイープを実行し、高いレベルでは大きな`max_tokens`を設定してください。これは出力全体（思考と応答テキストの合計）に対するハードリミットです。`thinking: {"type": "disabled"}`を設定したリクエストは、どのエフォートレベルでも400エラーを返します。Claude Opus 5.5は、メッセージごとの`output_config`による[会話途中でのエフォートの変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)もサポートしており、これによりプロンプトキャッシングのキャッシュが保持されます。[Claude Opus 5.5へのプロンプティング](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-opus-5-5)を参照してください。

### Claude Opus 5の推奨エフォートレベル

Claude Opus 5は5つのエフォートレベルすべてをサポートしています。**デフォルトである`high`から始め**、評価に基づいて調整してください。要求の厳しいコーディングやエージェント型作業では`xhigh`に、タスクが制約のないトークン消費に見合う場合は`max`に上げ、評価で品質が維持されることが示される場合は、トークンコストと応答時間の主要な制御手段として`low`と`medium`を積極的に使用してください。以前のモデルからエフォート設定を引き継いだ場合は、それを再利用するのではなく、評価で新たにエフォートのスイープを実行してください。

エフォートは思考の量を制御するものであり、表示される応答の長さを制御するものではありません。Claude Opus 5では、エフォートを変更しても応答が確実に短くなるわけではないため、代わりに[長さをプロンプトで指定](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-opus-5#response-length-and-verbosity)してください。

APIのデフォルトは`high`です。別のレベルを使用するには、`effort`を明示的に設定してください。渡した値がデフォルトより優先されます。

Claude Opus 5では、`xhigh`または`max`エフォートで思考を無効にすることはできません。これらのレベルで`thinking: {"type": "disabled"}`を設定したリクエストは400エラーを返します。[思考とエフォート](https://platform.claude.com/docs/ja/build-with-claude/effort#effort-with-thinking)を参照してください。

Claude Opus 5を`xhigh`または`max`エフォートで実行する場合は、モデルがサブエージェントやツール呼び出しにわたって思考し行動する余地を持てるよう、大きな`max_tokens`を設定してください。64kトークンから始めてそこから調整するのが妥当なデフォルトです。

Claude Opus 5は、メッセージごとの`output_config`による[会話途中でのエフォート変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)もサポートしており、これによりプロンプトのキャッシュが保持されます。Amazon BedrockのClaude Opus 5では、メッセージごとのエフォートは利用できません。

### Claude Opus 4.8の推奨エフォートレベル

Claude Opus 4.7のガイダンスはClaude Opus 4.8にも適用されます。**コーディングおよびエージェント型のユースケースでは`xhigh`から始め**、その他のほとんどの知能に敏感なワークロードには`high`を使用し、低いレベルでも評価で品質が維持されることを測定した場合にのみ`medium`または`low`に下げてください。

APIのデフォルトは`high`です。別のレベルを使用するには`effort`を明示的に設定してください。渡した値がデフォルトを上書きします。

Claude Opus 4.8を`xhigh`または`max`エフォートで実行する場合は、モデルがサブエージェントやツール呼び出しにわたって思考し行動する余地を持てるよう、大きな`max_tokens`を設定してください。64kトークンから始めてそこから調整するのが妥当なデフォルトです。

### Claude Opus 4.7の推奨エフォートレベル

**コーディングおよびエージェント型のユースケースでは`xhigh`から始め**、知能が重視されるほとんどのワークロードでは`high`を最低ラインとして使用してください。コストが重視されるワークロードでは`medium`に下げ、評価で`xhigh`に測定可能な改善の余地があることが示された場合にのみ`max`に上げてください。

APIのデフォルトは`high`です。`xhigh`を使用するには、`effort`を明示的に設定してください。渡した値がデフォルトより優先されます。

| エフォート    | Claude Opus 4.7向けのガイダンス                                                                                            |
| -------- | ------------------------------------------------------------------------------------------------------------------ |
| `low`    | 効率的ですが、短く範囲が限定されたタスクに最適です。タスクに複数のセクションがある場合は、`low`と明示的なチェックリストを組み合わせてください。                                         |
| `medium` | コストを削減しつつ良好な結果を得たい、平均的なワークフロー向けのそのまま使える選択肢です。                                                                      |
| `high`   | 知能とトークン消費のバランスが依然として必要な高度なユースケース。多くの場合、品質とトークン効率の最適なバランスとなります。                                                     |
| `xhigh`  | コーディングやエージェント型作業、および繰り返しのツール呼び出し、詳細なウェブ検索、ナレッジベース検索などの探索的タスクに推奨される出発点です。`high`よりも大幅に多いトークン使用量を想定してください。            |
| `max`    | 最先端の問題のために取っておいてください。ほとんどのワークロードでは、`max`は比較的小さな品質向上に対して大きなコストを追加し、一部の構造化出力タスクや知能がそれほど重視されないタスクでは考えすぎにつながる可能性があります。 |

Claude Opus 4.7は、特に`low`と`medium`において、Claude Opus 4.6よりもエフォートレベルをより厳密に守ります。低いエフォートレベルでは、モデルは要求された以上のことを行うのではなく、要求された内容に作業範囲を限定します。Claude Opus 4.7で複雑な問題に対する推論が浅いと感じた場合は、プロンプトで回避するのではなくエフォートを上げてください。レイテンシのためにエフォートを低く保つ必要がある場合は、「このタスクには複数ステップの推論が含まれます。応答する前に慎重に考えてください。」のような的を絞ったガイダンスを追加してください。

Claude Opus 4.7を`xhigh`または`max`エフォートで実行する場合は、モデルがサブエージェントやツール呼び出しにわたって思考し行動する余地を持てるよう、大きな`max_tokens`を設定してください。64kトークンから始めてそこから調整するのが妥当なデフォルトです。

### Claude Sonnet 5.5の推奨エフォートレベル

Claude Sonnet 5.5は5つのエフォートレベルすべてをサポートしており、Claude APIでのデフォルトは`high`です。レベルは再調整されているため、あるレベルがClaude Sonnet 5の同じレベルと同じ量の思考を生み出すわけではありません。Claude Sonnet 5で使用していた設定を引き継ぐのではなく、評価で新たにエフォートのスイープを実行してください。ワークロードがエージェント型またはレイテンシ重視でない限り、`high`から始めてください。エージェント型コーディングや複数ステップのツール使用では、明確に定義されたタスクには`medium`から始め、より難しいタスクや長いタスクには`high`に移行してください。チャットやその他のレイテンシが重視される作業では、`medium`または`low`から始めてください。`xhigh`または`max`は、評価で品質向上が示される場合にのみ使用してください。`max_tokens`は思考と応答の両方に余裕を持たせて設定してください。思考の内容が返されない場合でも、思考は`max_tokens`にカウントされます。エージェント型コーディングでは、`max_tokens`をモデルの最大値である128,000に設定し、応答を[ストリーミング](https://platform.claude.com/docs/ja/build-with-claude/streaming)してください。

事前の思考をオフにするには、`"disabled"`の代わりに`thinking: {"type": "between_tools"}`を送信してください。これはClaude Sonnet 5.5で最も低い思考設定であり、`low`、`medium`、`high`エフォートで機能します。`xhigh`または`max`では、これを含むリクエストは400エラーを返すため、これらのレベルでは適応型思考を使用してください。`thinking`フィールドを省略するか、`thinking: {"type": "adaptive"}`を送信します。[事前思考なしでの実行](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-sonnet-5-5#running-without-up-front-thinking)を参照してください。

Claude Sonnet 5.5は、メッセージごとの`output_config`による[会話途中でのエフォート変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)もサポートしており、これによりプロンプトのキャッシュが保持されます。`between_tools`を使用している場合、会話途中でエフォートを変更することはできません。有効なレベルと異なるメッセージごとの`output_config.effort`は400エラーを返します。ターンごとにエフォートを変えるには、適応型思考を使用してください。[Claude Sonnet 5.5へのプロンプト](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-sonnet-5-5#calibrate-effort)を参照してください。

### Claude Sonnet 5の推奨エフォートレベル

Claude Sonnet 5は、Claude APIおよびClaude Codeでデフォルトで`high`エフォートになります。

* **Highエフォート（デフォルト）：** 速度やコストよりも品質が重要な、複雑な推論、コーディング、エージェント型タスクに適しています。
* **Xhighエフォート：** 最も難しいコーディングおよびエージェント型タスク向け。[Claude Sonnet 5のプロンプティング](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-sonnet-5#calibrating-effort-and-thinking-depth)を参照してください。
* **Mediumエフォート：** デフォルトからコストを節約するための一段階下の設定。highエフォートのClaude Sonnet 4.6に匹敵します。
* **Lowエフォート：** 大量処理またはレイテンシに敏感なワークロード向け。より速い応答が優先されるチャットや非コーディングのユースケースに適しています。
* **Maxエフォート：** トークン消費に制約のない絶対的に最高の能力を必要とするタスク向け。

### Claude Sonnet 4.6の推奨エフォートレベル

Sonnet 4.6はデフォルトで`high`エフォートになります。予期しないレイテンシを避けるため、Sonnet 4.6を使用する際はエフォートを明示的に設定してください。

* **Mediumエフォート**（推奨デフォルト）：ほとんどのアプリケーションにおいて、速度、コスト、パフォーマンスの最適なバランスを提供します。エージェント型コーディング、ツールを多用するワークフロー、コード生成に適しています。
* **Lowエフォート：** 大量処理またはレイテンシが重視されるワークロード向けです。より速い応答が優先されるチャットやコーディング以外のユースケースに適しています。
* **Highエフォート：** 速度やコストよりも品質が重要な、複雑な推論やタスク向けです。
* **Maxエフォート：** トークン消費に制約なく、絶対的に最高の能力を必要とするタスク向けです。

### Claude Haiku 5.5の推奨エフォートレベル

Claude Haiku 5.5は5つのエフォートレベルすべてをサポートしており、デフォルトは`medium`です。エフォートは、モデルがどれだけ思考するか、そしてそれに伴う品質、レイテンシ、コストを決める主要な制御手段です。エージェント型コーディングを含むほとんどの作業では、**`medium`から始めてください**。チャット、短いツールタスク、シンプルで大量のリクエストには、最も安価で高速なレベルである`low`を使用してください。長いエージェントプロンプトでは、`low`の場合、モデルが検索を省略したり、早期に停止したり、チェックを省略したりする可能性が高くなります。ナレッジワーク、より長いエージェントタスク、厳密な指示追従には`high`を使用してください。`xhigh`または`max`は、評価で品質向上が示された場合にのみ使用し、パフォーマンス、コスト、速度の面でClaude Sonnet 5.5と比較してください。思考はデフォルトで有効であり、`max_tokens`にカウントされるため、その分の余裕を残してください。[Claude Haiku 5.5へのプロンプト](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-haiku-5-5#use-effort-to-control-thinking)を参照してください。

思考を減らすには、エフォートレベルを下げてください。`high`エフォート以下では、`thinking: {"type": "disabled"}`を送信することもできます。`xhigh`または`max`ではこれは400エラーを返すため、これらのレベルでは適応型思考を使用してください。`thinking`フィールドを省略するか、`thinking: {"type": "adaptive"}`を送信します。

Claude APIおよびGoogle Cloudでは、Claude Haiku 5.5はメッセージごとの`output_config`による[会話途中でのエフォート変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)もサポートしており、これによりプロンプトのキャッシュが保持されます。`thinking: {"type": "disabled"}`を使用している場合、会話途中でエフォートを変更することはできません。有効なレベルと異なるメッセージごとの`output_config.effort`は400エラーを返します。ターンごとにエフォートを変えるには、適応型思考を使用してください。

## ツール使用におけるエフォート

ツールを使用する場合、effortパラメータはツール呼び出しに関する説明とツール呼び出し自体の両方に影響します。低いエフォートレベルでは次のような傾向があります。

* 複数の操作をより少ないツール呼び出しにまとめる
* ツール呼び出しの回数を減らす
* 前置きなしに直接アクションに進む
* 完了後に簡潔な確認メッセージを使用する

高いエフォートレベルでは次のようになる場合があります。

* より多くのツール呼び出しを行う
* アクションを取る前に計画を説明する
* 変更の詳細な要約を提供する
* より包括的なコードコメントを含める

## 思考におけるエフォート

`thinking` パラメータは、Claudeが回答する前に[思考ブロック](https://platform.claude.com/docs/ja/build-with-claude/thinking)で思考するかどうかを制御します。`effort` パラメータは、Claudeが応答全体にどれだけの労力を費やすかを制御し、アダプティブモードではどのくらいの頻度で、どのくらい深く思考するかも含まれます。`effort` の値として `adaptive` を渡さないでください。`adaptive` は思考モードであり、effortレベルではありません。

高いeffortレベルでは、Claudeはより積極的に、より長く思考します。ツール使用のループでは、ツールの結果を処理するだけのフォローアップリクエストは、どのレベルでも思考をスキップすることがあります。低いレベルでは、Claudeはよりシンプルな問題に対して思考を完全にスキップすることがあります。2つの制御がどのように連携するかについての詳しいガイダンスは、[思考とeffort](https://platform.claude.com/docs/ja/build-with-claude/thinking#thinking-and-effort)を参照してください。

エフォートをサポートする唯一の拡張思考専用モデルであるClaude Opus 4.5では、エフォートは[`budget_tokens`](https://platform.claude.com/docs/ja/build-with-claude/extended-thinking)と併用されます。タスクに応じたエフォートレベルを設定し、次にタスクが必要とする推論の深さに基づいて思考トークン予算を設定してください。

モデルごとの思考の利用可否については、[モデルごとの設定表](https://platform.claude.com/docs/ja/build-with-claude/thinking-troubleshooting#supported-models)を参照してください。エフォートは思考の有無にかかわらず機能します。[エフォートの仕組み](https://platform.claude.com/docs/ja/build-with-claude/effort#how-effort-works)を参照してください。

## 会話途中でエフォートを変更する

会話の後半のターンを別のエフォートレベルで実行する方法は2つあります。Claude Fable 5.1、Claude Mythos 5.1、Claude Opus 5.5、Claude Opus 5、Claude Sonnet 5.5、Claude Haiku 5.5では、メッセージごとのエフォート変更を使用します。これによりプロンプトのキャッシュが保持されます。その他のモデルでは、次のリクエストで新しいトップレベルの値を設定します。この場合、キャッシュは最初からやり直しになります。

### メッセージごとのエフォート（ベータ）

メッセージごとのエフォートはベータ版です。Claude APIおよび[Google Cloud](https://platform.claude.com/docs/ja/build-with-claude/claude-on-vertex-ai)では、Claude Fable 5.1、Claude Mythos 5.1、Claude Opus 5.5、Claude Opus 5、Claude Sonnet 5.5、Claude Haiku 5.5で利用可能です。[Amazon Bedrock](https://platform.claude.com/docs/ja/build-with-claude/claude-in-amazon-bedrock)では、Claude Fable 5.1、Claude Mythos 5.1、Claude Opus 5.5で利用可能です。[ベータヘッダー](https://platform.claude.com/docs/ja/api/beta-headers)`mid-conversation-output-config-2026-07-01`が必要です。Amazon Bedrockの[InvokeModel API](https://platform.claude.com/docs/ja/build-with-claude/claude-on-amazon-bedrock-legacy)では、Claude Fable 5.1とClaude Opus 5.5で利用可能で、代わりにその値をリクエストボディの`anthropic_beta`配列で送信します。

ベータ値がない場合、メッセージごとの`output_config`は400エラー`messages.N.output_config: Extra inputs are not permitted`を返します。ここで`N`は`messages`内の`system`メッセージのインデックスです。ベータ値がある場合、Claude Fable 5を含む、メッセージごとのエフォートに対応していないモデルは、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では、会話途中でエフォートを変更することはできません。有効なレベルと異なるメッセージごとの`output_config.effort`は400エラーを返します。ターンごとにエフォートを変えるには、適応型思考を使用してください。

空の`content`と、`output_config.effort`に新しいレベルを持つ`role: "system"`メッセージを追加します。新しい入力を含む`user`ターンの直後に配置すると、そのターンに対するClaudeの応答のレベルが設定されます。次の例のように`assistant`ターンと次の`user`ターンの間など、それ以外の場所に配置すると、新しい入力を含む次の`user`ターンから有効になります。`tool_result`ブロックのみを含む`user`ターンは新しい入力とはみなされないため、ツール使用ループでそのようなターンの後に配置された変更は、新しい入力を含む次の`user`ターンまで待機します。その後、新しいレベルは後続のメッセージで変更されるまで維持されます。そのメッセージより前のすべては変更されないため、キャッシュされたプレフィックスは引き続き一致します。

次の例では、`high`で開始し、定型的なフォローアップのために`low`に下げています。

<CodeGroup>
  ```bash cURL
  # effort のみのシステムメッセージです。新しいレベルは次のユーザーターンから有効になります。
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -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 \
    --transform 'content.#(type=="text").text' --raw-output <<'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() { Role = Role.User, Content = "Plan a migration from SQLite to PostgreSQL in three short steps." },
          new() { Role = Role.Assistant, Content = "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts." },
          // effort のみのシステムメッセージです。新しいレベルは次のユーザーターンから有効になります。
          new()
          {
              Role = Role.System,
              Content = new([]),
              OutputConfig = new() { Effort = BetaSystemMessageOutputConfigEffort.Low },
          },
          new() { Role = Role.User, 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.")),
  		{
  			Role:    anthropic.BetaMessageParamRoleAssistant,
  			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.BetaMessageParam;
  import com.anthropic.models.beta.messages.BetaOutputConfig;
  import com.anthropic.models.beta.messages.BetaSystemMessageOutputConfig;
  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(BetaMessageParam.builder()
              .role(BetaMessageParam.Role.SYSTEM)
              .contentOfBetaContentBlockParams(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\Client;

  $client = new Client();

  $response = $client->beta->messages->create(
      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->type === 'text') {
          echo $block->text, PHP_EOL;
      }
  }
  ```

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

  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: [Anthropic::AnthropicBeta::MID_CONVERSATION_OUTPUT_CONFIG_2026_07_01]
  )

  response.content.each do |block|
    puts block.text if block.type == :text
  end
  ```
</CodeGroup>

エフォートのみのシステムメッセージはテキストを含まないため、[会話途中のシステムメッセージの配置ルール](https://platform.claude.com/docs/ja/build-with-claude/mid-conversation-system-messages#limitations)は適用されません。最初のエントリとして、または`assistant`ターンと次の`user`ターンの間など、`messages`内のどこにでも配置できます。値はレベル名（`low`、`medium`、`high`、`xhigh`、`max`）です。

リクエスト間でトップレベルの値を変更するよりも、この形式を優先してください。トップレベルの変更ではキャッシュが最初からやり直しになるうえ、Claude Fable 5.1ではモデルの誘導の信頼性も低くなります。モデルの以前の応答は前のレベルで書かれており、モデルはそれらとの一貫性を保とうとする傾向があるためです。

### 次のリクエストでのトップレベルのエフォート

トップレベルの`output_config.effort`はリクエスト全体に適用されます。会話の後の部分を異なるレベルで実行するには、次のリクエストで新しい値を設定します。トップレベルのエフォートはレンダリングされるプロンプトを形成するため、リクエスト間で変更すると以前のターンからのキャッシュされたプレフィックスは保持されません。長いセッションにわたって[プロンプトキャッシング](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching)に依存しており、モデルがメッセージごとのエフォートをサポートしていない場合は、最初にエフォートレベルを選択し、それを一定に保ってください。

## ベストプラクティス

1. **エフォートを明示的に設定する：** APIのデフォルトは`high`（Claude Opus 5.5とClaude Haiku 5.5では`medium`）ですが、適切な出発点はモデルとワークロードによって異なります。
2. **速度が重視されるタスクやシンプルなタスクにはlowを使用する：** レイテンシが重要な場合やタスクが単純な場合、lowエフォートは応答時間とコストを大幅に削減できます。
3. **ユースケースをテストする：** エフォートレベルの影響はタスクの種類によって異なります。デプロイする前に、特定のユースケースでパフォーマンスを評価してください。
4. **動的なエフォートを検討する：** タスクの複雑さに基づいてエフォートを調整してください。シンプルなクエリにはlowエフォートが適している場合がありますが、エージェント型コーディングや複雑な推論にはhighエフォートが有効です。1つの会話内でエフォートを変える前に、次の項目を確認してください。
5. **キャッシュされた会話内ではトップレベルのエフォートを一定に保つ：** リクエスト間でトップレベルのエフォート値を変更すると[プロンプトキャッシング](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching)が無効になるため、キャッシュヒットに依存する会話内ではなく、ワークロード間で変えるようにしてください。サポートされているモデルでは、代わりにキャッシュを保持する[メッセージごとのエフォート変更](https://platform.claude.com/docs/ja/build-with-claude/effort#change-effort-mid-conversation-beta)を使用してください。[思考とプロンプトキャッシング](https://platform.claude.com/docs/ja/build-with-claude/thinking#thinking-and-prompt-caching)を参照してください。

## 次のステップ

<CardGroup>
  <Card title="タスク予算" icon="gauge" href="https://platform.claude.com/docs/ja/build-with-claude/task-budgets">
    エージェントループ全体に対する参考用のトークン予算をClaudeに与え、長いエージェントタスクでモデルが自己調整できるようにします。
  </Card>

  <Card title="思考の誘導" icon="compass" href="https://platform.claude.com/docs/ja/build-with-claude/thinking-steering-and-cost">
    Claudeがいつ、どれだけ思考するかを判断する適応型思考を理解し、エフォートとプロンプトでそれを誘導します。
  </Card>

  <Card title="思考" icon="brain" href="https://platform.claude.com/docs/ja/build-with-claude/thinking">
    思考の仕組み、Claudeがデフォルトで思考するタイミング、そして思考がエフォートとどのように相互作用するかを理解します。
  </Card>
</CardGroup>
