Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#5,336 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
65/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
ai

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
Python
スター
30k
フォーク
4.9k
平均マージ
18時間 13分
マージ済み PR(30日)
215

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

openai/openai-agents-python のほかの issue

openai/openai-agents-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。