---
title: 지연 시간 줄이기
url: https://platform.claude.com/docs/ko/test-and-evaluate/strengthen-guardrails/reduce-latency
description: Claude Haiku 5.5와 같은 더 빠른 모델을 선택하고, 프롬프트 및 출력 토큰을 줄이고, 응답을 스트리밍하여 Claude의 응답 지연 시간을 줄이세요.
---

"Latency"(지연 시간)는 모델이 프롬프트를 처리하고 출력을 생성하는 데 걸리는 시간을 의미합니다. 지연 시간은 모델의 크기, 프롬프트의 복잡성, 모델과 상호작용 지점을 지원하는 기반 인프라 등 다양한 요인의 영향을 받을 수 있습니다.

<Note>
  항상 모델이나 프롬프트 제약 없이 잘 작동하는 프롬프트를 먼저 설계한 다음, 그 후에 지연 시간 감소 전략을 시도하는 것이 좋습니다. 지연 시간을 너무 일찍 줄이려고 하면 최고 성능이 어떤 모습인지 발견하지 못할 수 있습니다.
</Note>

***

## 지연 시간 측정 방법

지연 시간에 대해 논의할 때 여러 용어와 측정 지표를 접할 수 있습니다:

* **기준 지연 시간(Baseline latency):** 초당 입력 및 출력 토큰을 고려하지 않고, 모델이 프롬프트를 처리하고 응답을 생성하는 데 걸리는 시간입니다. 모델의 속도에 대한 전반적인 개념을 제공합니다.
* **"Time to first token"(첫 토큰까지의 시간), 즉 TTFT:** 이 지표는 프롬프트가 전송된 시점부터 모델이 응답의 첫 번째 토큰을 생성하는 데 걸리는 시간을 측정합니다. 스트리밍(뒤에서 자세히 설명합니다)을 사용하면서 사용자에게 반응성 좋은 경험을 제공하고자 할 때 특히 중요합니다.

이러한 용어에 대해 더 깊이 이해하려면 [용어집](https://platform.claude.com/docs/ko/about-claude/glossary)을 확인하세요.

***

## 지연 시간을 줄이는 방법

### 1. 적합한 모델 선택

지연 시간을 줄이는 가장 직접적인 방법 중 하나는 사용 사례에 적합한 모델을 선택하는 것입니다. Anthropic은 다양한 기능과 성능 특성을 가진 [여러 모델](https://platform.claude.com/docs/ko/models/overview)을 제공합니다. 구체적인 요구 사항을 고려하여 속도와 출력 품질 측면에서 필요에 가장 잘 맞는 모델을 선택하세요.

속도가 중요한 애플리케이션의 경우, **Claude Haiku 5.5**는 높은 지능을 유지하면서 가장 빠른 응답 시간을 제공합니다. [Effort](https://platform.claude.com/docs/ko/build-with-claude/effort)는 이 모델의 속도와 비용을 제어하는 주요 수단입니다. [effort를 사용하여 사고 제어하기](https://platform.claude.com/docs/ko/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/ko/models/overview) 페이지를 참조하세요.

### 2. 프롬프트 및 출력 길이 최적화

높은 성능을 유지하면서 입력 프롬프트와 예상 출력 모두의 토큰 수를 최소화하세요. 모델이 처리하고 생성해야 하는 토큰이 적을수록 응답이 더 빨라집니다.

프롬프트와 출력을 최적화하는 데 도움이 되는 몇 가지 팁은 다음과 같습니다:

* **명확하되 간결하게:** 프롬프트에서 의도를 명확하고 간결하게 전달하는 것을 목표로 하세요. 불필요한 세부 사항이나 중복된 정보는 피하되, [Claude는 사용 사례에 대한 컨텍스트가 부족](https://platform.claude.com/docs/ko/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct)하며 지시가 불명확하면 의도한 논리적 도약을 하지 못할 수 있다는 점을 염두에 두세요.
* **더 짧은 응답 요청:** Claude에게 간결하게 답하도록 직접 요청하세요. Claude가 원치 않는 길이로 출력하고 있다면, Claude에게 [수다스러움을 줄이도록](https://platform.claude.com/docs/ko/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct) 요청하세요.
  <Tip>
    LLM은 단어가 아닌 

    [토큰](https://platform.claude.com/docs/ko/about-claude/glossary#tokens)

    을 세는 방식이기 때문에, 정확한 단어 수나 단어 수 제한을 요청하는 것은 단락 또는 문장 수 제한을 요청하는 것만큼 효과적인 전략이 아닙니다.
  </Tip>
* **적절한 출력 제한 설정:** `max_tokens` 매개변수를 사용하여 생성되는 응답의 최대 길이에 엄격한 제한을 설정하세요. 이렇게 하면 Claude가 지나치게 긴 출력을 생성하는 것을 방지할 수 있습니다.
  <Note>
    응답이 

    `max_tokens`

     토큰에 도달하면 응답이 문장 중간이나 단어 중간에서 잘릴 수 있으므로, 이는 후처리가 필요할 수 있는 다소 거친 기법이며 일반적으로 답이 맨 처음에 나오는 객관식 또는 단답형 응답에 가장 적합합니다.
  </Note>
* **temperature 실험:** `temperature` [매개변수](https://platform.claude.com/docs/ko/api/messages/create)는 출력의 무작위성을 제어합니다. 낮은 값(예: 0.2)은 때때로 더 집중적이고 짧은 응답으로 이어질 수 있으며, 높은 값(예: 0.8)은 더 다양하지만 잠재적으로 더 긴 출력을 낳을 수 있습니다. Claude 4.7 이후 모델과 Claude Mythos Preview는 기본 `temperature`만 허용하며 다른 값에 대해서는 400 오류를 반환하므로, 해당 모델에서는 대신 [effort](https://platform.claude.com/docs/ko/build-with-claude/effort)를 낮추세요.

프롬프트의 명확성, 출력 품질, 토큰 수 사이에서 적절한 균형을 찾으려면 어느 정도 실험이 필요할 수 있습니다.

### 3. 응답 스트리밍

"Streaming"(스트리밍)은 전체 출력이 완료되기 전에 모델이 응답을 보내기 시작할 수 있게 하는 기능입니다. 사용자가 모델의 출력을 실시간으로 볼 수 있으므로 애플리케이션의 체감 반응성을 크게 향상시킬 수 있습니다.

스트리밍을 활성화하면 모델의 출력이 도착하는 대로 처리하여 사용자 인터페이스를 업데이트하거나 다른 작업을 병렬로 수행할 수 있습니다.

사용 사례에 맞게 스트리밍을 구현하는 방법을 알아보려면 [메시지 스트리밍](https://platform.claude.com/docs/ko/build-with-claude/streaming)을 방문하세요.

***

## 다음 단계

<CardGroup cols={2}>
  <Card title="환각 줄이기" icon="shield" href="https://platform.claude.com/docs/ko/test-and-evaluate/strengthen-guardrails/reduce-hallucinations">
    불확실성을 허용하고, 응답을 직접 인용에 근거하게 하며, 인용을 통해 주장을 검증함으로써 Claude 출력의 환각을 최소화하세요.
  </Card>

  <Card title="메시지 스트리밍" icon="bolt" href="https://platform.claude.com/docs/ko/build-with-claude/streaming">
    텍스트, 도구 사용, 확장 사고 델타를 포함한 Messages API 응답을 서버 전송 이벤트로 점진적으로 스트리밍하세요.
  </Card>
</CardGroup>
