Skip to content

Commit c2a737a

Browse files
authored
chore: bump default LLM models (#92)
OpenAI default moves from gpt-5.4-nano to gpt-5.6-luna — same input price, slightly cheaper output, newer generation. Anthropic default switches from the pinned snapshot claude-haiku-4-5-20251001 to the rolling alias claude-haiku-4-5 so it doesn't need a manual bump when the snapshot is eventually retired. Claude-Session: https://claude.ai/code/session_015otsgn2MY6fzR5DkWBkG6n
1 parent d675087 commit c2a737a

8 files changed

Lines changed: 14 additions & 14 deletions

File tree

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ go test ./internal/domain/categorizer/... -v # single package
3838
Reads `config.yaml` or env vars:
3939
- `MONARCH_TOKEN` — Monarch API token (required)
4040
- LLM categorizer — set **one** of:
41-
- `OPENAI_API_KEY` (also `OPENAI_APIKEY`) with optional `OPENAI_MODEL` (default `gpt-5.4-nano`)
42-
- `ANTHROPIC_API_KEY` (also `CLAUDE_API_KEY`) with optional `ANTHROPIC_MODEL` (default `claude-haiku-4-5-20251001`)
41+
- `OPENAI_API_KEY` (also `OPENAI_APIKEY`) with optional `OPENAI_MODEL` (default `gpt-5.6-luna`)
42+
- `ANTHROPIC_API_KEY` (also `CLAUDE_API_KEY`) with optional `ANTHROPIC_MODEL` (default `claude-haiku-4-5`)
4343
- `CATEGORIZER_PROVIDER``openai` or `anthropic` to force a backend when both keys are set (auto-detected otherwise)
4444
- SQLite DB auto-created at `monarch_sync.db`
4545

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ monarch:
7777

7878
openai:
7979
api_key: "${OPENAI_API_KEY}"
80-
model: "gpt-5.4-nano"
80+
model: "gpt-5.6-luna"
8181

8282
anthropic:
8383
api_key: "${ANTHROPIC_API_KEY}"
84-
model: "claude-haiku-4-5-20251001"
84+
model: "claude-haiku-4-5"
8585

8686
# Optional: force a backend when both keys are set.
8787
# Leave blank to auto-detect from whichever key is present.

config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ monarch:
3636
# OpenAI configuration
3737
openai:
3838
api_key: "${OPENAI_API_KEY}"
39-
model: "gpt-5.4-nano"
39+
model: "gpt-5.6-luna"
4040

4141
# Anthropic (Claude) configuration — used when CATEGORIZER_PROVIDER=anthropic
4242
# or when ANTHROPIC_API_KEY is the only LLM key set.
4343
anthropic:
4444
api_key: "${ANTHROPIC_API_KEY}"
45-
model: "claude-haiku-4-5-20251001"
45+
model: "claude-haiku-4-5"
4646

4747
# Categorizer backend selection.
4848
# Leave provider empty to auto-detect from which API key is set.

internal/adapters/clients/clients.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ import (
55
"log/slog"
66
"strings"
77

8-
"github.com/eshaffer321/monarch-go/v2/pkg/monarch"
98
anthropicclient "github.com/eshaffer321/itemize/internal/adapters/clients/anthropic"
109
openaiclient "github.com/eshaffer321/itemize/internal/adapters/clients/openai"
1110
"github.com/eshaffer321/itemize/internal/domain/categorizer"
1211
"github.com/eshaffer321/itemize/internal/infrastructure/config"
12+
"github.com/eshaffer321/monarch-go/v2/pkg/monarch"
1313
)
1414

1515
const (
1616
providerOpenAI = "openai"
1717
providerAnthropic = "anthropic"
18-
defaultAnthropicModel = "claude-haiku-4-5-20251001"
18+
defaultAnthropicModel = "claude-haiku-4-5"
1919
)
2020

2121
type Clients struct {

internal/domain/categorizer/categorizer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func NewCategorizer(client ChatClient, cache Cache, model string) *Categorizer {
9696
}
9797
}
9898

99-
const DefaultModel = "gpt-5.4-nano"
99+
const DefaultModel = "gpt-5.6-luna"
100100

101101
// CategorizeItems categorizes a list of items using available categories
102102
func (c *Categorizer) CategorizeItems(ctx context.Context, items []Item, categories []Category) (*CategorizationResult, error) {

internal/domain/categorizer/categorizer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,5 +423,5 @@ func TestCategorizer_CategorizeItems_ExhaustsRetries(t *testing.T) {
423423
func TestNewCategorizer_DefaultsModelWhenEmpty(t *testing.T) {
424424
categorizer := NewCategorizer(new(MockChatClient), new(MockCache), "")
425425

426-
assert.Equal(t, "gpt-5.4-nano", categorizer.Model)
426+
assert.Equal(t, DefaultModel, categorizer.Model)
427427
}

internal/infrastructure/config/config.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,11 @@ func LoadFromEnv() *Config {
186186
},
187187
OpenAI: OpenAIConfig{
188188
APIKey: os.Getenv("OPENAI_API_KEY"),
189-
Model: getEnv("OPENAI_MODEL", "gpt-5.4-nano"),
189+
Model: getEnv("OPENAI_MODEL", "gpt-5.6-luna"),
190190
},
191191
Anthropic: AnthropicConfig{
192192
APIKey: firstNonEmpty(os.Getenv("ANTHROPIC_API_KEY"), os.Getenv("CLAUDE_API_KEY")),
193-
Model: getEnv("ANTHROPIC_MODEL", "claude-haiku-4-5-20251001"),
193+
Model: getEnv("ANTHROPIC_MODEL", "claude-haiku-4-5"),
194194
},
195195
Categorizer: CategorizerConfig{
196196
Provider: os.Getenv("CATEGORIZER_PROVIDER"),

internal/infrastructure/config/config_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestLoadFromYAML(t *testing.T) {
3737
require.NoError(t, err)
3838
assert.NotNil(t, cfg)
3939
assert.Equal(t, "monarch_sync.db", cfg.Storage.DatabasePath)
40-
assert.Equal(t, "gpt-5.4-nano", cfg.OpenAI.Model)
40+
assert.Equal(t, "gpt-5.6-luna", cfg.OpenAI.Model)
4141
}
4242

4343
func TestLoadFromEnv(t *testing.T) {
@@ -66,7 +66,7 @@ func TestLoadFromEnv_Defaults(t *testing.T) {
6666
cfg := LoadFromEnv()
6767
assert.NotNil(t, cfg)
6868
assert.Equal(t, "monarch_sync.db", cfg.Storage.DatabasePath)
69-
assert.Equal(t, "gpt-5.4-nano", cfg.OpenAI.Model)
69+
assert.Equal(t, "gpt-5.6-luna", cfg.OpenAI.Model)
7070
}
7171

7272
func TestLoadOrEnv(t *testing.T) {

0 commit comments

Comments
 (0)