GPT-6 models get no default reasoning settings leading to 400 on /v1/chat/completions with function tools
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 65/100
Direzione di ricerca
Start with src/agents/models/default_models.py and read get_default_model_settings() alongside the GPT-5 patterns and helper functions named in the issue. Check existing tests for default settings and add coverage for the confirmed GPT-6 names, unconfirmed variants, and chat aliases. Done when the defaults match the requested behavior and the relevant tests pass.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
agents.models.default_models.get_default_model_settings() only recognizes GPT-5 model names. For GPT-6 models it returns empty ModelSettings, so no reasoning is sent with the request. GPT-6 models then reject function tool calls on /v1/chat/completions with a 400 unless reasoning_effort is set to "none" (or the call is routed to /v1/responses).
We would like GPT-6 models to receive the same per-model default reasoning treatment as GPT-5 models.
Environment
- SDK:
openai-agents0.19.2 (also present on currentmain—src/agents/models/default_models.py) - Python 3.12
- Model invoked through
OpenAIChatCompletionsModel(/v1/chat/completions), accessed via an OpenAI-compatible gateway that forwards provider errors unchanged
Observed error
Creating an Agent with a GPT-6 model and any function tool (or MCP tool), then running it, fails with:
Error code: 400 - {'error': {'message': "Function tools with reasoning_effort are not
supported for gpt-6-sol in /v1/chat/completions. To use function tools, use
/v1/responses or set reasoning_effort to 'none'.", 'type': 'invalid_request_error',
'param': 'reasoning_effort', 'code': None}}
The same agent code works with gpt-5.6-luna, because that name is covered by _GPT_5_DEFAULT_REASONING_EFFORT_PATTERNS and the SDK sends reasoning={"effort": "none"} by default.
Minimal reproduction sketch:
from agents import Agent, Runner, function_tool
@function_tool
def get_weather(city: str) -> str:
"""Get the weather for a city."""
return "sunny"
# Fails: agent.model_settings == ModelSettings() -> no reasoning sent -> 400
agent = Agent(name="test", model="gpt-6-sol", tools=[get_weather])
Runner.run_sync(agent, "What's the weather in Paris?")
# Works: explicit reasoning makes the provider accept the tool call
from agents import ModelSettings
from openai.types.shared.reasoning import Reasoning
agent = Agent(
name="test",
model="gpt-6-sol",
tools=[get_weather],
model_settings=ModelSettings(reasoning=Reasoning(effort="none")),
)
The second case succeeding confirms gpt-6-sol accepts reasoning_effort: "none" on /v1/chat/completions — the model just never receives it by default.
Root cause
In src/agents/models/default_models.py:
gpt_5_reasoning_settings_required()gates onmodel_name.startswith("gpt-5"), so GPT-6 names are not considered reasoning models._GPT_5_DEFAULT_REASONING_EFFORT_PATTERNShas no GPT-6 entries.get_default_model_settings("gpt-6-sol")therefore returnsModelSettings()and nothing is sent asreasoning_effort; the provider applies its own default, which GPT-6 rejects in combination with function tools on/v1/chat/completions.
Requested change
Extend the existing default-reasoning machinery to the GPT-6 family, mirroring the GPT-5 structure:
- Confirmed defaults:
gpt-6-sol,gpt-6-luna, andgpt-6.1-sol(plus dated snapshots) should map toreasoning=Reasoning(effort="none")withverbosity="low", i.e. the same settings already applied togpt-5.6-luna/gpt-5.6-sol. - Unconfirmed variants: for GPT-6 names whose supported efforts are not yet confirmed (e.g.
gpt-6,gpt-6-astra), keep the existing policy of the family verbosity default withoutreasoning.effort— the same way unconfirmed GPT-5 variants (e.g.gpt-5-mini) are handled today. Maintainers can fill in confirmed efforts as they become known. - Non-reasoning aliases:
gpt-6-chat(andgpt-6-chat-latest, if it exists) should return emptyModelSettings, like thegpt-5.x-chat-latestaliases, since they do not acceptreasoning.effort.
The functions involved are the ones our application relies on: get_default_model_settings (used by Agent's model_settings default factory and by agents.run_internal.turn_preparation), get_default_model, gpt_5_reasoning_settings_required, and is_gpt_5_default.
Workaround we are using
Setting model_settings=ModelSettings(reasoning=Reasoning(effort="none")) explicitly on every GPT-6 agent. This works but duplicates what the SDK already does per-model for GPT-5, and it silently pins the effort even for models where a different default would be preferable — which is exactly what get_default_model_settings exists to avoid.
- Lingua principale
- Python
- Stelle
- 30k
- Fork
- 4.9k
- Merge medio
- 16h 25m
- PR unite (30g)
- 220
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openai/openai-agents-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
openai/openai-agents-python#5348 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
openai/openai-agents-python#5353 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 Mezza giornata Idoneità per principianti 70/100
openai/openai-agents-python#5342 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
openai/openai-agents-python#5322 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openai/openai-agents-python
Issue simili
-
md/asciidoc/csv: an explicit `encoding="utf-8"` keeps a leading BOM, the auto-detect path drops itAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
docling-project/docling#4846 ·
I maintainer di solito rispondono entro 1 giorno
-
area/sessions comp/dashboard comp/desktop comp/gateway comp/tui duplicate P2 sweeper:risk-session-state type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#138914 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bot-triaged module: activation checkpointing module: inductor oncall: pt2 triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
[oblt-aw][autodoc] Update PR Actions Detective E2E prerequisites and fix dashboard-format table typoApertadocumentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
elastic/oblt-aw#2382 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno