fix(auxiliary): OMIT temperature for gpt-5.5 family (#51083) - #51157
fix(auxiliary): OMIT temperature for gpt-5.5 family (#51083)#51157Tranquil-Flow wants to merge 1 commit into
Conversation
3052c19 to
b25195a
Compare
|
1|> This was generated by AI during triage. |
teknium1
left a comment
There was a problem hiding this comment.
Thanks for isolating the pre-retry path. The premise remains present on current main: tools/vision_tools.py:1229 supplies temperature=0.1, while agent/auxiliary_client.py:399-404 has no GPT-5.5 directive and agent/auxiliary_client.py:6216-6232 includes that temperature in the request. The current async fallback only removes it after the initial failure (agent/auxiliary_client.py:7170-7179).
Problems
LAYERS.md:1is a repository-root analysis artifact duplicating the issue/PR rationale; the maintainer comment on this PR already calls out that it should be dropped.
Suggested changes
- Remove
LAYERS.mdand preserve the focused code and regression-test changes.
Automated hermes-sweeper review.
| @@ -0,0 +1,73 @@ | |||
| # Layers from issue #51083 | |||
There was a problem hiding this comment.
Please drop this root-level analysis artifact. It duplicates the issue/PR rationale rather than documenting a maintained product or developer surface, and the maintainer comment on this PR already identified it as merge noise.
b25195a to
16a77fb
Compare
What was fixed
tools/vision_tools.pydefaultsvision_temperature=0.1and passes it throughasync_call_llm→_build_call_kwargsfor every model. OpenAI'sgpt-5.5family (acrossopenai-apidirect,openai-codexOAuth,openrouter, and any custom OpenAI-compatible proxy servinggpt-5.5) only accepts the provider's defaulttemperature=1and 400s on any other value:The existing reactive retry path in
agent/auxiliary_client.py(~line 5423) catches the 400 and retries withouttemperature, but it costs a wasted round-trip AND the issue's debug log shows the fallback chain timed out on the way — the user seesError analyzing image: Error code: 400 - ....Fix: add
_is_gpt55_family()(provider-agnostic, prefix-greedy with-/.boundary sogpt-5.55/gpt-5.50/gpt-55don't false-positive) and consult it from_fixed_temperature_for_modelso_build_call_kwargsstrips thetemperaturekey entirely. The first call is then correct and the reactive retry path is no longer exercised on the gpt-5.5 family.Sibling gpt-5.4 / gpt-5 / gpt-5-mini / gpt-4o / claude models keep custom temperature — verified by regression tests.
Every auxiliary task that uses
_build_call_kwargs(vision, compression, titles, session_search, etc.) is fixed at the same point instead of per-call-site, per AGENTS.md "sibling call paths included — not just the one site the reporter hit."How verified
tests/agent/test_gpt55_temperature_omit.py+tests/agent/test_unsupported_temperature_retry.py(post-rebase on latestupstream/main)upstream/mainthe new tests fail as expected:test_gpt55_temperature_omit.pycollection fails:ImportError: cannot import name '_is_gpt55_family' from 'agent.auxiliary_client'test_gpt55_family_does_not_trigger_reactive_retryfails: directive does not strip temperature, so 2 calls are made instead of 1.test_build_call_kwargs_strips_temperature_for_gpt55()calls the real_build_call_kwargs(provider="openai-api", model="gpt-5.5", temperature=0.1, ...)and asserts"temperature" not in kwargs.gpt-5.4,gpt-4oretain their custom temperature (assert kwargs.get("temperature") == 0.7).Test results
tests/agent/test_gpt55_temperature_omit.py— 34 tests:gpt-5.5,gpt-5.5-pro,gpt-5.5-2026-04-23,gpt-5.5-codex-mini,openai/gpt-5.5,openai/gpt-5.5-pro,GPT-5.5,gpt-5.5,openai/GPT-5.5-ProNone,"",gpt-5.4,gpt-5,gpt-5-mini,gpt-5.4-mini,gpt-5.55,gpt-5.50,gpt-55,claude-sonnet-4.6,kimi-k2,trinity-large-thinking,gpt-4oOMIT_TEMPERATUREfor gpt-5.5 family across allbase_urlvariants (openai-api / codex OAuth)_build_call_kwargsstripstemperatureforopenai-api/gpt-5.5,openrouter/openai/gpt-5.5-pro,openai-codex/gpt-5.5_build_call_kwargspreservestemperatureforgpt-5.4andgpt-4otests/agent/test_unsupported_temperature_retry.py— 26 tests (reactive retry tests moved fromgpt-5.5→gpt-5.4so the genuine reactive path stays exercised; newtest_gpt55_family_does_not_trigger_reactive_retryasserts exactly one call forgpt-5.5):tests/agent/test_auxiliary_client.py::TestCodexAuxiliaryAdapterTimeout::test_enforces_total_timeout_while_stream_keeps_emitting_eventsfails on this branch (and onupstream/mainindependently) with a wallclock race (0.18s actual vs 0.14s threshold). It's a pre-existing flaky timing test unrelated to this fix — confirmed by running it onupstream/mainwithout the fix applied.Competitor analysis
Re-checked at publish time:
gh pr list --repo NousResearch/hermes-agent --author Tranquil-Flow --state open --search "51083 in:title,body"→ emptygh pr list --repo NousResearch/hermes-agent --state open --search "51083 in:title,body"→ emptygpt-5.5 temperature,OMIT temperature,vision_analyze gpt-5.5→ no PRs referencing [Bug]: auxiliary vision sends unsupported temperature to OpenAI gpt-5.5 #51083.No competing PR for #51083.
Auto-published by Moonsong via Path B automated pipeline (GPT-5.5 review, 2026-06-23).
Resolves #51083