Modelos de raciocínio de consulta
Neste artigo, você aprenderá a escrever solicitações de consulta para modelos básicos otimizados para tarefas de raciocínio e enviá-las ao seu Modelo Básico API endpoint.
A API do Mosaic AI Foundation Model fornece uma API unificada para interagir com todos os modelos básicos, incluindo modelos de raciocínio. O raciocínio proporciona aos modelos básicos capacidades aprimoradas para lidar com tarefas complexas. Alguns modelos também oferecem transparência ao revelar seu processo de pensamento passo a passo antes de fornecer uma resposta final.
Tipos de modelos de raciocínio
Existem dois tipos de modelos, apenas para raciocínio e híbridos. A tabela a seguir descreve como modelos diferentes usam abordagens diferentes para controlar o raciocínio:
Tipo de modelo de raciocínio | Detalhes | Exemplos de modelos | Parâmetros |
---|---|---|---|
Raciocínio híbrido | Suporta respostas rápidas e instantâneas e raciocínio mais profundo quando necessário. | Claude modela como | Inclua os seguintes parâmetros para usar o raciocínio híbrido:
|
Apenas raciocínio | Esses modelos sempre usam o raciocínio interno em suas respostas. | Modelos GPT OSS como | Use o seguinte parâmetro em sua solicitação:
|
Exemplos de consultas
Todos os modelos de raciocínio são acessados por meio do endpoint de conclusões do chat.
- Claude model example
- GPT OSS model example
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)
O parâmetro reasoning_effort
aceita os valores "low"
, "medium"
(default) ou "high"
. Um maior esforço de raciocínio pode resultar em respostas mais ponderadas e precisas, mas pode aumentar a latência e o uso de tokens.
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"
}'
A resposta da API inclui blocos de conteúdo textual e de reflexão:
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
)
gerenciar o raciocínio em várias etapas
Esta seção é específica para o databricks-claude-3-7-sonnet model
.
Em conversas com várias voltas, apenas os blocos de raciocínio associados à última volta do assistente ou sessão de uso da ferramenta são visíveis para o modelo e contados como tokens de entrada.
Se não desejar passar tokens de raciocínio de volta para o modelo (por exemplo, se não precisar dele para raciocinar sobre as etapas anteriores), é possível omitir o bloco de raciocínio completamente. Por exemplo:
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)
No entanto, se você precisar que o modelo raciocine sobre seu processo de raciocínio anterior - por exemplo, se estiver criando experiências que revelem seu raciocínio intermediário - você deve incluir a mensagem completa e não modificada do assistente, incluindo o bloco de raciocínio do turno anterior. Veja como continuar um tópico com a mensagem completa do assistente:
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)
Como funciona um modelo de raciocínio?
Os modelos de raciocínio introduzem tokens de raciocínio especiais, além dos tokens de entrada e saída padrão. Esses tokens permitem que o modelo "reflita sobre o prompt", decompondo-o e considerando diferentes maneiras de responder. Após esse processo de raciocínio interno, o modelo gera sua resposta final como tokens de saída visíveis. Alguns modelos, como o databricks-claude-3-7-sonnet
, exibem esses tokens de raciocínio aos usuários, enquanto outros, como a série OpenAI o, os descartam e não os expõem na saída final.