mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 20:55:44 +00:00
Remove retired Gemini fallback models (#8199)
* Remove retired Gemini fallback models * Prefer cheaper Gemini fallbacks first
This commit is contained in:
@@ -71,7 +71,7 @@ LLM settings can be changed at runtime via the admin console:
|
||||
1. Navigate to Admin Console → Settings
|
||||
2. Change `LlmProvider` to select vendor (gemini, openai, claude)
|
||||
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)
|
||||
- `ClaudeModelName` (default: claude-3-5-haiku-20241022)
|
||||
|
||||
|
||||
@@ -1616,7 +1616,7 @@ type SettingInfo struct {
|
||||
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 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"}
|
||||
|
||||
type SettingsPageData struct {
|
||||
|
||||
@@ -12,20 +12,21 @@ import org.json4s.jvalue2monadic
|
||||
import org.json4s.native.{Json, Serialization}
|
||||
|
||||
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(
|
||||
"gemini-2.5-flash",
|
||||
defaultModel,
|
||||
"gemini-2.5-flash-lite",
|
||||
"gemini-2.0-flash",
|
||||
"gemini-2.0-flash-lite"
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.5-pro",
|
||||
"gemini-3.5-flash"
|
||||
)
|
||||
|
||||
private lazy val apiKey = ApiKeys.gemini
|
||||
private val baseURL = "https://generativelanguage.googleapis.com/v1beta/models"
|
||||
|
||||
def fallbackModelNames(configuredModelName: String): Vector[String] =
|
||||
(configuredModelName +: (fallbackModels :+ defaultModel)).distinct
|
||||
(configuredModelName +: fallbackModels).distinct
|
||||
|
||||
private def requestUrl(modelName: String): String =
|
||||
s"$baseURL/$modelName:streamGenerateContent?alt=sse&key=$apiKey"
|
||||
|
||||
@@ -3659,7 +3659,7 @@ scala_setting_library(
|
||||
name = "gemini_model_name",
|
||||
setting_name = "GeminiModelName",
|
||||
setting_type = "String",
|
||||
setting_value = "gemini-3.1-flash-lite-preview",
|
||||
setting_value = "gemini-3.1-flash-lite",
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/main/scala/net/eagle0/util:__subpackages__",
|
||||
|
||||
@@ -379,7 +379,7 @@ class GameAdminServiceImpl(
|
||||
case "gemini" =>
|
||||
settingsMap.getOrElse(
|
||||
"GeminiModelName",
|
||||
currentSettings.getOrElse("GeminiModelName", "gemini-3.1-flash-lite-preview")
|
||||
currentSettings.getOrElse("GeminiModelName", GeminiServiceImpl.defaultModel)
|
||||
)
|
||||
case _ => ""
|
||||
}
|
||||
|
||||
@@ -8,13 +8,21 @@ class GeminiServiceImplTest extends AnyFlatSpec with Matchers {
|
||||
"fallbackModelNames" should "try the configured model before fallback Gemini models" in {
|
||||
GeminiServiceImpl.fallbackModelNames("gemini-2.5-flash-lite") shouldBe Vector(
|
||||
"gemini-2.5-flash-lite",
|
||||
GeminiServiceImpl.defaultModel,
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.0-flash",
|
||||
"gemini-2.0-flash-lite",
|
||||
GeminiServiceImpl.defaultModel
|
||||
"gemini-2.5-pro",
|
||||
"gemini-3.5-flash"
|
||||
)
|
||||
}
|
||||
|
||||
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 {
|
||||
GeminiServiceImpl
|
||||
.fallbackModelNames(GeminiServiceImpl.defaultModel)
|
||||
|
||||
@@ -76,7 +76,7 @@ class LlmResolverTest extends AnyFlatSpec with MockFactory {
|
||||
it should "expand Gemini provider keys by fallback model" in {
|
||||
LlmResolver.providerKeysFor("gemini", "gemini-2.5-flash-lite").take(2) shouldBe Vector(
|
||||
"gemini/gemini-2.5-flash-lite",
|
||||
"gemini/gemini-2.5-flash"
|
||||
"gemini/gemini-3.1-flash-lite"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user