Skip to content

Commit 60c1a35

Browse files
committed
Add GPT 5.1 and Gemini 3 Pro model support
Synced model capabilities from hanzo-node v1.1.16: - Added GPT 5.1 capabilities and cost - Added Gemini 3 Pro full multimodal capabilities - Added Gemini 3 Pro cost, max tokens, tool capabilities - Added ZooBackend reasoning capabilities
1 parent 296ffdb commit 60c1a35

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

zoo-bin/zoo-node/src/managers/model_capabilities_manager.rs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ impl ModelCapabilitiesManager {
128128
match model {
129129
LLMProviderInterface::OpenAI(openai) => match openai.model_type.as_str() {
130130
"gpt-5" => vec![ModelCapability::ImageAnalysis, ModelCapability::TextInference],
131+
"gpt-5.1" => vec![ModelCapability::ImageAnalysis, ModelCapability::TextInference],
131132
"gpt-5-mini" => vec![ModelCapability::ImageAnalysis, ModelCapability::TextInference],
132133
"gpt-5-nano" => vec![ModelCapability::ImageAnalysis, ModelCapability::TextInference],
133134
"gpt-5-chat-latest" => vec![ModelCapability::ImageAnalysis, ModelCapability::TextInference],
@@ -242,6 +243,15 @@ impl ModelCapabilitiesManager {
242243

243244
fn get_gemini_capabilities(model_type: &str) -> Vec<ModelCapability> {
244245
match model_type {
246+
// Gemini 3 models
247+
model_type if model_type.starts_with("gemini-3-pro") => {
248+
vec![
249+
ModelCapability::TextInference,
250+
ModelCapability::ImageAnalysis,
251+
ModelCapability::VideoAnalysis,
252+
ModelCapability::AudioAnalysis,
253+
]
254+
}
245255
// Gemini 2.5 models
246256
model_type if model_type.starts_with("gemini-2.5-flash-preview-tts") => {
247257
vec![ModelCapability::TextInference]
@@ -350,6 +360,8 @@ impl ModelCapabilitiesManager {
350360

351361
fn get_gemini_cost(model_type: &str) -> ModelCost {
352362
match model_type {
363+
// Gemini 3 models
364+
model_type if model_type.starts_with("gemini-3-pro") => ModelCost::Expensive,
353365
// Gemini 2.5 models (preview/experimental - more expensive due to restricted limits)
354366
model_type if model_type.starts_with("gemini-2.5-flash-preview") => ModelCost::GoodValue,
355367
model_type if model_type.starts_with("gemini-2.5-pro-preview") => ModelCost::Expensive,
@@ -370,6 +382,8 @@ impl ModelCapabilitiesManager {
370382

371383
fn get_gemini_max_tokens(model_type: &str) -> usize {
372384
match model_type {
385+
// Gemini 3 models
386+
model_type if model_type.starts_with("gemini-3-pro") => 2_097_152,
373387
// Gemini 2.5 models
374388
model_type if model_type.starts_with("gemini-2.5-flash-preview-05-20") => 1_048_576,
375389
model_type if model_type.starts_with("gemini-2.5-flash-preview-native-audio-dialog") => 128_000,
@@ -394,6 +408,8 @@ impl ModelCapabilitiesManager {
394408

395409
fn get_gemini_max_output_tokens(model_type: &str) -> usize {
396410
match model_type {
411+
// Gemini 3 models
412+
model_type if model_type.starts_with("gemini-3-pro") => 65_536,
397413
// Gemini 2.5 models
398414
model_type if model_type.starts_with("gemini-2.5-flash-preview-05-20") => 65_536,
399415
model_type if model_type.starts_with("gemini-2.5-flash-preview-native-audio-dialog") => 8_000,
@@ -418,6 +434,8 @@ impl ModelCapabilitiesManager {
418434

419435
fn gemini_has_tool_capabilities(model_type: &str) -> bool {
420436
match model_type {
437+
// Gemini 3 models
438+
model_type if model_type.starts_with("gemini-3-pro") => true,
421439
// Gemini 2.5 models - TTS models don't support function calling
422440
model_type if model_type.starts_with("gemini-2.5-flash-preview-tts") => false,
423441
model_type if model_type.starts_with("gemini-2.5-flash-image-preview") => false,
@@ -445,6 +463,7 @@ impl ModelCapabilitiesManager {
445463
match model {
446464
LLMProviderInterface::OpenAI(openai) => match openai.model_type.as_str() {
447465
"gpt-5" => ModelCost::GoodValue,
466+
"gpt-5.1" => ModelCost::GoodValue,
448467
"gpt-5-mini" => ModelCost::Cheap,
449468
"gpt-5-nano" => ModelCost::VeryCheap,
450469
"gpt-5-chat-latest" => ModelCost::GoodValue,
@@ -1164,13 +1183,19 @@ impl ModelCapabilitiesManager {
11641183
|| claude.model_type.starts_with("claude-3-7-sonnet")
11651184
}
11661185
LLMProviderInterface::Gemini(gemini) => {
1167-
gemini.model_type == "gemini-2.5-flash-preview-05-20"
1186+
gemini.model_type.starts_with("gemini-3-pro")
1187+
|| gemini.model_type == "gemini-2.5-flash-preview-05-20"
11681188
|| gemini.model_type == "gemini-2.5-flash-lite-preview-06-17"
11691189
|| gemini.model_type == "gemini-2.5-flash-lite"
11701190
|| gemini.model_type == "gemini-2.5-flash"
11711191
|| gemini.model_type == "gemini-2.5-pro"
11721192
|| gemini.model_type == "gemini-2.0-flash-exp"
11731193
}
1194+
LLMProviderInterface::ZooBackend(zoo_backend) => {
1195+
zoo_backend.model_type().starts_with("FREE_TEXT_INFERENCE")
1196+
|| zoo_backend.model_type().starts_with("STANDARD_TEXT_INFERENCE")
1197+
|| zoo_backend.model_type().starts_with("PREMIUM_TEXT_INFERENCE")
1198+
}
11741199
_ => false,
11751200
}
11761201
}

0 commit comments

Comments
 (0)