diff --git a/embabel-agent-api/src/main/java/com/embabel/agent/api/models/GeminiModels.java b/embabel-agent-api/src/main/java/com/embabel/agent/api/models/GeminiModels.java index de9f569f6..b4e5afc37 100644 --- a/embabel-agent-api/src/main/java/com/embabel/agent/api/models/GeminiModels.java +++ b/embabel-agent-api/src/main/java/com/embabel/agent/api/models/GeminiModels.java @@ -27,6 +27,8 @@ private GeminiModels() { // Gemini 3.1 Family (Latest) public static final String GEMINI_3_1_PRO_PREVIEW = "gemini-3.1-pro-preview"; + public static final String GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS = "gemini-3.1-pro-preview-customtools"; + public static final String GEMINI_3_1_FLASH_LITE_PREVIEW = "gemini-3.1-flash-lite-preview"; // Gemini 2.5 Family (Current Generation) public static final String GEMINI_2_5_PRO = "gemini-2.5-pro"; diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/api/models/GoogleGenAiModels.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/api/models/GoogleGenAiModels.kt index be51e36eb..8182fe4c5 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/api/models/GoogleGenAiModels.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/api/models/GoogleGenAiModels.kt @@ -28,6 +28,8 @@ class GoogleGenAiModels { // Gemini 3.1 Family (Preview - Latest Generation) const val GEMINI_3_1_PRO_PREVIEW = "gemini-3.1-pro-preview" const val GEMINI_3_FLASH_PREVIEW = "gemini-3-flash-preview" + const val GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS = "gemini-3.1-pro-preview-customtools" + const val GEMINI_3_1_FLASH_LITE_PREVIEW = "gemini-3.1-flash-lite-preview" // Gemini 2.5 Family (Stable - Current Generation) const val GEMINI_2_5_PRO = "gemini-2.5-pro" diff --git a/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/main/resources/models/gemini-models.yml b/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/main/resources/models/gemini-models.yml index 8843d1cd2..dce5bffee 100644 --- a/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/main/resources/models/gemini-models.yml +++ b/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/main/resources/models/gemini-models.yml @@ -18,6 +18,28 @@ models: usd_per1m_input_tokens: 2.00 usd_per1m_output_tokens: 12.00 + # Gemini 3.1 Pro Preview Customtools - Optimized for custom tool usage + - name: "gemini_3_1_pro_preview_customtools" + model_id: "gemini-3.1-pro-preview-customtools" + display_name: "Gemini 3.1 Pro Preview Customtools" + knowledge_cutoff_date: "2025-01-01" + max_tokens: 65536 + temperature: 0.7 + pricing_model: + usd_per1m_input_tokens: 2.00 + usd_per1m_output_tokens: 12.00 + + # Gemini 3.1 Flash Lite Preview - Lightweight and cost-effective latest generation model + - name: "gemini_3_1_flash_lite_preview" + model_id: "gemini-3.1-flash-lite-preview" + display_name: "Gemini 3.1 Flash Lite Preview" + knowledge_cutoff_date: "2025-01-01" + max_tokens: 65536 + temperature: 0.7 + pricing_model: + usd_per1m_input_tokens: 0.25 + usd_per1m_output_tokens: 1.50 + # ======================================== # GEMINI 2.5 FAMILY (Stable - Current Generation) # ======================================== diff --git a/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/gemini/GeminiModelLoaderTest.kt b/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/gemini/GeminiModelLoaderTest.kt index 5c8b6f6ee..521c966a7 100644 --- a/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/gemini/GeminiModelLoaderTest.kt +++ b/embabel-agent-autoconfigure/models/embabel-agent-gemini-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/gemini/GeminiModelLoaderTest.kt @@ -82,7 +82,7 @@ class GeminiModelLoaderTest { } @Test - fun `should load all 6 expected Gemini models`() { + fun `should load all 8 expected Gemini models`() { // Arrange val loader = GeminiModelLoader() @@ -90,10 +90,12 @@ class GeminiModelLoaderTest { val result = loader.loadAutoConfigMetadata() // Assert - assertEquals(6, result.models.size, "Should load exactly 6 Gemini models") + assertEquals(8, result.models.size, "Should load exactly 8 Gemini models") val expectedModels = listOf( - "gemini_3_1_pro_preview", "gemini_25_pro", "gemini_25_flash", + "gemini_3_1_pro_preview", "gemini_3_1_pro_preview_customtools", + "gemini_3_1_flash_lite_preview", + "gemini_25_pro", "gemini_25_flash", "gemini_25_flash_lite", "gemini_20_flash", "gemini_20_flash_lite" ) diff --git a/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/main/resources/models/google-genai-models.yml b/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/main/resources/models/google-genai-models.yml index 5ab7e0352..7b3ea5f1a 100644 --- a/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/main/resources/models/google-genai-models.yml +++ b/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/main/resources/models/google-genai-models.yml @@ -21,6 +21,17 @@ models: usd_per1m_input_tokens: 2.00 usd_per1m_output_tokens: 12.00 + # Gemini 3.1 Pro Preview Customtools - Optimized for custom tool usage + - name: "gemini_3_1_pro_preview_customtools" + model_id: "gemini-3.1-pro-preview-customtools" + display_name: "Gemini 3.1 Pro Preview Customtools" + knowledge_cutoff_date: "2025-01-01" + max_output_tokens: 65536 + temperature: 0.7 + pricing_model: + usd_per1m_input_tokens: 2.00 + usd_per1m_output_tokens: 12.00 + # Gemini 3 Flash Preview - Fast model with thinking capabilities - name: "gemini_3_flash_preview" model_id: "gemini-3-flash-preview" @@ -32,6 +43,17 @@ models: usd_per1m_input_tokens: 0.50 usd_per1m_output_tokens: 3.00 + # Gemini 3.1 Flash Lite Preview - Lightweight and cost-effective latest generation model + - name: "gemini_3_1_flash_lite_preview" + model_id: "gemini-3.1-flash-lite-preview" + display_name: "Gemini 3.1 Flash Lite Preview" + knowledge_cutoff_date: "2025-01-01" + max_output_tokens: 65536 + temperature: 0.7 + pricing_model: + usd_per1m_input_tokens: 0.25 + usd_per1m_output_tokens: 1.50 + # ======================================== # GEMINI 2.5 FAMILY (Stable - Current Generation) # ======================================== diff --git a/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/googlegenai/GoogleGenAiModelLoaderTest.kt b/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/googlegenai/GoogleGenAiModelLoaderTest.kt index 12a6d638e..e79c26bb6 100644 --- a/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/googlegenai/GoogleGenAiModelLoaderTest.kt +++ b/embabel-agent-autoconfigure/models/embabel-agent-google-genai-autoconfigure/src/test/kotlin/com/embabel/agent/config/models/googlegenai/GoogleGenAiModelLoaderTest.kt @@ -390,6 +390,21 @@ class GoogleGenAiModelLoaderTest { assertEquals("gemini-3.1-pro-preview", gemini31ProPreview?.modelId) } + @Test + fun `should load Gemini 3_1 Pro preview customtools model`() { + // Arrange + val loader = GoogleGenAiModelLoader() + + // Act + val result = loader.loadAutoConfigMetadata() + + // Assert - verify Gemini 3.1 Pro preview customtools is present + val model = result.models.find { it.modelId == "gemini-3.1-pro-preview-customtools" } + assertNotNull(model, "Gemini 3.1 Pro preview customtools should be loaded") + assertEquals("gemini_3_1_pro_preview_customtools", model?.name) + assertEquals("gemini-3.1-pro-preview-customtools", model?.modelId) + } + /** * Gemini 3 Flash Preview - Fast model with thinking capabilities * Added as part of the Gemini 3 family support @@ -409,6 +424,21 @@ class GoogleGenAiModelLoaderTest { assertEquals("gemini-3-flash-preview", gemini3FlashPreview?.modelId) } + @Test + fun `should load Gemini 3_1 Flash Lite preview model`() { + // Arrange + val loader = GoogleGenAiModelLoader() + + // Act + val result = loader.loadAutoConfigMetadata() + + // Assert - verify Gemini 3.1 Flash Lite preview is present + val gemini31FlashLitePreview = result.models.find { it.modelId == "gemini-3.1-flash-lite-preview" } + assertNotNull(gemini31FlashLitePreview, "Gemini 3.1 Flash Lite preview should be loaded") + assertEquals("gemini_3_1_flash_lite_preview", gemini31FlashLitePreview?.name) + assertEquals("gemini-3.1-flash-lite-preview", gemini31FlashLitePreview?.modelId) + } + @Test fun `should load Gemini 25 Flash model`() { // Arrange diff --git a/embabel-agent-docs/src/main/asciidoc/getting-started/installing/page.adoc b/embabel-agent-docs/src/main/asciidoc/getting-started/installing/page.adoc index db3dcc217..3c2461187 100644 --- a/embabel-agent-docs/src/main/asciidoc/getting-started/installing/page.adoc +++ b/embabel-agent-docs/src/main/asciidoc/getting-started/installing/page.adoc @@ -604,6 +604,8 @@ dependencies { Available LLM models include: * `gemini-3.1-pro-preview` - Latest Gemini 3.1 Pro preview with advanced reasoning +* `gemini-3.1-pro-preview-customtools` - Gemini 3.1 Pro optimized for custom tool usage +* `gemini-3.1-flash-lite-preview` - Lightweight and cost-effective latest generation model * `gemini-2.5-pro` - High-performance model with thinking support * `gemini-2.5-flash` - Best price-performance model * `gemini-2.5-flash-lite` - Cost-effective high-throughput model