Function tools with reasoning_effort are not supported for gpt-6.1-sol in /v1/chat/completions
A Chat Completions request that sends function tools to gpt-6.1-sol fails. The same tool-calling limit is documented for gpt-6-astra. The recorded error names reasoning_effort none as a second option. That value is not supported on either model. Call the Responses API.
Function tools with reasoning_effort are not supported for gpt-6.1-sol in /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to 'none'.
The GPT-6.1 Sol model page says to use the Responses API for tool calling, and that Chat Completions is supported without tool calling. It also says the none and minimal reasoning efforts are not supported. The Using GPT-6 guide says GPT-6 Astra and GPT-6.1 Sol support Chat Completions, but tool calling requires Responses, and that neither model supports reasoning effort none. The reasoning guide says Chat Completions does not support function calling with GPT-6 Astra or GPT-6.1 Sol, and that setting reasoning effort to none on GPT-6 Astra returns HTTP 400. GPT-6.1 Sol defaults to medium. The openrag issue prints the sentence above for gpt-6.1-sol, after the words OpenAI error. That sentence tells you to set reasoning_effort to none. The model page says that value is not supported, so it is not a fix for gpt-6.1-sol or gpt-6-astra. The Using GPT-6 guide says GPT-6 Sol and GPT-6 Luna do support none, and that Chat Completions function calling on those two works only with reasoning_effort set to none.
Source: GPT-6.1 Sol model page, checked October 25, 2026.
Affected models
The quoted sentence was recorded for gpt-6.1-sol. The Using GPT-6 guide states the same Chat Completions tool limit for gpt-6-astra.
The openrag issue records the sentence for this id. The model page says Chat Completions is supported without tool calling, and that none and minimal are not supported.
The Using GPT-6 guide and the reasoning guide say Chat Completions does not support function calling on this id. The quoted sentence was not recorded for this id. Setting reasoning effort to none returns HTTP 400.
Fix
Raw SDK
Move function tools to the Responses API. The tool object is flat: name sits next to type, not inside a function object. Send the tool result later as a function_call_output item with the same call_id. The migration guide shows that shape.
Do not set reasoning_effort to none on gpt-6.1-sol or gpt-6-astra. The error text names that option. The GPT-6.1 Sol model page says none is not supported. The reasoning guide says none on GPT-6 Astra returns HTTP 400. none is allowed on gpt-6-luna and gpt-6-sol. That Chat Completions path is on the Luna page.
Before, Python
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "What is the weather in Paris?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather for a city.",
"parameters": {
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
},
}],
)
After, Python
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-6.1-sol",
input=[{"role": "user", "content": "What is the weather in Paris?"}],
tools=[{
"type": "function",
"name": "get_weather",
"description": "Get the weather for a city.",
"parameters": {
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
}],
)
Before, Node
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.chat.completions.create({
model: "gpt-6.1-sol",
messages: [{ role: "user", content: "What is the weather in Paris?" }],
tools: [{
type: "function",
function: {
name: "get_weather",
description: "Get the weather for a city.",
parameters: {
type: "object",
properties: { location: { type: "string" } },
required: ["location"],
},
},
}],
});
After, Node
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-6.1-sol",
input: [{ role: "user", content: "What is the weather in Paris?" }],
tools: [{
type: "function",
name: "get_weather",
description: "Get the weather for a city.",
parameters: {
type: "object",
properties: { location: { type: "string" } },
required: ["location"],
},
}],
});
A model string that starts with openai/ calls Chat Completions. Prefix the id with openai/responses/ to call the Responses API. LiteLLM shows openai/responses/gpt-6.1-sol for a call that sends tools and reasoning_effort together, and it says a gpt-6.1-sol call without that prefix uses Chat Completions. Use reasoning_effort low, not none.
openai('gpt-6.1-sol') uses the Responses API. The AI SDK guide says to use the Responses API for GPT-6 tool calling, and that GPT-6 Astra and GPT-6.1 Sol do not support reasoningEffort none. openai.chat() stays on Chat Completions. Do not use that factory for function tools on these two models.
Responses API
import { openai } from "@ai-sdk/openai";
import { generateText, tool } from "ai";
import { z } from "zod";
const result = await generateText({
model: openai("gpt-6.1-sol"),
prompt: "What is the weather in Paris?",
tools: {
get_weather: tool({
description: "Get the weather for a city.",
inputSchema: z.object({ city: z.string() }),
}),
},
});
GitHub issue langflow-ai/openrag#2534 records it for gpt-6.1-sol on /v1/chat/completions. The Using GPT-6 guide states the same Chat Completions tool limit for gpt-6-astra. This page does not quote an Astra error sentence, because that issue does not print one.
Can I set reasoning_effort to none?
Not on gpt-6.1-sol or gpt-6-astra. The GPT-6.1 Sol model page says none and minimal are not supported. The reasoning guide says none on GPT-6 Astra returns HTTP 400. none works on gpt-6-luna and gpt-6-sol. See the Luna error.
What are the two fixes?
For gpt-6.1-sol and gpt-6-astra, use /v1/responses. reasoning_effort none is the Chat Completions fix only where the model supports none: gpt-6-luna and gpt-6-sol. The steps are in Move function calling to the Responses API.