From f6f20ca9f89dafdc978536113b1d765bffade267 Mon Sep 17 00:00:00 2001 From: Sean O'Neill Date: Fri, 12 Dec 2025 11:02:15 -0500 Subject: [PATCH 1/3] feat(plugins/anthropic): add Claude 4.5 Haiku model --- plugins/anthropic/src/claude.ts | 19 +++++++++++++++++++ plugins/anthropic/src/index.ts | 2 ++ 2 files changed, 21 insertions(+) diff --git a/plugins/anthropic/src/claude.ts b/plugins/anthropic/src/claude.ts index 2102b93b..ae4d9b0b 100644 --- a/plugins/anthropic/src/claude.ts +++ b/plugins/anthropic/src/claude.ts @@ -236,6 +236,24 @@ export const claude45Sonnet = modelRef({ version: 'claude-sonnet-4-5-20250929', }); +export const claude45Haiku = modelRef({ + name: 'claude-4-5-haiku', + namespace: 'anthropic', + info: { + versions: ['claude-haiku-4-5-20251001', 'claude-haiku-4-5-latest'], + label: 'Anthropic - Claude 4.5 Haiku', + supports: { + multiturn: true, + tools: true, + media: true, + systemRole: true, + output: ['text'], + }, + }, + configSchema: AnthropicConfigSchema, + version: 'claude-haiku-4-5-latest', +}); + export const SUPPORTED_CLAUDE_MODELS: Record< string, ModelReference @@ -249,6 +267,7 @@ export const SUPPORTED_CLAUDE_MODELS: Record< 'claude-4-sonnet': claude4Sonnet, 'claude-4-opus': claude4Opus, 'claude-4-5-sonnet': claude45Sonnet, + 'claude-4-5-haiku': claude45Haiku, }; /** diff --git a/plugins/anthropic/src/index.ts b/plugins/anthropic/src/index.ts index 56343f98..8c656b2c 100644 --- a/plugins/anthropic/src/index.ts +++ b/plugins/anthropic/src/index.ts @@ -27,6 +27,7 @@ import { claude3Haiku, claude35Haiku, claude45Sonnet, + claude45Haiku, claudeModel, SUPPORTED_CLAUDE_MODELS, } from './claude.js'; @@ -44,6 +45,7 @@ export { claude3Haiku, claude35Haiku, claude45Sonnet, + claude45Haiku, }; export interface PluginOptions { From 3d9dad6cea8c97ac2a6835c5df54724c4d4a0992 Mon Sep 17 00:00:00 2001 From: Sean O'Neill Date: Mon, 15 Dec 2025 11:38:18 -0500 Subject: [PATCH 2/3] remove 'claude-haiku-4-5-latest' specifier --- plugins/anthropic/src/claude.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/anthropic/src/claude.ts b/plugins/anthropic/src/claude.ts index ae4d9b0b..bcd3f62e 100644 --- a/plugins/anthropic/src/claude.ts +++ b/plugins/anthropic/src/claude.ts @@ -240,7 +240,7 @@ export const claude45Haiku = modelRef({ name: 'claude-4-5-haiku', namespace: 'anthropic', info: { - versions: ['claude-haiku-4-5-20251001', 'claude-haiku-4-5-latest'], + versions: ['claude-haiku-4-5-20251001'], label: 'Anthropic - Claude 4.5 Haiku', supports: { multiturn: true, @@ -251,7 +251,7 @@ export const claude45Haiku = modelRef({ }, }, configSchema: AnthropicConfigSchema, - version: 'claude-haiku-4-5-latest', + version: 'claude-haiku-4-5-20251001', }); export const SUPPORTED_CLAUDE_MODELS: Record< From 2f340f2dacafc0c0821c3b6ac1c0adb5c4d72fdc Mon Sep 17 00:00:00 2001 From: Sean O'Neill Date: Mon, 15 Dec 2025 11:52:47 -0500 Subject: [PATCH 3/3] add test --- plugins/anthropic/src/claude.test.ts | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/plugins/anthropic/src/claude.test.ts b/plugins/anthropic/src/claude.test.ts index b72e42fb..cad347d0 100644 --- a/plugins/anthropic/src/claude.test.ts +++ b/plugins/anthropic/src/claude.test.ts @@ -837,6 +837,40 @@ describe('toAnthropicRequestBody', () => { }, }, }, + { + should: '(claude-4-5-haiku) handles request with text messages', + modelName: 'claude-4-5-haiku', + genkitRequest: { + messages: [ + { role: 'user', content: [{ text: 'Tell a joke about dogs.' }] }, + ], + output: { format: 'text' }, + config: { + metadata: { + user_id: 'exampleUser123', + }, + }, + }, + expectedOutput: { + max_tokens: 4096, + messages: [ + { + content: [ + { + text: 'Tell a joke about dogs.', + type: 'text', + citations: null, + }, + ], + role: 'user', + }, + ], + model: 'claude-haiku-4-5-20251001', + metadata: { + user_id: 'exampleUser123', + }, + }, + }, ]; for (const test of testCases) { it(test.should, () => {