> ## 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.

# Validar roteamento automático

> Verifique o roteamento automático de Responses em produção, inspecione a decisão de roteamento e compare os resultados ao vivo com os níveis esperados.

Use `auto_routing` quando você quiser que o gateway escolha entre variantes quantizadas, MoE e densas com base na complexidade da solicitação.

Quando variantes irmãs ainda não estiverem registradas, use `auto_routing_debug` para verificar a própria decisão de roteamento.
Os metadados da resposta incluirão:

* `routed_model`
* `auto_routing_debug`

`auto_routing_debug` é uma string JSON compacta com o modelo solicitado, nível selecionado, esforço de raciocínio, pontuação e motivos.

## Execute a validação

A verificação de produção em 31 de março de 2026 utilizou o endpoint Responses diretamente com um modelo fixo e uma flag de depuração opt-in.

```bash bash theme={null}
curl https://apigw.mka1.com/api/v1/llm/responses \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --data '{
    "model": "meetkai:functionary-pt",
    "input": "Summarize this in one sentence: The quick brown fox jumps over the lazy dog.",
    "auto_routing": true,
    "auto_routing_debug": true,
    "max_output_tokens": 64
  }'
```

Se o deployment estiver ativo, os metadados da resposta incluem um payload como este:

```json theme={null}
{
  "metadata": {
    "routed_model": "meetkai:functionary-pt",
    "auto_routing_debug": "{\"requested_model\":\"meetkai:functionary-pt\",\"routed_model\":\"meetkai:functionary-pt\",\"desired_tier\":\"quantized\",\"reasoning_effort\":\"minimal\",\"score\":-3,\"reasons\":[\"short prompt\",\"simple transform task\"]}"
  }
}
```

O `routed_model` ainda pode ser igual ao modelo solicitado se nenhuma família irmã compatível existir em produção ainda.
Isso não significa que a heurística falhou.
A prova está em `desired_tier`, `reasoning_effort`, `score` e `reasons` em `auto_routing_debug`.

## Método de teste

A checagem de produção utilizou seis requisições Responses contra `https://apigw.mka1.com/api/v1/llm/responses`.
Cada requisição definiu:

* `model: "meetkai:functionary-pt"`
* `auto_routing: true`
* `auto_routing_debug: true`

A matriz cobriu:

1. Prompt curto em inglês para transformação
2. Prompt médio para saída estruturada
3. Prompt longo para análise de incidente
4. Prompt forçado de uso de ferramenta
5. Prompt curto em português para transformação
6. Prompt longo em português para análise de incidente

Para cada resposta, a validação registrou:

* Status HTTP
* `metadata.routed_model`
* `metadata.auto_routing_debug` analisado
* `reasoning.effort` efetivo

## Resultados ao vivo em produção

Estes foram os resultados observados em produção em 31 de março de 2026 após o PR 321 ser implantado:

| Caso de teste                 | Nível esperado | Nível observado | Esforço de raciocínio | Pontuação | Motivos principais                                                                   |
| ----------------------------- | -------------: | --------------: | --------------------: | --------: | ------------------------------------------------------------------------------------ |
| `simple_summary`              |    `quantized` |     `quantized` |             `minimal` |      `-3` | `short prompt`, `simple transform task`                                              |
| `structured_analysis_json`    |          `moe` |           `moe` |                 `low` |       `2` | `structured output requested`, `short prompt`, `complex reasoning markers in prompt` |
| `complex_incident_plan`       |        `dense` |         `dense` |                `high` |       `6` | `large max_output_tokens`, `long prompt`, `complex reasoning markers in prompt`      |
| `forced_code_interpreter`     |        `dense` |         `dense` |                `high` |       `5` | `high-agency tools enabled`, `tool use required`                                     |
| `portuguese_simple_transform` |    `quantized` |     `quantized` |             `minimal` |      `-3` | `short prompt`, `simple transform task`                                              |
| `portuguese_complex_incident` |        `dense` |         `dense` |                `high` |       `5` | `large max_output_tokens`, `complex reasoning markers in prompt`                     |

Todas as seis requisições retornaram `200 OK`.
Todas as seis respostas incluíram `auto_routing_debug`.
O nível observado correspondeu ao nível esperado em todos os casos.

## Trechos brutos de resposta

Os exemplos abaixo foram adaptados do log de produção ao vivo.

### Prompt curto de transformação

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "Summarize this in one sentence: The quick brown fox jumps over the lazy dog.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 64
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "simple_summary",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "minimal",
    "summary": null
  },
  "debug": {
    "desired_tier": "quantized",
    "reasoning_effort": "minimal",
    "score": -3,
    "reasons": [
      "short prompt",
      "simple transform task"
    ]
  },
  "error": null
}
```

### Prompt para saída estruturada

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "Analyze three customer complaints, identify the top themes, and return a compact JSON object with themes and recommended actions.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 256,
  "text": {
    "format": {
      "type": "json_object"
    }
  }
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "structured_analysis_json",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "low",
    "summary": null
  },
  "debug": {
    "desired_tier": "moe",
    "reasoning_effort": "low",
    "score": 2,
    "reasons": [
      "structured output requested",
      "short prompt",
      "complex reasoning markers in prompt"
    ]
  },
  "error": null
}
```

### Prompt longo para análise de incidente

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "You are reviewing a TypeScript production incident in a request router. Investigate the root cause, identify failure modes, compare remediation trade-offs, and produce a step-by-step refactor and rollout plan. Consider error handling, retries, observability, regression risk, and operational safeguards. Explain the likely root cause, list the most important contributing factors, compare at least two possible fixes, and recommend one with justification. Also call out any assumptions, open questions, and follow-up verification steps. Keep the reasoning structured and explicit so an engineer can execute the plan safely. You are reviewing a TypeScript production incident in a request router. Investigate the root cause, identify failure modes, compare remediation trade-offs, and produce a step-by-step refactor and rollout plan. Consider error handling, retries, observability, regression risk, and operational safeguards. Explain the likely root cause, list the most important contributing factors, compare at least two possible fixes, and recommend one with justification. Also call out any assumptions, open questions, and follow-up verification steps. Keep the reasoning structured and explicit so an engineer can execute the plan safely. You are reviewing a TypeScript production incident in a request router. Investigate the root cause, identify failure modes, compare remediation trade-offs, and produce a step-by-step refactor and rollout plan. Consider error handling, retries, observability, regression risk, and operational safeguards. Explain the likely root cause, list the most important contributing factors, compare at least two possible fixes, and recommend one with justification. Also call out any assumptions, open questions, and follow-up verification steps. Keep the reasoning structured and explicit so an engineer can execute the plan safely.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 4000
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "complex_incident_plan",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "high",
    "summary": null
  },
  "debug": {
    "desired_tier": "dense",
    "reasoning_effort": "high",
    "score": 6,
    "reasons": [
      "large max_output_tokens",
      "long prompt",
      "complex reasoning markers in prompt"
    ]
  },
  "error": null
}
```

### Prompt forçado de uso de ferramenta

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "Use the code interpreter to inspect this issue and report what it finds.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 256,
  "tools": [
    {
      "type": "code_interpreter",
      "container": {
        "type": "auto"
      }
    }
  ],
  "tool_choice": {
    "type": "code_interpreter"
  }
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "forced_code_interpreter",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "high",
    "summary": null
  },
  "debug": {
    "desired_tier": "dense",
    "reasoning_effort": "high",
    "score": 5,
    "reasons": [
      "high-agency tools enabled",
      "tool use required"
    ]
  },
  "error": null
}
```

### Prompt de transformação em português

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "Traduza e resuma este texto em português em uma frase curta.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 64
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "portuguese_simple_transform",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "minimal",
    "summary": null
  },
  "debug": {
    "desired_tier": "quantized",
    "reasoning_effort": "minimal",
    "score": -3,
    "reasons": [
      "short prompt",
      "simple transform task"
    ]
  },
  "error": null
}
```

### Prompt de análise de incidente em português

Requisição:

```json theme={null}
{
  "model": "meetkai:functionary-pt",
  "input": "Investigue a causa raiz deste incidente em um serviço TypeScript, analise os trade-offs entre correções possíveis e produza um plano passo a passo para corrigir, refatorar e implantar com segurança. Considere tratamento de erros, observabilidade, risco de regressão e validação operacional. Explique a provável causa raiz, liste os fatores contribuintes mais importantes, compare pelo menos duas alternativas de correção e recomende uma com justificativa. Também destaque premissas, dúvidas em aberto e etapas de verificação posteriores. Investigue a causa raiz deste incidente em um serviço TypeScript, analise os trade-offs entre correções possíveis e produza um plano passo a passo para corrigir, refatorar e implantar com segurança. Considere tratamento de erros, observabilidade, risco de regressão e validação operacional. Explique a provável causa raiz, liste os fatores contribuintes mais importantes, compare pelo menos duas alternativas de correção e recomende uma com justificativa. Também destaque premissas, dúvidas em aberto e etapas de verificação posteriores. Investigue a causa raiz deste incidente em um serviço TypeScript, analise os trade-offs entre correções possíveis e produza um plano passo a passo para corrigir, refatorar e implantar com segurança. Considere tratamento de erros, observabilidade, risco de regressão e validação operacional. Explique a provável causa raiz, liste os fatores contribuintes mais importantes, compare pelo menos duas alternativas de correção e recomende uma com justificativa. Também destaque premissas, dúvidas em aberto e etapas de verificação posteriores.",
  "auto_routing": true,
  "auto_routing_debug": true,
  "max_output_tokens": 4000
}
```

Trecho observado da resposta:

```json theme={null}
{
  "name": "portuguese_complex_incident",
  "httpStatus": 200,
  "ok": true,
  "reasoning": {
    "effort": "high",
    "summary": null
  },
  "debug": {
    "desired_tier": "dense",
    "reasoning_effort": "high",
    "score": 5,
    "reasons": [
      "large max_output_tokens",
      "complex reasoning markers in prompt"
    ]
  },
  "error": null
}
```

## Interprete o resultado

Use esta lista de verificação ao validar um deployment:

1. Confirme que a resposta inclui `metadata.auto_routing_debug`.
2. Analise a string JSON e inspecione `desired_tier`.
3. Verifique se `reasoning_effort` corresponde ao nível de complexidade esperado.
4. Verifique se os `reasons` correspondem às características do prompt que você pretendia acionar.
5. Se variantes irmãs existirem, confirme também que `routed_model` muda para a irmã esperada.

Se `auto_routing_debug` estiver ausente, a imagem da API implantada provavelmente ainda não inclui o recurso.

## Notas

* `auto_routing_debug` é destinado à validação e checagens de rollout. É opt-in e não deve ser ativado por padrão para o tráfego normal de produção.
* `auto_routing_debug` está disponível atualmente na API de Responses.
* Heurísticas para prompts em português estão incluídas na lógica de roteamento em produção atual, então prompts curtos de transformação e prompts complexos de análise de incidente podem ser validados tanto em inglês quanto em português.
