---
title: Снижение задержки
url: https://platform.claude.com/docs/ru/test-and-evaluate/strengthen-guardrails/reduce-latency
description: Снизьте задержку ответов Claude, выбрав более быструю модель, например Claude Haiku 5.5, сократив количество токенов в подсказке и выводе, а также используя потоковую передачу ответов.
---

«Latency» (задержка) — это время, которое требуется модели для обработки подсказки и генерации вывода. На задержку могут влиять различные факторы, такие как размер модели, сложность подсказки, а также базовая инфраструктура, поддерживающая модель и точку взаимодействия.

<Note>
  Всегда лучше сначала разработать подсказку, которая хорошо работает без ограничений на модель или подсказку, а затем уже пробовать стратегии снижения задержки. Преждевременные попытки снизить задержку могут помешать вам понять, как выглядит максимальная производительность.
</Note>

***

## Как измерять задержку

При обсуждении задержки вы можете встретить несколько терминов и показателей:

* **Базовая задержка (baseline latency):** это время, затрачиваемое моделью на обработку подсказки и генерацию ответа, без учёта количества входных и выходных токенов в секунду. Она даёт общее представление о скорости модели.
* **Время до первого токена, или TTFT («time to first token»):** этот показатель измеряет время, которое требуется модели для генерации первого токена ответа с момента отправки подсказки. Он особенно важен, когда вы используете «streaming» (потоковую передачу) — подробнее об этом ниже — и хотите обеспечить отзывчивый опыт для ваших пользователей.

Для более глубокого понимания этих терминов ознакомьтесь с [глоссарием](https://platform.claude.com/docs/ru/about-claude/glossary).

***

## Как снизить задержку

### 1. Выберите подходящую модель

Один из самых прямых способов снизить задержку — выбрать модель, подходящую для вашего сценария использования. Anthropic предлагает [ряд моделей](https://platform.claude.com/docs/ru/models/overview) с различными возможностями и характеристиками производительности. Учитывайте ваши конкретные требования и выбирайте модель, которая лучше всего соответствует вашим потребностям с точки зрения скорости и качества вывода.

Для приложений, критичных к скорости, **Claude Haiku 5.5** обеспечивает самое быстрое время отклика, сохраняя при этом высокий уровень интеллекта. [Effort](https://platform.claude.com/docs/ru/build-with-claude/effort) — основной параметр управления скоростью и стоимостью этой модели. См. раздел [Используйте effort для управления размышлениями](https://platform.claude.com/docs/ru/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 с низким уровнем 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 с низким уровнем 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 с низким уровнем 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 с низким уровнем 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 с низким уровнем усилий
  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 с низким уровнем 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 с низким уровнем 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 с низким уровнем 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 с низким уровнем 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/ru/models/overview).

### 2. Оптимизируйте длину подсказки и вывода

Минимизируйте количество токенов как во входной подсказке, так и в ожидаемом выводе, сохраняя при этом высокую производительность. Чем меньше токенов модели нужно обработать и сгенерировать, тем быстрее будет ответ.

Вот несколько советов, которые помогут вам оптимизировать ваши подсказки и выводы:

* **Будьте ясны, но лаконичны:** стремитесь ясно и кратко передать ваше намерение в подсказке. Избегайте ненужных деталей или избыточной информации, помня при этом, что [Claude не имеет контекста](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct) о вашем сценарии использования и может не сделать предполагаемых логических выводов, если инструкции неясны.
* **Просите более короткие ответы:** прямо попросите Claude быть кратким. Если Claude выдаёт ответы нежелательной длины, попросите Claude [умерить свою многословность](https://platform.claude.com/docs/ru/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct).
  <Tip>
    Поскольку LLM считают 

    [токены](https://platform.claude.com/docs/ru/about-claude/glossary#tokens)

    , а не слова, просьба о точном количестве слов или ограничении по количеству слов — менее эффективная стратегия, чем просьба об ограничении по количеству абзацев или предложений.
  </Tip>
* **Установите подходящие ограничения вывода:** используйте параметр `max_tokens`, чтобы задать жёсткое ограничение на максимальную длину генерируемого ответа. Это не позволит Claude генерировать чрезмерно длинные выводы.
  <Note>
    Когда ответ достигает 

    `max_tokens`

     токенов, он будет обрезан — возможно, на середине предложения или слова, — поэтому это грубый приём, который может потребовать постобработки и обычно наиболее уместен для ответов с множественным выбором или кратких ответов, где ответ идёт в самом начале.
  </Note>
* **Экспериментируйте с температурой:** [параметр](https://platform.claude.com/docs/ru/api/messages/create) `temperature` управляет случайностью вывода. Более низкие значения (например, 0,2) иногда могут приводить к более сфокусированным и коротким ответам, тогда как более высокие значения (например, 0,8) могут давать более разнообразный, но потенциально более длинный вывод. Модели Claude 4.7 и более поздние, а также Claude Mythos Preview принимают только значение `temperature` по умолчанию и возвращают ошибку 400 для любого другого значения, поэтому на этих моделях вместо этого снижайте [effort](https://platform.claude.com/docs/ru/build-with-claude/effort).

Поиск правильного баланса между ясностью подсказки, качеством вывода и количеством токенов может потребовать некоторых экспериментов.

### 3. Используйте потоковую передачу ответов

Потоковая передача — это функция, которая позволяет модели начать отправлять свой ответ до того, как весь вывод будет завершён. Это может значительно улучшить воспринимаемую отзывчивость вашего приложения, поскольку пользователи могут видеть вывод модели в реальном времени.

При включённой потоковой передаче вы можете обрабатывать вывод модели по мере его поступления, обновляя пользовательский интерфейс или параллельно выполняя другие задачи.

Посетите раздел [Потоковая передача сообщений](https://platform.claude.com/docs/ru/build-with-claude/streaming), чтобы узнать, как реализовать потоковую передачу для вашего сценария использования.

***

## Следующие шаги

<CardGroup cols={2}>
  <Card title="Снижение галлюцинаций" icon="shield" href="https://platform.claude.com/docs/ru/test-and-evaluate/strengthen-guardrails/reduce-hallucinations">
    Минимизируйте галлюцинации в выводах Claude, допуская неопределённость, основывая ответы на прямых цитатах и проверяя утверждения с помощью ссылок на источники.
  </Card>

  <Card title="Потоковая передача сообщений" icon="bolt" href="https://platform.claude.com/docs/ru/build-with-claude/streaming">
    Получайте ответы Messages API по частям с помощью server-sent events, включая дельты текста, использования инструментов и расширенных размышлений.
  </Card>
</CardGroup>
