メインコンテンツまでスキップ

推論モデルのクエリ

この記事では、クエリ要求を記述する方法を学習します 基盤モデル 推論タスクに最適化され、それらを 基盤モデル API エンドポイントに送信します。

Mosaic AI 基盤モデル API は、推論モデルを含むすべての基盤モデルと対話するための統一された API を提供します。 推論により、基盤モデルは複雑なタスクに取り組むための強化された能力を得ることができます。 また、一部のモデルは、最終的な答えを出す前に、段階的な思考プロセスを明らかにすることで透明性を提供します。

推論モデルの種類

モデルには、推論のみとハイブリッドの 2 種類があります。次の表は、異なるモデルが推論を制御するために異なるアプローチを使用する方法を示しています。

推論モデルの種類

詳細

モデル例

パラメータ

ハイブリッド推論

必要に応じて、迅速で即時の返信とより深い推論の両方をサポートします。

クロードは databricks-claude-3-7-sonnetdatabricks-claude-sonnet-4のようなモデルです。

ハイブリッド推論を使用するには、次のパラメーターを含めます。

  • thinking
  • budget_tokens: モデルが内部思考に使用できるトークンの数を制御します。予算を高くすると、複雑なタスクの品質が向上しますが、32K を超える使用量は異なる場合があります。budget_tokensmax_tokens未満でなければなりません。

推論のみ

これらのモデルは、応答に常に内部推論を使用します。

databricks-gpt-oss-120bdatabricks-gpt-oss-20bなどのGPT OSSモデル。

リクエストで次のパラメーターを使用します。

  • reasoning_effort: "low""medium" (デフォルト)、または "high"の値を受け入れます。推論の努力が高まると、より思慮深く正確な応答が得られる可能性がありますが、レイテンシーとトークンの使用量が増加する可能性があります。このパラメーターは、 databricks-gpt-oss-120bdatabricks-gpt-oss-20bなど、限られたモデル セットでのみ受け入れられます。

クエリの例

すべての推論モデルは、 チャット完了 エンドポイントを介してアクセスされます。

Python
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-3-7-sonnet",
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)

API レスポンスには、思考コンテンツブロックとテキストコンテンツブロックの両方が含まれます。

Python
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
)

複数のターンにわたる推論の管理

このセクションは、 databricks-claude-3-7-sonnet modelに固有のものです。

マルチターンの会話では、最後のアシスタントターンまたはツール使用セッションに関連付けられた推論ブロックのみがモデルに表示され、入力トークンとしてカウントされます。

推論トークンをモデルに戻さない場合 (たとえば、前の手順で推論する必要がない場合) は、推論ブロックを完全に省略できます。例えば:

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

ただし、モデルが前の推論プロセスを推論する必要がある場合 (たとえば、中間推論を表示するエクスペリエンスを構築している場合) は、前のターンの推論ブロックを含む、変更されていない完全なアシスタント メッセージを含める必要があります。完全なアシスタントメッセージでスレッドを続ける方法は次のとおりです。

Python
assistant_message = response.choices[0].message

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

推論モデルはどのように機能しますか?

推論モデルでは、標準の入力トークンと出力トークンに加えて、特別な推論トークンが導入されます。これらのトークンにより、モデルはプロンプトを通じて「考え」、プロンプトを分解し、さまざまな応答方法を検討できます。この内部推論プロセスの後、モデルは最終的な回答を目に見える出力トークンとして生成します。databricks-claude-3-7-sonnetのような一部のモデルは、これらの推論トークンをユーザーに表示する一方で、OpenAI o シリーズなどの他のモデルはそれらを破棄し、最終出力で公開しません。

追加のリソース