Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

GPT-6 models get no default reasoning settings leading to 400 on /v1/chat/completions with function tools

Aperta
#5,336 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
ai

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

enhancement

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-agents 0.19.2 (also present on current main — 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 on model_name.startswith("gpt-5"), so GPT-6 names are not considered reasoning models.
  • _GPT_5_DEFAULT_REASONING_EFFORT_PATTERNS has no GPT-6 entries.
  • get_default_model_settings("gpt-6-sol") therefore returns ModelSettings() and nothing is sent as reasoning_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:

  1. Confirmed defaults: gpt-6-sol, gpt-6-luna, and gpt-6.1-sol (plus dated snapshots) should map to reasoning=Reasoning(effort="none") with verbosity="low", i.e. the same settings already applied to gpt-5.6-luna / gpt-5.6-sol.
  2. 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 without reasoning.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.
  3. Non-reasoning aliases: gpt-6-chat (and gpt-6-chat-latest, if it exists) should return empty ModelSettings, like the gpt-5.x-chat-latest aliases, since they do not accept reasoning.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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di openai/openai-agents-python

Tutte le issue di openai/openai-agents-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.