---
title: レイテンシの削減
url: https://platform.claude.com/docs/ja/test-and-evaluate/strengthen-guardrails/reduce-latency
description: Claude Haiku 5.5のような高速なモデルを選択し、プロンプトと出力のトークンを削減し、レスポンスをストリーミングすることで、Claudeの応答レイテンシを削減します。
---

「latency」（レイテンシ）とは、モデルがプロンプトを処理して出力を生成するのにかかる時間を指します。レイテンシは、モデルのサイズ、プロンプトの複雑さ、モデルとインタラクションポイントを支える基盤インフラストラクチャなど、さまざまな要因の影響を受けます。

<Note>
  まずはモデルやプロンプトの制約なしにうまく機能するプロンプトを設計し、その後でレイテンシ削減の戦略を試すのが常に望ましい方法です。早い段階でレイテンシを削減しようとすると、最高のパフォーマンスがどのようなものかを見極められなくなる可能性があります。
</Note>

***

## レイテンシの測定方法

レイテンシについて議論する際、いくつかの用語や指標に出会うことがあります。

* **ベースラインレイテンシ：** 1秒あたりの入力トークン数や出力トークン数を考慮せずに、モデルがプロンプトを処理してレスポンスを生成するのにかかる時間です。モデルの速度についての大まかな目安となります。
* **「Time to first token」（最初のトークンまでの時間）、すなわちTTFT：** この指標は、プロンプトが送信されてからモデルがレスポンスの最初のトークンを生成するまでにかかる時間を測定します。「streaming」（ストリーミング）を使用していて（詳細は後述）、ユーザーに応答性の高い体験を提供したい場合に特に重要です。

これらの用語についてさらに深く理解するには、[用語集](https://platform.claude.com/docs/ja/about-claude/glossary)をご覧ください。

***

## レイテンシを削減する方法

### 1. 適切なモデルを選択する

レイテンシを削減する最も直接的な方法の1つは、ユースケースに適したモデルを選択することです。Anthropicは、さまざまな機能とパフォーマンス特性を持つ[幅広いモデル](https://platform.claude.com/docs/ja/models/overview)を提供しています。具体的な要件を検討し、速度と出力品質の観点からニーズに最も適したモデルを選択してください。

速度が重要なアプリケーションでは、**Claude Haiku 5.5**が高い知能を維持しながら最速の応答時間を提供します。このモデルでは、[Effort](https://platform.claude.com/docs/ja/build-with-claude/effort)が速度とコストを制御するための主要な手段です。[エフォートを使用して思考を制御する](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/prompting-claude-haiku-5-5#use-effort-to-control-thinking)を参照してください。次の例では、最も安価で最速のレベルである`low`で実行し、思考のために`max_tokens`に余裕を持たせています。

<CodeGroup>
  ```bash cURL
  # 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用します
  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-haiku-5-5",
      "max_tokens": 1024,
      "output_config": {"effort": "low"},
      "messages": [{"role": "user", "content": "Summarize this customer feedback in 2 sentences: [feedback text]"}]
    }'
  ```

  ```bash CLI
  # 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用します
  ant messages create \
    --model claude-haiku-5-5 \
    --max-tokens 1024 \
    --output-config '{effort: low}' \
    --message '{"role": "user", "content": "Summarize this customer feedback in 2 sentences: [feedback text]"}'
  ```

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

  # 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用します
  message = client.messages.create(
      model="claude-haiku-5-5",
      max_tokens=1024,
      output_config={"effort": "low"},
      messages=[
          {
              "role": "user",
              "content": "Summarize this customer feedback in 2 sentences: [feedback text]",
          }
      ],
  )
  print(next(block.text for block in message.content if block.type == "text"))
  ```

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

  // 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用してください
  const message = await client.messages.create({
    model: "claude-haiku-5-5",
    max_tokens: 1024,
    output_config: { effort: "low" },
    messages: [
      {
        role: "user",
        content: "Summarize this customer feedback in 2 sentences: [feedback text]"
      }
    ]
  });
  const textBlock = message.content.find((block) => block.type === "text");
  console.log(textBlock?.text);
  ```

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

  // 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用してください
  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeHaiku5_5,
      MaxTokens = 1024,
      OutputConfig = new() { Effort = Effort.Low },
      Messages = [
          new()
          {
              Role = Role.User,
              Content = "Summarize this customer feedback in 2 sentences: [feedback text]"
          }
      ]
  };
  var message = await client.Messages.Create(parameters);
  foreach (var block in message.Content)
  {
      if (block.TryPickText(out var textBlock))
      {
          Console.WriteLine(textBlock.Text);
          break;
      }
  }
  ```

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

  // 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用してください
  message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeHaiku5_5,
  	MaxTokens: 1024,
  	OutputConfig: anthropic.OutputConfigParam{
  		Effort: anthropic.OutputConfigEffortLow,
  	},
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("Summarize this customer feedback in 2 sentences: [feedback text]")),
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  for _, block := range message.Content {
  	if textBlock, ok := block.AsAny().(anthropic.TextBlock); ok {
  		fmt.Println(textBlock.Text)
  		break
  	}
  }
  ```

  ```java Java
  AnthropicClient client = AnthropicOkHttpClient.fromEnv();

  // 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用してください
  MessageCreateParams params = MessageCreateParams.builder()
      .model(Model.CLAUDE_HAIKU_5_5)
      .maxTokens(1024L)
      .outputConfig(OutputConfig.builder()
          .effort(OutputConfig.Effort.LOW)
          .build())
      .addUserMessage("Summarize this customer feedback in 2 sentences: [feedback text]")
      .build();
  Message message = client.messages().create(params);
  IO.println(message.content().stream()
      .flatMap(block -> block.text().stream())
      .map(TextBlock::text)
      .findFirst()
      .orElse(""));
  ```

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

  // 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用してください
  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [['role' => 'user', 'content' => 'Summarize this customer feedback in 2 sentences: [feedback text]']],
      model: 'claude-haiku-5-5',
      outputConfig: ['effort' => 'low'],
  );
  foreach ($message->content as $block) {
      if ($block->type === 'text') {
          echo $block->text;
          break;
      }
  }
  ```

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

  # 時間的制約のあるアプリケーションでは、Claude Haiku 5.5 を low effort で使用します
  message = client.messages.create(
    model: "claude-haiku-5-5",
    max_tokens: 1024,
    output_config: { effort: :low },
    messages: [{ role: "user", content: "Summarize this customer feedback in 2 sentences: [feedback text]" }]
  )
  puts message.content.find { |block| block.type == :text }&.text
  ```
</CodeGroup>

モデルの指標の詳細については、[モデル概要](https://platform.claude.com/docs/ja/models/overview)ページを参照してください。

### 2. プロンプトと出力の長さを最適化する

高いパフォーマンスを維持しながら、入力プロンプトと期待される出力の両方のトークン数を最小限に抑えます。モデルが処理・生成しなければならないトークンが少ないほど、レスポンスは速くなります。

プロンプトと出力を最適化するためのヒントをいくつか紹介します。

* **明確かつ簡潔に：** プロンプトでは意図を明確かつ簡潔に伝えることを目指してください。不要な詳細や冗長な情報は避けつつ、[Claudeにはユースケースに関するコンテキストがない](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct)ため、指示が不明確だと意図した論理の飛躍を行えない可能性があることに留意してください。
* **より短いレスポンスを求める：** Claudeに簡潔にするよう直接依頼してください。Claudeが望ましくない長さの出力をしている場合は、Claudeに[おしゃべりを抑える](https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct)よう依頼してください。
  <Tip>
    LLMは単語ではなく

    [トークン](https://platform.claude.com/docs/ja/about-claude/glossary#tokens)

    を数えるため、正確な単語数や単語数の上限を求めることは、段落数や文の数の上限を求めることほど効果的な戦略ではありません。
  </Tip>
* **適切な出力制限を設定する：** `max_tokens`パラメータを使用して、生成されるレスポンスの最大長にハードリミットを設定します。これにより、Claudeが過度に長い出力を生成するのを防ぎます。
  <Note>
    レスポンスが

    `max_tokens`

    トークンに達すると、文の途中や単語の途中であってもレスポンスは打ち切られます。そのため、これは後処理が必要になる可能性のある大雑把な手法であり、通常は回答が冒頭に来る多肢選択式や短答式のレスポンスに最も適しています。
  </Note>
* **temperatureを試す：** `temperature`[パラメータ](https://platform.claude.com/docs/ja/api/messages/create)は出力のランダム性を制御します。低い値（例：0.2）は、より焦点を絞った短いレスポンスにつながることがあり、高い値（例：0.8）は、より多様ですが長くなる可能性のある出力になることがあります。Claude 4.7以降のモデルおよびClaude Mythos Previewはデフォルトの`temperature`のみを受け付け、それ以外の値に対しては400エラーを返すため、これらのモデルでは代わりに[effort](https://platform.claude.com/docs/ja/build-with-claude/effort)を下げてください。

プロンプトの明確さ、出力品質、トークン数の間で適切なバランスを見つけるには、ある程度の実験が必要になるかもしれません。

### 3. レスポンスをストリーミングする

ストリーミングは、出力全体が完成する前にモデルがレスポンスの送信を開始できる機能です。ユーザーがモデルの出力をリアルタイムで確認できるため、アプリケーションの体感的な応答性を大幅に向上させることができます。

ストリーミングを有効にすると、モデルの出力が到着するたびに処理し、ユーザーインターフェースを更新したり、他のタスクを並行して実行したりできます。

ユースケースに合わせてストリーミングを実装する方法については、[メッセージのストリーミング](https://platform.claude.com/docs/ja/build-with-claude/streaming)をご覧ください。

***

## 次のステップ

<CardGroup cols={2}>
  <Card title="ハルシネーションの削減" icon="shield" href="https://platform.claude.com/docs/ja/test-and-evaluate/strengthen-guardrails/reduce-hallucinations">
    不確実性を許容し、レスポンスを直接引用に基づかせ、引用によって主張を検証することで、Claudeの出力におけるハルシネーションを最小限に抑えます。
  </Card>

  <Card title="メッセージのストリーミング" icon="bolt" href="https://platform.claude.com/docs/ja/build-with-claude/streaming">
    テキスト、ツール使用、拡張思考のデルタを含むMessages APIのレスポンスを、server-sent eventsで段階的にストリーミングします。
  </Card>
</CardGroup>
