update models selected

This commit is contained in:
duanfuxiang
2025-06-12 11:14:35 +08:00
parent 57c3efdac3
commit d3590a9b76
2 changed files with 234 additions and 10 deletions

View File

@@ -35,6 +35,8 @@ export interface EmbeddingModelInfo {
// https://docs.anthropic.com/en/docs/about-claude/models
export type AnthropicModelId = keyof typeof anthropicModels
export const anthropicDefaultModelId: AnthropicModelId = "claude-sonnet-4-20250514"
export const anthropicDefaultAutoCompleteModelId: AnthropicModelId = "claude-3-5-haiku-20241022"
export const anthropicDefaultEmbeddingModelId: AnthropicModelId = null // this is not supported embedding model
export const anthropicModels = {
"claude-sonnet-4-20250514": {
maxTokens: 64_000, // Overridden to 8k if `enableReasoningEffort` is false.
@@ -128,7 +130,9 @@ export const anthropicModels = {
} as const satisfies Record<string, ModelInfo> // as const assertion makes the object
// Infio
export const infioDefaultModelId = "deepseek/deepseek-v3" // will always exist
export const infioDefaultModelId = "anthropic/claude-sonnet-4" // for chat
export const infioDefaultAutoCompleteModelId = "groq/llama-3.3-70b-versatile" // for auto complete
export const infioDefaultEmbeddingModelId = "openai/text-embedding-3-small" // for embedding
export const infioDefaultModelInfo: ModelInfo = {
maxTokens: 8192,
contextWindow: 65_536,
@@ -210,7 +214,9 @@ export const infioEmbeddingModels = {
// OpenRouter
// https://openrouter.ai/models?order=newest&supported_parameters=tools
export const openRouterDefaultModelId = "anthropic/claude-sonnet-4" // will always exist in openRouterModels
export const openRouterDefaultModelId = "google/gemini-2.5-pro-preview" // for chat
export const openRouterDefaultAutoCompleteModelId = "google/gemini-2.5-flash-preview-05-20" // for auto complete
export const openRouterDefaultEmbeddingModelId = null // this is not supported embedding model
export const openRouterDefaultModelInfo: ModelInfo = {
maxTokens: 8192,
contextWindow: 200_000,
@@ -262,7 +268,10 @@ async function fetchOpenRouterModels(): Promise<Record<string, ModelInfo>> {
// Gemini
// https://ai.google.dev/gemini-api/docs/models/gemini
export type GeminiModelId = keyof typeof geminiModels
export const geminiDefaultModelId: GeminiModelId = "gemini-2.5-flash-preview-05-20"
export const geminiDefaultModelId: GeminiModelId = "gemini-2.5-pro-preview-05-06"
export const geminiDefaultAutoCompleteModelId: GeminiModelId = "gemini-2.5-flash-preview-05-20"
export const geminiDefaultEmbeddingModelId: keyof typeof geminiEmbeddingModels = "text-embedding-004"
export const geminiModels = {
"gemini-2.5-flash-preview-05-20:thinking": {
maxTokens: 65_535,
@@ -489,6 +498,9 @@ export const geminiEmbeddingModels = {
// https://openai.com/api/pricing/
export type OpenAiNativeModelId = keyof typeof openAiNativeModels
export const openAiNativeDefaultModelId: OpenAiNativeModelId = "gpt-4o"
export const openAiNativeDefaultAutoCompleteModelId: OpenAiNativeModelId = "gpt-4o-mini"
export const openAiNativeDefaultEmbeddingModelId: keyof typeof openAINativeEmbeddingModels = "text-embedding-3-small"
export const openAiNativeModels = {
// don't support tool use yet
"o3-mini": {
@@ -594,6 +606,9 @@ export const openAINativeEmbeddingModels = {
// https://api-docs.deepseek.com/quick_start/pricing
export type DeepSeekModelId = keyof typeof deepSeekModels
export const deepSeekDefaultModelId: DeepSeekModelId = "deepseek-chat"
export const deepSeekDefaultAutoCompleteModelId: DeepSeekModelId = "deepseek-chat"
export const deepSeekDefaultEmbeddingModelId = null // this is not supported embedding model
export const deepSeekModels = {
"deepseek-chat": {
maxTokens: 8_000,
@@ -620,7 +635,10 @@ export const deepSeekModels = {
// Qwen
// https://help.aliyun.com/zh/model-studio/getting-started/
export type QwenModelId = keyof typeof qwenModels
export const qwenDefaultModelId: QwenModelId = "qwen-max-latest"
export const qwenDefaultModelId: QwenModelId = "qwen3-235b-a22b"
export const qwenDefaultAutoCompleteModelId: QwenModelId = "qwen3-32b"
export const qwenDefaultEmbeddingModelId: keyof typeof qwenEmbeddingModels = "text-embedding-v3"
export const qwenModels = {
"qwen3-235b-a22b": {
maxTokens: 129_024,
@@ -916,6 +934,9 @@ export const qwenEmbeddingModels = {
// https://docs.siliconflow.cn/
export type SiliconFlowModelId = keyof typeof siliconFlowModels
export const siliconFlowDefaultModelId: SiliconFlowModelId = "deepseek-ai/DeepSeek-V3"
export const siliconFlowDefaultAutoCompleteModelId: SiliconFlowModelId = "deepseek-ai/DeepSeek-V3"
export const siliconFlowDefaultEmbeddingModelId: keyof typeof siliconFlowEmbeddingModels = "BAAI/bge-m3"
export const siliconFlowModels = {
"01-ai/Yi-1.5-9B-Chat-16K": {
maxTokens: 8192,
@@ -1396,6 +1417,9 @@ export const siliconFlowEmbeddingModels = {
// https://console.groq.com/docs/overview
export type GroqModelId = keyof typeof groqModels
export const groqDefaultModelId: GroqModelId = "llama-3.3-70b-versatile"
export const groqDefaultAutoCompleteModelId: GroqModelId = "llama-3.3-70b-versatile"
export const groqDefaultEmbeddingModelId = null // this is not supported embedding model
export const groqModels = {
"meta-llama/llama-4-scout-17b-16e-instruct": {
maxTokens: 8192,
@@ -1554,6 +1578,9 @@ export const groqModels = {
// https://docs.x.ai/docs/models
export type GrokModelId = keyof typeof grokModels
export const grokDefaultModelId: GrokModelId = "grok-3"
export const grokDefaultAutoCompleteModelId: GrokModelId = "grok-3-mini-fast"
export const grokDefaultEmbeddingModelId = null // this is not supported embedding model
export const grokModels = {
"grok-3": {
maxTokens: 8192,
@@ -1606,18 +1633,31 @@ export const grokModels = {
} as const satisfies Record<string, ModelInfo>
/// helper functions
// get all providers
// get all providers, used for the provider dropdown
export const GetAllProviders = (): ApiProvider[] => {
return Object.values(ApiProvider)
return [
ApiProvider.Infio,
ApiProvider.OpenRouter,
ApiProvider.Anthropic,
ApiProvider.OpenAI,
ApiProvider.Google,
ApiProvider.Grok,
ApiProvider.AlibabaQwen,
ApiProvider.SiliconFlow,
ApiProvider.Deepseek,
ApiProvider.Groq,
ApiProvider.Ollama,
ApiProvider.OpenAICompatible,
]
}
export const GetEmbeddingProviders = (): ApiProvider[] => {
return [
ApiProvider.Infio,
ApiProvider.OpenAI,
ApiProvider.SiliconFlow,
ApiProvider.Google,
ApiProvider.AlibabaQwen,
ApiProvider.SiliconFlow,
ApiProvider.OpenAICompatible,
ApiProvider.Ollama,
]
@@ -1728,3 +1768,69 @@ export const GetEmbeddingModelInfo = (provider: ApiProvider, modelId: string): E
const models = GetEmbeddingProviderModels(provider)
return models[modelId]
}
// Get default model id for a provider
export const GetDefaultModelId = (provider: ApiProvider): { chat: string, autoComplete: string, embedding: string } => {
switch (provider) {
case ApiProvider.Infio:
return {
"chat": infioDefaultModelId,
"autoComplete": infioDefaultAutoCompleteModelId,
"embedding": infioDefaultEmbeddingModelId,
}
case ApiProvider.OpenRouter:
return {
"chat": openRouterDefaultModelId,
"autoComplete": openRouterDefaultAutoCompleteModelId,
"embedding": openRouterDefaultEmbeddingModelId,
}
case ApiProvider.Anthropic:
return {
"chat": anthropicDefaultModelId,
"autoComplete": anthropicDefaultAutoCompleteModelId,
"embedding": anthropicDefaultEmbeddingModelId,
}
case ApiProvider.Deepseek:
return {
"chat": deepSeekDefaultModelId,
"autoComplete": deepSeekDefaultAutoCompleteModelId,
"embedding": deepSeekDefaultEmbeddingModelId,
}
case ApiProvider.Google:
return {
"chat": geminiDefaultModelId,
"autoComplete": geminiDefaultAutoCompleteModelId,
"embedding": geminiDefaultEmbeddingModelId,
}
case ApiProvider.AlibabaQwen:
return {
"chat": qwenDefaultModelId,
"autoComplete": qwenDefaultAutoCompleteModelId,
"embedding": qwenDefaultEmbeddingModelId,
}
case ApiProvider.SiliconFlow:
return {
"chat": siliconFlowDefaultModelId,
"autoComplete": siliconFlowDefaultAutoCompleteModelId,
"embedding": siliconFlowDefaultEmbeddingModelId,
}
case ApiProvider.Groq:
return {
"chat": groqDefaultModelId,
"autoComplete": groqDefaultAutoCompleteModelId,
"embedding": groqDefaultEmbeddingModelId,
}
case ApiProvider.Grok:
return {
"chat": grokDefaultModelId,
"autoComplete": grokDefaultAutoCompleteModelId,
"embedding": grokDefaultEmbeddingModelId,
}
default:
return {
"chat": null,
"autoComplete": null,
"embedding": null,
}
}
}