> ## 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 el enrutamiento automático

> Verifica el enrutamiento automático de Responses en producción, inspecciona la decisión de enrutamiento y compara los resultados en vivo con los niveles esperados.

Utiliza `auto_routing` cuando quieras que el gateway elija entre variantes cuantizadas, MoE y densas según la complejidad de la solicitud.

Cuando las variantes hermanas aún no están registradas, usa `auto_routing_debug` para verificar la decisión de enrutamiento en sí.
La metadata de la respuesta incluirá:

* `routed_model`
* `auto_routing_debug`

`auto_routing_debug` es una cadena JSON compacta con el modelo solicitado, el nivel seleccionado, el esfuerzo de razonamiento, el puntaje y las razones.

## Ejecutar la validación

La verificación en producción del 31 de marzo de 2026 utilizó el endpoint de Responses directamente con un modelo fijo y una bandera de depuración opcional.

```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
  }'
```

Si el despliegue está en vivo, la metadata de la respuesta incluye un 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\"]}"
  }
}
```

El `routed_model` aún puede ser igual al modelo solicitado si no existe una familia hermana compatible en producción todavía.
Eso no significa que la heurística haya fallado.
La prueba está en `desired_tier`, `reasoning_effort`, `score` y `reasons` dentro de `auto_routing_debug`.

## Método de prueba

La verificación en producción utilizó seis solicitudes Responses contra `https://apigw.mka1.com/api/v1/llm/responses`.
Cada solicitud estableció:

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

La matriz cubrió:

1. Prompt corto de transformación en inglés
2. Prompt de salida estructurada de longitud media
3. Prompt largo de análisis de incidentes
4. Prompt forzado de uso de herramienta
5. Prompt corto de transformación en portugués
6. Prompt largo de análisis de incidentes en portugués

Para cada respuesta, la validación registró:

* Estado HTTP
* `metadata.routed_model`
* `metadata.auto_routing_debug` parseado
* `reasoning.effort` efectivo

## Resultados en producción en vivo

Estos fueron los resultados observados en producción el 31 de marzo de 2026 después del despliegue del PR 321:

| Caso de prueba                | Nivel esperado | Nivel observado | Esfuerzo de razonamiento | Puntaje | Razones clave                                                                        |
| ----------------------------- | -------------: | --------------: | -----------------------: | ------: | ------------------------------------------------------------------------------------ |
| `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`                     |

Las seis solicitudes devolvieron `200 OK`.
Las seis respuestas incluyeron `auto_routing_debug`.
El nivel observado coincidió con el nivel esperado en todos los casos.

## Fragmentos de respuesta en crudo

Los siguientes ejemplos están adaptados del registro de producción en vivo.

### Prompt corto de transformación

Solicitud:

```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
}
```

Fragmento de respuesta observado:

```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 de salida estructurada

Solicitud:

```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"
    }
  }
}
```

Fragmento de respuesta observado:

```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 largo de análisis de incidentes

Solicitud:

```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
}
```

Fragmento de respuesta observado:

```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 forzado de uso de herramienta

Solicitud:

```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": "meetkai:functionary-es-mini"
      }
    }
  ],
  "tool_choice": {
    "type": "code_interpreter"
  }
}
```

Fragmento de respuesta observado:

```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 transformación en portugués

Solicitud:

```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
}
```

Fragmento de respuesta observado:

```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álisis de incidentes en portugués

Solicitud:

```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
}
```

Fragmento de respuesta observado:

```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
}
```

## Interpretar el resultado

Utiliza esta lista de verificación al validar un despliegue:

1. Confirma que la respuesta incluya `metadata.auto_routing_debug`.
2. Parsea la cadena JSON e inspecciona `desired_tier`.
3. Verifica que `reasoning_effort` coincida con el nivel de complejidad esperado.
4. Verifica que las `reasons` coincidan con las características del prompt que pretendías activar.
5. Si existen variantes hermanas, confirma también que `routed_model` cambie al hermano esperado.

Si falta `auto_routing_debug`, probablemente la imagen de la API desplegada aún no incluye la funcionalidad.

## Notas

* `auto_routing_debug` está destinado a validación y verificaciones de despliegue. Es opcional y no debe habilitarse por defecto para el tráfico de producción normal.
* `auto_routing_debug` está disponible actualmente en la API de Responses.
* Las heurísticas para prompts en portugués están incluidas en la lógica de enrutamiento de producción actual, por lo que los prompts cortos de transformación y los prompts complejos de análisis de incidentes pueden validarse tanto en inglés como en portugués.
