---
title: 降低延遲
url: https://platform.claude.com/docs/zh-TW/test-and-evaluate/strengthen-guardrails/reduce-latency
description: 透過選擇更快的模型（例如 Claude Haiku 5.5）、精簡提示與輸出的 token 數量，以及串流回應，來降低 Claude 的回應延遲。
---

「Latency」（延遲）是指模型處理提示並生成輸出所需的時間。延遲可能受到多種因素影響，例如模型的大小、提示的複雜度，以及支援模型與互動端點的底層基礎設施。

<Note>
  最好的做法永遠是先在不受模型或提示限制的情況下設計出一個運作良好的提示，之後再嘗試降低延遲的策略。過早嘗試降低延遲，可能會讓您無法發現最佳效能的樣貌。
</Note>

***

## 如何衡量延遲

在討論延遲時，您可能會遇到幾個術語與衡量指標：

* **基準延遲（Baseline latency）：** 這是模型處理提示並生成回應所花費的時間，不考慮每秒的輸入與輸出 token 數。它能讓您大致了解模型的速度。
* **「Time to first token」（首個 token 時間），即 TTFT：** 此指標衡量從送出提示開始，到模型生成回應的第一個 token 所需的時間。當您使用「streaming」（串流）（稍後會詳細說明）並希望為使用者提供反應靈敏的體驗時，這項指標特別重要。

若想更深入了解這些術語，請參閱[詞彙表](https://platform.claude.com/docs/zh-TW/about-claude/glossary)。

***

## 如何降低延遲

### 1. 選擇合適的模型

降低延遲最直接的方法之一，就是為您的使用情境選擇合適的模型。Anthropic 提供[一系列模型](https://platform.claude.com/docs/zh-TW/models/overview)，各自具備不同的能力與效能特性。請考量您的具體需求，並在速度與輸出品質方面選擇最符合您需求的模型。

對於速度至關重要的應用程式，**Claude Haiku 5.5** 在維持高智慧水準的同時，提供最快的回應時間。[Effort](https://platform.claude.com/docs/zh-TW/build-with-claude/effort) 是其控制速度和成本的主要方式。請參閱[使用 effort 控制思考](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-engineering/prompting-claude-haiku-5-5#use-effort-to-control-thinking)。以下範例以 `low`（最便宜且最快的等級）執行，並在 `max_tokens` 中為思考保留空間：

<CodeGroup>
  ```bash cURL
  # 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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
  # 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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()

  # 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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();

  // 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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();

  // 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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()

  // 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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();

  // 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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();

  // 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  $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

  # 對於時間敏感的應用程式，請以低 effort 使用 Claude Haiku 5.5
  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/zh-TW/models/overview)頁面。

### 2. 最佳化提示與輸出長度

在維持高效能的前提下，盡量減少輸入提示與預期輸出中的 token 數量。模型需要處理與生成的 token 越少，回應速度就越快。

以下是一些協助您最佳化提示與輸出的技巧：

* **清楚但簡潔：** 力求在提示中清楚且簡潔地傳達您的意圖。避免不必要的細節或冗餘資訊，同時請記住 [Claude 缺乏](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct)關於您使用情境的上下文，如果指示不清楚，可能無法做出您預期的邏輯推斷。
* **要求較短的回應：** 直接要求 Claude 保持簡潔。如果 Claude 輸出的長度超出預期，請要求 Claude [收斂其冗長的表達](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct)。
  <Tip>
    由於 LLM 計算的是 

    [token](https://platform.claude.com/docs/zh-TW/about-claude/glossary#tokens)

     而非字數，要求精確的字數或字數上限，並不如要求段落數或句子數上限來得有效。
  </Tip>
* **設定適當的輸出上限：** 使用 `max_tokens` 參數為生成回應的最大長度設定硬性上限。這可以防止 Claude 生成過長的輸出。
  <Note>
    當回應達到 

    `max_tokens`

     個 token 時，回應將被截斷，可能會斷在句子中間或單字中間，因此這是一種較為粗略的技巧，可能需要後處理，通常最適合用於答案出現在最開頭的選擇題或簡答題回應。
  </Note>
* **嘗試調整 temperature：** `temperature` [參數](https://platform.claude.com/docs/zh-TW/api/messages/create)控制輸出的隨機性。較低的值（例如 0.2）有時可以產生更集中且更短的回應，而較高的值（例如 0.8）可能會產生更多樣化但可能更長的輸出。Claude 4.7 及更新的模型以及 Claude Mythos Preview 僅接受預設的 `temperature`，對於任何其他值都會回傳 400 錯誤，因此在這些模型上請改為降低 [effort](https://platform.claude.com/docs/zh-TW/build-with-claude/effort)。

在提示清晰度、輸出品質與 token 數量之間找到適當的平衡，可能需要一些實驗。

### 3. 串流回應

串流是一項讓模型能在完整輸出完成之前就開始回傳回應的功能。這可以顯著提升您應用程式的感知回應速度，因為使用者可以即時看到模型的輸出。

啟用串流後，您可以在模型輸出抵達時即時處理，同步更新您的使用者介面或平行執行其他任務。

請造訪[串流訊息](https://platform.claude.com/docs/zh-TW/build-with-claude/streaming)，了解如何為您的使用情境實作串流。

***

## 後續步驟

<CardGroup cols={2}>
  <Card title="減少幻覺" icon="shield" href="https://platform.claude.com/docs/zh-TW/test-and-evaluate/strengthen-guardrails/reduce-hallucinations">
    透過允許表達不確定性、以直接引述作為回應依據，以及使用引用來驗證主張，將 Claude 輸出中的幻覺降到最低。
  </Card>

  <Card title="串流訊息" icon="bolt" href="https://platform.claude.com/docs/zh-TW/build-with-claude/streaming">
    透過 server-sent events 逐步串流 Messages API 回應，包括文字、工具使用與擴展思考的增量內容。
  </Card>
</CardGroup>
