Skip to content

Update default model to gpt-5.6-terra, require Ruby 3.3 - #67

Merged
bpurinton merged 3 commits into
mainfrom
update-default-model-gpt-5.6-terra
Aug 27, 2026
Merged

Update default model to gpt-5.6-terra, require Ruby 3.3#67
bpurinton merged 3 commits into
mainfrom
update-default-model-gpt-5.6-terra

Conversation

@bpurinton

@bpurinton bpurinton commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates the default model from gpt-5.2 to gpt-5.6-terra, and adjusts the reasoning default so the upgrade doesn't silently make every call slower and more expensive. Also bumps Ruby/openai gem.

Targets the 0.7.0 release — two changes here are breaking (Ruby >= 3.3, and reasoning_effort defaulting to "none"), so this goes out as a minor bump rather than a patch. The version bump itself will follow in a separate Release 0.7.0 PR, matching how 0.6.1 shipped.

Why gpt-5.6-terra?

Model Input / 1M Output / 1M Notes
gpt-5.2 (old default) $1.75 $14.00 Not deprecated, but two generations old
gpt-5.5 $5.00 $30.00 ~3x the price; already superseded by 5.6
gpt-5.6-sol $4.00 $20.00 Flagship; promotional pricing through Nov 21, 2026
gpt-5.6-terra $2.00 $12.00 Mid tier ("balances intelligence and cost")
gpt-5.6-luna $0.20 $1.20 Nano tier

Terra is essentially price-neutral vs. gpt-5.2, is a newer generation, and supports everything the gem uses (web search, image generation, code interpreter, structured outputs, image input, 1M context). Luna would be ~10x cheaper if we ever want to go that way.

Reasoning default change (the important bit)

GPT-5.5 and newer models default to reasoning.effort: "medium" when the parameter is omitted. Previously reasoning_effort defaulted to nil and the gem sent nothing, which on gpt-5.2 meant no reasoning. Left alone, this PR would have flipped every default call into medium-reasoning mode.

  • reasoning_effort now defaults to "none" and the gem sends reasoning: { effort: "none" }.
  • reasoning_effort = nil still means "omit the parameter" — needed for models that reject it (e.g. gpt-4o).
  • summary: "auto" is only sent alongside a non-"none" effort.

I went with an explicit "none" default rather than translating nil -> "none" under the hood so that older/non-reasoning models keep a working escape hatch, and so inspect shows what's actually being sent.

Ruby 3.3 + openai ~> 0.80

openai >= 0.76 requires Ruby 3.3, so bumping the SDK means dropping Ruby 3.2 (EOL since 2026-03-31). CI now runs on Ruby 3.3. This is technically breaking, which is part of why this ships as 0.7.0.

Test plan

  • bundle exec rspec spec/unit on Ruby 3.4.8 (96 examples, 0 failures; my local 3.3.x rbenv builds are x86_64 and can no longer compile native extensions on this machine, so CI is the real 3.3 check) (new specs cover the default model, default effort, and the three reasoning parameter shapes)
  • standardrb / reek output identical to main (2 pre-existing standardrb offenses, 34 pre-existing reek warnings; none in changed lines)
  • bundle exec ruby examples/all.rb (the live validation suite per CONTRIBUTING.md) against the real API on Ruby 3.4.8: all 17 examples pass, 0 , responses report model: "gpt-5.6-terra". Two example fixes came out of this:
    • 17_verbosity.rb sets reasoning_effort = nil before switching to gpt-4.1-nano, since the gpt-4.1 family rejects the reasoning parameter now sent by default (test 7 now fails for the intended verbosity reason, not the reasoning one)
    • 15_proxy.rb used exit 0 when AICHAT_PROXY_KEY was unset, which killed all.rb and silently skipped examples 16 and 17 (pre-existing); it now uses a top-level return
  • Ship as 0.7.0 (breaking: Ruby 3.3, reasoning default) — decided; version bump in a follow-up release PR

Sources: OpenAI pricing, gpt-5.6-terra, model guidance, deprecations.

- Default model: gpt-5.2 -> gpt-5.6-terra (also in generate_schema!)
- Default reasoning_effort: nil -> "none", since GPT-5.5+ fall back to
  medium reasoning when the parameter is omitted; nil still omits it
- Only request a reasoning summary when effort is not "none"
- Require Ruby >= 3.3 and bump openai gem ~> 0.59 -> ~> 0.80
- CI runs on Ruby 3.3
- Specs for default model/effort and the reasoning parameter shapes
- README and CHANGELOG updates
gpt-4.1 models reject the reasoning parameter, which is now sent by
default (effort: none). Set reasoning_effort = nil to omit it.
examples/all.rb loads each example with require_relative, so exit 0
terminated the whole suite and silently skipped 16_get_items and
17_verbosity. A top-level return ends only this file.
@bpurinton
bpurinton marked this pull request as ready for review August 24, 2026 19:09

@jelaniwoods jelaniwoods left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bpurinton
bpurinton merged commit 9391c5e into main Aug 27, 2026
2 checks passed
@bpurinton
bpurinton deleted the update-default-model-gpt-5.6-terra branch August 27, 2026 15:33
@bpurinton bpurinton mentioned this pull request Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants