Dela via


Frågeresoneringsmodeller

I den här artikeln får du lära dig hur du skriver frågeförfrågningar för grundmodeller som är optimerade för resonemangsuppgifter och skickar dem till din Foundation Model API-slutpunkt.

Mosaic AI Foundation Model API tillhandahåller ett enhetligt API för att interagera med alla Foundation-modeller, inklusive resonemangsmodeller. Resonemang ger grundläggande modeller förbättrade funktioner för att hantera komplexa uppgifter. Vissa modeller ger också transparens genom att avslöja sin stegvisa tankeprocess innan de levererar ett slutgiltigt svar.

Typer av resonemangsmodeller

Det finns två typer av modeller, endast resonemang och hybrid. I följande tabell beskrivs hur olika modeller använder olika metoder för att styra resonemang:

Typ av resonemangsmodell Detaljer Modellexempel Parameterar
Hybridskäl Stöder både snabba, omedelbara svar och djupare resonemang när det behövs. Claude-modeller som databricks-claude-sonnet-4, databricks-claude-sonnet-4-5, databricks-claude-opus-4-5och databricks-claude-opus-4-1. Inkludera följande parametrar för att använda hybridskäl:
  • thinking
  • budget_tokens: styr hur många token modellen kan använda för internt tänkande. Högre budgetar kan förbättra kvaliteten för komplexa uppgifter, men användningen över 32 K kan variera. budget_tokens måste vara mindre än max_tokens.
Endast resonemang Dessa modeller använder alltid interna resonemang i sina svar. GPT OSS-modeller som databricks-gpt-oss-120b och databricks-gpt-oss-20b. Använd följande parameter i din begäran:
  • reasoning_effort: accepterar värden för "low", "medium" (standard) eller "high". Högre resonemang kan resultera i mer eftertänksamma och korrekta svar, men kan öka svarstiden och tokenanvändningen. Den här parametern godkänns endast av en begränsad uppsättning modeller, inklusive databricks-gpt-oss-120b och databricks-gpt-oss-20b.

Frågeexempel

Alla resonemangsmodeller nås via slutpunkten för chattavslutningar.

Claude-modellexempel

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

Parametern reasoning_effort för GPT-5.1 är inställd none på som standard, men kan åsidosättas i begäranden. Högre resonemang kan resultera i mer eftertänksamma och korrekta svar, men kan öka svarstiden och tokenanvändningen.

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

GPT OSS-modellexempel

Parametern reasoning_effort accepterar "low", "medium" (standard) eller "high" värden. Högre resonemang kan resultera i mer eftertänksamma och korrekta svar, men kan öka svarstiden och tokenanvändningen.

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

Exempel på Gemini-modell

I det här exemplet används databricks-gemini-3-pro. Parametern reasoning_effort är inställd "low" på som standard, men kan skrivas över i begäranden enligt följande exempel.

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

API-svaret innehåller både block för tankeinnehåll och textinnehåll.

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
)

Hantera resonemang över flera turer

Det här avsnittet är specifikt för databricks-claude-sonnet-4-5 model.

I konversationer med flera turer är endast de resonemangsblock som är associerade med den senaste assistentsvängen eller verktygsanvändningssessionen synliga för modellen och räknas som indatatoken.

Om du inte vill skicka tillbaka resonemangstoken till modellen (du behöver till exempel inte resonera över dess tidigare steg) kan du utelämna resonemangsblocket helt och hållet. Till exempel:

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)

Men om du behöver att modellen resonerar över dess tidigare resonemangsprocess - till exempel om du skapar upplevelser som visar dess mellanliggande resonemang - måste du inkludera det fullständiga, oförändrade assistentmeddelandet, inklusive resonemangsblocket från föregående tur. Så här fortsätter du med en tråd med det fullständiga assistentmeddelandet:

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)

Hur fungerar en resonemangsmodell?

Resonemangsmodeller introducerar särskilda resonemangstoken utöver standardtoken för in- och utdata. Dessa token låter modellen "tänka" genom prompten, dela upp den och överväga olika sätt att svara. Efter den här interna resonemangsprocessen genererar modellen sitt slutliga svar som synliga utdatatoken. Vissa modeller, till exempel databricks-claude-sonnet-4-5, visar dessa resonemangstoken för användare, medan andra, till exempel OpenAI o-serien, tar bort dem och inte exponerar dem i de slutliga utdata.

Ytterligare resurser