Condividi tramite


Modelli di ragionamento delle query

Questo articolo illustra come scrivere richieste di query per i modelli di base ottimizzati per le attività di ragionamento e inviarle all'endpoint dell'API del modello foundation.

L'API Mosaic AI Foundation Model offre un'API unificata per interagire con tutti i modelli di base, inclusi i modelli di ragionamento. Il ragionamento offre ai modelli di base funzionalità avanzate per affrontare attività complesse. Alcuni modelli forniscono anche trasparenza rivelando il loro processo di pensiero dettagliato prima di fornire una risposta finale.

Tipi di modelli di ragionamento

Esistono due tipi di modelli, solo ragionamento e ibrido. La tabella seguente descrive in che modo i diversi modelli usano approcci diversi per controllare il ragionamento:

Tipo di modello di ragionamento Dettagli Esempi di modelli Parametri
Ragionamento ibrido Supporta sia risposte rapide che istantanee e ragionamento più approfondito quando necessario. Modelli Claude come databricks-claude-sonnet-4, databricks-claude-sonnet-4-5, databricks-claude-opus-4-5, e databricks-claude-opus-4-1. Includere i parametri seguenti per usare il ragionamento ibrido:
  • thinking
  • budget_tokens: controlla il numero di token che il modello può usare per il pensiero interno. I budget più elevati possono migliorare la qualità per le attività complesse, ma l'utilizzo superiore a 32.000 può variare. budget_tokens deve essere minore di max_tokens.
Solo ragionamento Questi modelli usano sempre il ragionamento interno nelle risposte. Modelli OSS GPT come databricks-gpt-oss-120b e databricks-gpt-oss-20b. Usare il parametro seguente nella richiesta:
  • reasoning_effort: accetta valori di "low", "medium" (impostazione predefinita) o "high". Un maggiore sforzo di ragionamento può comportare risposte più ponderate e accurate, ma può aumentare la latenza e l'utilizzo dei token. Questo parametro viene accettato solo da un set limitato di modelli, inclusi databricks-gpt-oss-120b e databricks-gpt-oss-20b.

Esempi di query

Tutti i modelli di ragionamento sono accessibili tramite l'endpoint dei completamenti delle chat .

Esempio di modello Claude

from openai import OpenAI
import base64
import httpx

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="databricks-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)

GPT-5.1

Il reasoning_effort parametro per GPT-5.1 è impostato su none per impostazione predefinita, ma può essere sostituito utilizzando le richieste. Un maggiore sforzo di ragionamento può comportare risposte più ponderate e accurate, ma può aumentare la latenza e l'utilizzo dei token.

curl -X POST "https://<workspace_host>/serving-endpoints/databricks-gpt-5-1/invocations" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ],
    "max_tokens": 4096,
    "reasoning_effort": "none"
  }'

Esempio di modello OSS GPT

Il reasoning_effort parametro accetta "low", "medium" (impostazione predefinita) o "high" valori. Un maggiore sforzo di ragionamento può comportare risposte più ponderate e accurate, ma può aumentare la latenza e l'utilizzo dei token.

curl -X POST "https://<workspace_host>/serving-endpoints/databricks-gpt-oss-120b/invocations" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "role": "user",
        "content": "Why is the sky blue?"
      }
    ],
    "max_tokens": 4096,
    "reasoning_effort": "high"
  }'

Esempio di modello Gemini

Questo esempio usa databricks-gemini-3-pro. Il reasoning_effort parametro è impostato su "low" per impostazione predefinita, ma può essere sovrascritto nelle richieste, come illustrato nell'esempio seguente.

curl -X POST "https://<workspace_host>/serving-endpoints/databricks-gemini-3-pro/invocations" \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "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 risposta dell'API include blocchi di contenuto di riflessione e di testo.

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
)

Gestire il ragionamento attraverso più fasi

Questa sezione è specifica per il databricks-claude-sonnet-4-5 model.

Nelle conversazioni a più turni, solo i blocchi di ragionamento associati all'ultimo turno di assistente o alla sessione di utilizzo degli strumenti sono visibili al modello e conteggiati come token di input.

Se non si vogliono passare di nuovo i token di ragionamento al modello ( ad esempio, non è necessario ragionare sui passaggi precedenti), è possibile omettere completamente il blocco di ragionamento. Per esempio:

response = client.chat.completions.create(
    model="databricks-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)

Tuttavia, se è necessario che il modello ragioni sul suo processo di ragionamento precedente, ad esempio se si creano esperienze che ne evidenziano il ragionamento intermedio, è necessario includere il messaggio di assistente completo e non modificato, incluso il blocco di ragionamento dal turno precedente. Ecco come continuare un thread con il messaggio dell'assistente completo:

assistant_message = response.choices[0].message

response = client.chat.completions.create(
    model="databricks-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)

Come funziona un modello di ragionamento?

I modelli di ragionamento introducono token di ragionamento speciali oltre ai token di input e output standard. Questi token consentono al modello di "pensare" tramite la richiesta, suddividendolo e considerando diversi modi per rispondere. Dopo questo processo di ragionamento interno, il modello genera la risposta finale come token di output visibili. Alcuni modelli, ad esempio databricks-claude-sonnet-4-5, visualizzano questi token di ragionamento agli utenti, mentre altri, ad esempio la serie OpenAI o, li eliminano e non li espongono nell'output finale.

Risorse aggiuntive