Remove retired Gemini fallback models (#8199)

* Remove retired Gemini fallback models

* Prefer cheaper Gemini fallbacks first
This commit is contained in:
2026-06-26 07:46:55 -07:00
committed by GitHub
parent b1263ec4df
commit 1215b5044c
7 changed files with 22 additions and 13 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ LLM settings can be changed at runtime via the admin console:
1. Navigate to Admin Console → Settings 1. Navigate to Admin Console → Settings
2. Change `LlmProvider` to select vendor (gemini, openai, claude) 2. Change `LlmProvider` to select vendor (gemini, openai, claude)
3. Change the corresponding model name setting: 3. Change the corresponding model name setting:
- `GeminiModelName` (default: gemini-3.1-flash-lite-preview) - `GeminiModelName` (default: gemini-3.1-flash-lite)
- `OpenAiModelName` (default: gpt-4.1-mini) - `OpenAiModelName` (default: gpt-4.1-mini)
- `ClaudeModelName` (default: claude-3-5-haiku-20241022) - `ClaudeModelName` (default: claude-3-5-haiku-20241022)
@@ -1616,7 +1616,7 @@ type SettingInfo struct {
var llmProviderOptions = []string{"gemini", "openai", "claude"} var llmProviderOptions = []string{"gemini", "openai", "claude"}
var openAiModelOptions = []string{"gpt-4.1-mini", "gpt-5-mini", "gpt-5.1", "gpt-5.2", "gpt-4.1", "gpt-4o", "gpt-4o-mini", "o1", "o1-mini", "o3-mini"} var openAiModelOptions = []string{"gpt-4.1-mini", "gpt-5-mini", "gpt-5.1", "gpt-5.2", "gpt-4.1", "gpt-4o", "gpt-4o-mini", "o1", "o1-mini", "o3-mini"}
var claudeModelOptions = []string{"claude-3-5-haiku-20241022", "claude-sonnet-4-20250514", "claude-opus-4-20250514", "claude-3-7-sonnet-20250219", "claude-3-5-sonnet-20241022"} var claudeModelOptions = []string{"claude-3-5-haiku-20241022", "claude-sonnet-4-20250514", "claude-opus-4-20250514", "claude-3-7-sonnet-20250219", "claude-3-5-sonnet-20241022"}
var geminiModelOptions = []string{"gemini-3.1-flash-lite-preview", "gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-3-pro-preview"} var geminiModelOptions = []string{"gemini-3.1-flash-lite", "gemini-3.5-flash", "gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-2.5-pro"}
var historyBackendOptions = []string{"env", "sqlite", "postgres"} var historyBackendOptions = []string{"env", "sqlite", "postgres"}
type SettingsPageData struct { type SettingsPageData struct {
@@ -12,20 +12,21 @@ import org.json4s.jvalue2monadic
import org.json4s.native.{Json, Serialization} import org.json4s.native.{Json, Serialization}
object GeminiServiceImpl { object GeminiServiceImpl {
val defaultModel: String = "gemini-3.1-flash-lite-preview" val defaultModel: String = "gemini-3.1-flash-lite"
private val fallbackModels: Vector[String] = Vector( private val fallbackModels: Vector[String] = Vector(
"gemini-2.5-flash", defaultModel,
"gemini-2.5-flash-lite", "gemini-2.5-flash-lite",
"gemini-2.0-flash", "gemini-2.5-flash",
"gemini-2.0-flash-lite" "gemini-2.5-pro",
"gemini-3.5-flash"
) )
private lazy val apiKey = ApiKeys.gemini private lazy val apiKey = ApiKeys.gemini
private val baseURL = "https://generativelanguage.googleapis.com/v1beta/models" private val baseURL = "https://generativelanguage.googleapis.com/v1beta/models"
def fallbackModelNames(configuredModelName: String): Vector[String] = def fallbackModelNames(configuredModelName: String): Vector[String] =
(configuredModelName +: (fallbackModels :+ defaultModel)).distinct (configuredModelName +: fallbackModels).distinct
private def requestUrl(modelName: String): String = private def requestUrl(modelName: String): String =
s"$baseURL/$modelName:streamGenerateContent?alt=sse&key=$apiKey" s"$baseURL/$modelName:streamGenerateContent?alt=sse&key=$apiKey"
@@ -3659,7 +3659,7 @@ scala_setting_library(
name = "gemini_model_name", name = "gemini_model_name",
setting_name = "GeminiModelName", setting_name = "GeminiModelName",
setting_type = "String", setting_type = "String",
setting_value = "gemini-3.1-flash-lite-preview", setting_value = "gemini-3.1-flash-lite",
visibility = [ visibility = [
"//src/main/scala/net/eagle0/eagle:__subpackages__", "//src/main/scala/net/eagle0/eagle:__subpackages__",
"//src/main/scala/net/eagle0/util:__subpackages__", "//src/main/scala/net/eagle0/util:__subpackages__",
@@ -379,7 +379,7 @@ class GameAdminServiceImpl(
case "gemini" => case "gemini" =>
settingsMap.getOrElse( settingsMap.getOrElse(
"GeminiModelName", "GeminiModelName",
currentSettings.getOrElse("GeminiModelName", "gemini-3.1-flash-lite-preview") currentSettings.getOrElse("GeminiModelName", GeminiServiceImpl.defaultModel)
) )
case _ => "" case _ => ""
} }
@@ -8,13 +8,21 @@ class GeminiServiceImplTest extends AnyFlatSpec with Matchers {
"fallbackModelNames" should "try the configured model before fallback Gemini models" in { "fallbackModelNames" should "try the configured model before fallback Gemini models" in {
GeminiServiceImpl.fallbackModelNames("gemini-2.5-flash-lite") shouldBe Vector( GeminiServiceImpl.fallbackModelNames("gemini-2.5-flash-lite") shouldBe Vector(
"gemini-2.5-flash-lite", "gemini-2.5-flash-lite",
GeminiServiceImpl.defaultModel,
"gemini-2.5-flash", "gemini-2.5-flash",
"gemini-2.0-flash", "gemini-2.5-pro",
"gemini-2.0-flash-lite", "gemini-3.5-flash"
GeminiServiceImpl.defaultModel
) )
} }
it should "not include shut down Gemini model names" in {
val modelNames = GeminiServiceImpl.fallbackModelNames("gemini-2.5-flash-lite")
modelNames should not contain "gemini-2.0-flash"
modelNames should not contain "gemini-2.0-flash-lite"
modelNames should not contain "gemini-3.1-flash-lite-preview"
}
it should "not duplicate the configured model when it is already a fallback" in { it should "not duplicate the configured model when it is already a fallback" in {
GeminiServiceImpl GeminiServiceImpl
.fallbackModelNames(GeminiServiceImpl.defaultModel) .fallbackModelNames(GeminiServiceImpl.defaultModel)
@@ -76,7 +76,7 @@ class LlmResolverTest extends AnyFlatSpec with MockFactory {
it should "expand Gemini provider keys by fallback model" in { it should "expand Gemini provider keys by fallback model" in {
LlmResolver.providerKeysFor("gemini", "gemini-2.5-flash-lite").take(2) shouldBe Vector( LlmResolver.providerKeysFor("gemini", "gemini-2.5-flash-lite").take(2) shouldBe Vector(
"gemini/gemini-2.5-flash-lite", "gemini/gemini-2.5-flash-lite",
"gemini/gemini-2.5-flash" "gemini/gemini-3.1-flash-lite"
) )
} }