mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 21:35:42 +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
|
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"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user