> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Latência de saída em streaming

> Benchmark observado pelo cliente da latência do primeiro token de texto transmitido para a API de Respostas MKA1.

Este benchmark mede quão rapidamente o streaming começa na API pública de Respostas MKA1.
Ele utiliza `POST /api/v1/llm/responses` em `https://apigw.mka1.com/api/v1/llm/responses` com `stream: true` e modelo `meetkai:functionary-pt`.

O objetivo é simples:
medir o tempo desde o envio da requisição até o primeiro token de texto transmitido chegar ao cliente.

## Resumo dos resultados

Execução do benchmark: `2026-03-31`

| Métrica                    |                        Valor |
| -------------------------- | ---------------------------: |
| Modelo                     |     `meetkai:functionary-pt` |
| Endpoint                   | `POST /api/v1/llm/responses` |
| Requisições de aquecimento |                          `5` |
| Requisições medidas        |                        `100` |
| Requisições com falha      |                          `0` |
| TTFT p50                   |                  `311.13 ms` |
| TTFT p95                   |                  `608.49 ms` |
| TTFT p99                   |                  `681.29 ms` |
| TTFT máx                   |                  `695.86 ms` |
| Primeiro evento SSE p95    |                   `70.69 ms` |
| Cabeçalhos de resposta p95 |                   `70.42 ms` |

Nesta execução, a API pública de Respostas permaneceu abaixo de `1 segundo` no `percentil 95` para o tempo até o primeiro token de texto transmitido.

## O que TTFT significa neste benchmark

Para este benchmark, **TTFT** significa:

* o cliente inicia um cronômetro imediatamente antes do envio da requisição HTTP
* o cliente abre o stream SSE
* o cronômetro para quando o primeiro delta de texto transmitido não vazio é recebido

Este modelo normalmente emite texto de raciocínio antes do texto da resposta final.
Por isso, o benchmark conta o primeiro delta de texto não vazio de:

* `response.reasoning_text.delta`
* `response.output_text.delta`

Essa definição mede o início do texto transmitido de forma contínua conforme visto pelo cliente.

O benchmark também relata dois marcos anteriores:

* **cabeçalhos de resposta**: quando a resposta HTTP inicial é retornada
* **primeiro evento SSE**: quando o primeiro frame SSE chega, independentemente do conteúdo

## Configuração do benchmark

A execução ao vivo utilizou o seguinte perfil de requisição:

* URL base: `https://apigw.mka1.com`
* endpoint: `POST /api/v1/llm/responses`
* autenticação: `Authorization: Bearer <mka1-api-key>`
* cabeçalho de usuário final: `X-On-Behalf-Of: ttft-benchmark-user`
* modelo: `meetkai:functionary-pt`
* prompt: `Reply with exactly the text OK and nothing else.`
* `stream: true`
* `temperature: 0`
* `max_output_tokens: 64`
* aquecimentos: `5`
* requisições medidas: `100`
* concorrência: `1`
* timeout da requisição: `45s`

Estes números são medições **observadas pelo cliente** contra o endpoint público da API.
Portanto, incluem o tempo de ida e volta de rede entre o cliente do benchmark e `apigw.mka1.com`, não apenas o tempo de processamento no servidor.

## Formato da requisição

```bash theme={null}
curl https://apigw.mka1.com/api/v1/llm/responses \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Accept: text/event-stream' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --header 'X-On-Behalf-Of: <end-user-id>' \
  --data '{
    "model": "meetkai:functionary-pt",
    "input": "Reply with exactly the text OK and nothing else.",
    "stream": true,
    "temperature": 0,
    "max_output_tokens": 64
  }'
```

O próprio benchmark utiliza um parser SSE em vez do tempo de saída do `curl`, para poder detectar o momento exato da chegada do primeiro token de texto transmitido.

## Interpretação

Esta execução mostra três camadas úteis de latência:

* a conexão e o gateway retornaram os cabeçalhos rapidamente, com p95 em `70.42 ms`
* o primeiro frame SSE chegou em p95 `70.69 ms`
* o primeiro token de texto transmitido chegou em p95 `608.49 ms`

Isso significa que o stream começa quase imediatamente no nível de transporte, e o texto transmitido significativo chega ao cliente bem abaixo de `1 segundo` em p95 para este modelo e perfil de requisição.

## Saída completa do teste

```
{
  "benchmark": "responses_stream_ttft",
  "generatedAt": "2026-03-31T23:34:32.387Z",
  "config": {
    "baseUrl": "https://apigw.mka1.com/api/v1/llm",
    "model": "meetkai:functionary-pt",
    "apiKey": "OMITTED",
    "onBehalfOf": "ttft-benchmark-user",
    "prompt": "Reply with exactly the text OK and nothing else.",
    "samples": 100,
    "warmupSamples": 5,
    "concurrency": 1,
    "timeoutMs": 45000,
    "thresholdMs": 1000,
    "maxOutputTokens": 64,
    "outputJson": "stream-ttft-report.json"
  },
  "verdict": {
    "passed": true,
    "thresholdMs": 1000,
    "measuredP95Ms": 608.4879000000001
  },
  "samples": {
    "warmup": 5,
    "measured": 100,
    "success": 100,
    "failed": 0
  },
  "stats": {
    "headersMs": {
      "count": 100,
      "min": 63.00436899999477,
      "avg": 67.39161819000238,
      "p50": 67.0498840000073,
      "p95": 70.41907800000627,
      "p99": 72.71200100000715,
      "max": 107.99611500000174
    },
    "firstEventMs": {
      "count": 100,
      "min": 63.306459000014,
      "avg": 67.66752371000103,
      "p50": 67.35425400000531,
      "p95": 70.69219799997518,
      "p99": 73.02295199999935,
      "max": 108.39853500000027
    },
    "firstTokenMs": {
      "count": 100,
      "min": 293.89441600002465,
      "avg": 389.9065817800009,
      "p50": 311.1333589999995,
      "p95": 608.4879000000001,
      "p99": 681.2876299999916,
      "max": 695.8577790000054
    },
    "totalDurationMs": {
      "count": 100,
      "min": 3047.5074070000264,
      "avg": 3146.770197100002,
      "p50": 3097.0465299999996,
      "p95": 3374.5328960000006,
      "p99": 3435.1036190000013,
      "max": 3453.2585250000047
    }
  },
  "measurements": [
    {
      "sampleIndex": 1,
      "ok": true,
      "httpStatus": 200,
      "responseId": "resp_c38d48bebeb74c54b740e627a541cad6",
      "headersMs": 66.99634399999923,
      "firstEventMs": 67.28057400000034,
      "firstTokenMs": 423.95566899999903,
      "totalDurationMs": 3195.7519509999984,
      "eventCount": 137,
      "textDeltaCount": 62,
      "outputTextDeltaCount": 0,
      "reasoningTextDeltaCount": 62,
      "text": "Okay o usuário pediu para responder exatamente com \"OK\" e nada mais. Vou verificar se entendi corretamente. Ele quer que eu ignore qualquer outra coisa e só envie \"OK\". Não há necessidade de usar nenhuma ferramenta aqui, já que a resposta é"
    },
    ...
    {
      "sampleIndex": 100,
      "ok": true,
      "httpStatus": 200,
      "responseId": "resp_29a71db294b84976be29ea1f303ab18f",
      "headersMs": 67.71740399999544,
      "firstEventMs": 68.06585499999346,
      "firstTokenMs": 301.51615600002697,
      "totalDurationMs": 3056.013098000025,
      "eventCount": 137,
      "textDeltaCount": 62,
      "outputTextDeltaCount": 0,
      "reasoningTextDeltaCount": 62,
      "text": "Okay o usuário pediu para responder exatamente com \"OK\" e nada mais. Vou verificar se entendi corretamente. Ele quer que eu ignore qualquer outra coisa e só envie \"OK\". Não há necessidade de usar nenhuma ferramenta aqui, já que a resposta é"
    }
  ]
}
```
