Modelos de razonamiento de consultas

En este artículo, aprendes a escribir peticiones de consulta para modelos de fundación optimizados para tareas de razonamiento y servidos por Unity Gateway.

Tip

Genie Code (modo agente) puede hacerlo automáticamente. Pruebe esta indicación de ejemplo:

Query the databricks-claude-sonnet-4-5 model using the OpenAI client with extended thinking enabled (budget_tokens set to 10240). Send a reasoning question and print both the thinking summary and the final answer.

Databricks Foundation Model API proporciona una API unificada para interactuar con todos los modelos de Foundation, incluidos los modelos de razonamiento. El razonamiento proporciona funcionalidades mejoradas de modelos fundamentales para abordar tareas complejas. Algunos modelos también proporcionan transparencia al revelar su proceso de pensamiento paso a paso antes de entregar una respuesta final.

Tipos de modelos de razonamiento

Hay dos tipos de modelos, de solo razonamiento e híbrido. En la tabla siguiente se describe cómo diferentes modelos usan enfoques diferentes para controlar el razonamiento:

Tipo de modelo de razonamiento Detalles Ejemplos de modelos Parámetros
Solo razonamiento Este modelo siempre utiliza el pensamiento adaptativo, y el razonamiento no puede ser deshabilitado. databricks-claude-fable-5-1 Utiliza los siguientes parámetros con la API de Anthropic Messages:
  • thinking: Establecer type en adaptive.
  • output_config.effort: Acepta low, medium, high, xhigh, o max. Databricks no establece un valor predeterminado; Anthropic usa high si omites este parámetro. Otros valores, incluido none, son rechazados.
Razonamiento híbrido Admite respuestas rápidas e instantáneas y un razonamiento más profundo cuando sea necesario.
  • Modelos de Claude como databricks-claude-sonnet-4-6, databricks-claude-sonnet-4-5, databricks-claude-sonnet-4, databricks-claude-opus-5, databricks-claude-opus-4-8, databricks-claude-opus-4-7, databricks-claude-opus-4-6, databricks-claude-opus-4-5 y databricks-claude-opus-4-1.
  • databricks-deepseek-v4-1-flash
Los parámetros varían según el modelo:
  • Para los modelos Claude, se utiliza thinking y budget_tokens. El budget_tokens parámetro controla cuántos tokens puede usar el modelo para el pensamiento interno. Los presupuestos más altos pueden mejorar la calidad de las tareas complejas, pero el uso por encima de 32K puede variar. budget_tokens debe ser menor que max_tokens.
  • Para DeepSeek V4.1 Flash, reasoning_effort acepta "low", "high", "xhigh", o "max" (por defecto). "minimal" mapea a "low", y "medium" mapea a "high". "none" o "disabled" deshabilita el razonamiento. Se rechazan otros valores.
Solo razonamiento Estos modelos siempre usan el razonamiento interno en sus respuestas. Modelos de GPT OSS como databricks-gpt-oss-120b y databricks-gpt-oss-20b. Use el siguiente parámetro en la solicitud:
  • reasoning_effort: acepta valores de "low", "medium" (valor predeterminado) o "high". Un mayor esfuerzo de razonamiento puede dar lugar a respuestas más cuidadosas y precisas, pero puede aumentar la latencia y el uso de tokens. Este parámetro solo es aceptado por un conjunto limitado de modelos, incluidos databricks-gpt-oss-120b y databricks-gpt-oss-20b.

Ejemplos de consultas

Nota:

Los siguientes ejemplos se basan en Unity Gateway y servicios modelo. Si utiliza puntos de conexión de servicio de modelos en lugar de servicios de modelos, sustituya el nombre del servicio de modelo por el nombre de un punto de conexión. Consulte los modelos fundacionales alojados en Databricks disponibles en Foundation Model APIs para ver la lista de modelos fundacionales disponibles y los nombres de sus servicios de modelo y endpoints.

Se accede a todos los modelos de razonamiento a través del punto de conexión de finalizaciones de chat.

Ejemplo de modelo de Claude

import os
from openai import OpenAI

client = OpenAI(
  api_key=os.environ.get('YOUR_DATABRICKS_TOKEN'),
  base_url=os.environ.get('YOUR_DATABRICKS_BASE_URL')
  )

response = client.chat.completions.create(
    model="system.ai.claude-sonnet-4-5",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

msg = response.choices[0].message
reasoning = msg.content[0]["summary"][0]["text"]
answer = msg.content[1]["text"]

print("Reasoning:", reasoning)
print("Answer:", answer)

Ejemplo de modelo Claude Fable 5.1

Claude Fable 5.1 siempre utiliza pensamiento adaptativo. Configura output_config.effort en low, medium, high, xhigh, o max para controlar la profundidad de razonamiento.

curl -X POST "https://<workspace_host>.databricks.com/serving-endpoints/anthropic/v1/messages" \
  -u token:$DATABRICKS_TOKEN \
  -H "Content-Type: application/json" \
  -H "anthropic-beta: effort-2025-11-24" \
  -d '{
    "model": "databricks-claude-fable-5-1",
    "max_tokens": 4096,
    "thinking": {
      "type": "adaptive"
    },
    "output_config": {
      "effort": "high"
    },
    "messages": [
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ]
  }'

GPT-5.1

El parámetro reasoning_effort de GPT-5.1 se establece en none de forma predeterminada, pero se puede invalidar en las solicitudes. Un mayor esfuerzo de razonamiento puede dar lugar a respuestas más cuidadosas y precisas, pero puede aumentar la latencia y el uso de tokens.

curl -X POST "https://<workspace_host>/ai-gateway/mlflow/v1/chat/completions" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "system.ai.gpt-5-1",
    "messages": [
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ],
    "max_tokens": 4096,
    "reasoning_effort": "none"
  }'

Ejemplo de modelo de OSS de GPT

El reasoning_effort parámetro acepta "low", "medium" (valor predeterminado) o "high" valores. Un mayor esfuerzo de razonamiento puede dar lugar a respuestas más cuidadosas y precisas, pero puede aumentar la latencia y el uso de tokens.

curl -X POST "https://<workspace_host>/ai-gateway/mlflow/v1/chat/completions" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "system.ai.gpt-oss-120b",
    "messages": [
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ],
    "max_tokens": 4096,
    "reasoning_effort": "high"
  }'

Ejemplo de modelo de Gemini

En este ejemplo se usa system.ai.gemini-3-1-pro. El parámetro reasoning_effort se establece "low" de forma predeterminada, pero se puede sobrescribir en las solicitudes, como se muestra en el ejemplo siguiente.

curl -X POST "https://<workspace_host>/ai-gateway/mlflow/v1/chat/completions" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "system.ai.gemini-3-1-pro",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ],
    "max_tokens": 2000,
    "stream": true,
    "reasoning_effort": "high"
  }'

La respuesta de la API incluye bloques de contenido de pensamiento y texto:

ChatCompletionMessage(
    role="assistant",
    content=[
        {
            "type": "reasoning",
            "summary": [
                {
                    "type": "summary_text",
                    "text": ("The question is asking about the scientific explanation for why the sky appears blue... "),
                    "signature": ("EqoBCkgIARABGAIiQAhCWRmlaLuPiHaF357JzGmloqLqkeBm3cHG9NFTxKMyC/9bBdBInUsE3IZk6RxWge...")
                }
            ]
        },
        {
            "type": "text",
            "text": (
                "# Why the Sky Is Blue\n\n"
                "The sky appears blue because of a phenomenon called Rayleigh scattering. Here's how it works..."
            )
        }
    ],
    refusal=None,
    annotations=None,
    audio=None,
    function_call=None,
    tool_calls=None
)

Gestionar el razonamiento a través de múltiples etapas

Esta sección es específica del databricks-claude-sonnet-4-5 modelo.

En las conversaciones multiturno, solo los bloques de razonamiento asociados con el último turno del asistente o la sesión de uso de herramientas son visibles para el modelo y se cuentan como tokens de entrada.

Si no desea devolver tokens de razonamiento al modelo (por ejemplo, no necesita que razone sobre sus pasos previos), puede omitir el bloque de razonamiento por completo. Por ejemplo:

response = client.chat.completions.create(
    model="system.ai.claude-sonnet-4-5",
    messages=[
        {"role": "user", "content": "Why is the sky blue?"},
        {"role": "assistant", "content": text_content},
        {"role": "user", "content": "Can you explain in a way that a 5-year-old child can understand?"}
    ],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

answer = response.choices[0].message.content[1]["text"]
print("Answer:", answer)

Sin embargo, si necesita que el modelo razone sobre su proceso de razonamiento anterior, por ejemplo, si está creando experiencias que muestren su razonamiento intermedio, debe incluir el mensaje completo y sin modificar del asistente, incluido el bloque de razonamiento del turno anterior. Aquí se explica cómo continuar un subproceso con el mensaje completo del asistente:

assistant_message = response.choices[0].message

response = client.chat.completions.create(
    model="system.ai.claude-sonnet-4-5",
    messages=[
        {"role": "user", "content": "Why is the sky blue?"},
        {"role": "assistant", "content": text_content},
        {"role": "user", "content": "Can you explain in a way that a 5-year-old child can understand?"},
        assistant_message,
        {"role": "user", "content": "Can you simplify the previous answer?"}
    ],
    max_tokens=20480,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10240
        }
    }
)

answer = response.choices[0].message.content[1]["text"]
print("Answer:", answer)

API de Open Responses

Cuando se usa Open Responses API, el razonamiento se devuelve como elementos reasoning en la respuesta output. Para que el modelo pueda razonar sobre su razonamiento anterior en un turno posterior, incluya esos elementos reasoning —con su campo encrypted_content sin cambios— en el input de la siguiente solicitud.

Un reasoning elemento devuelto en la salida de respuesta tiene la siguiente forma:

{
  "type": "reasoning",
  "id": "rs_abc123",
  "content": [{ "type": "reasoning_text", "text": "Let me work through the question..." }],
  "encrypted_content": "<opaque-provider-signature>"
}

Para continuar con la conversación, vuelva a enviar la salida del turno anterior en input, con el elemento reasoning preservado literalmente:

{
  "model": "databricks-claude-sonnet-4-5",
  "input": [
    { "role": "user", "content": "Why is the sky blue?" },
    {
      "type": "reasoning",
      "id": "rs_abc123",
      "content": [{ "type": "reasoning_text", "text": "Let me work through the question..." }],
      "encrypted_content": "<opaque-provider-signature>"
    },
    { "role": "assistant", "content": "The sky is blue because of Rayleigh scattering..." },
    { "role": "user", "content": "Can you explain it for a five-year-old?" }
  ]
}

El valor encrypted_content contiene el estado de razonamiento específico del proveedor. Si se elimina o modifica, el modelo no puede razonar a partir de su razonamiento previo. Esto se aplica a los modelos Anthropic Claude y Google Geminis.

¿Cómo funciona un modelo de razonamiento?

Los modelos de razonamiento presentan tokens de razonamiento especiales además de los tokens de entrada y salida estándar. Estos tokens permiten al modelo "pensar" a través del mensaje, desglosarlo y considerar diferentes formas de responder. Después de este proceso de razonamiento interno, el modelo genera su respuesta final como tokens de salida visibles. Algunos modelos, como databricks-claude-sonnet-4-5, muestran estos tokens de razonamiento a los usuarios, mientras que otros, como la serie o de OpenAI, los descartan y no los exponen en la salida final.

Recursos adicionales