1 line
114 KiB
JSON
1 line
114 KiB
JSON
{"repo": "chaitin/modelkit", "files": {"domain/modelprovider.go": {"7c0a182cb8359405a14f69efb1854c92c73e21bb": {"t": 1785595444.7185872, "n": 11316, "h": "499396bcdf06f3ea", "c": "package domain\n\nimport \"github.com/chaitin/ModelKit/v2/consts\"\n\ntype IModelProvider[T any] interface {\n\tListModel(subType string, provider string) ([]T, error)\n}\n\nvar ModelProviders map[consts.ModelProvider]ModelProvider\nvar TypeModelMap map[consts.ModelType][]ModelMetadata\n\ntype ModelProvider struct {\n\tOwnerName consts.ModelProvider `json:\"owner_name\"` // 提供商\n\tAPIBase string `json:\"api_base\"` // 接口地址 如:https://api.qwen.com\n\tAPIKey string `json:\"api_key\"` // 接口密钥 如:sk-xxxx\n\tAPIVersion string `json:\"api_version\"` // 接口版本 如:2023-05-15\n\tAPIHeader string `json:\"api_header\"` // 接口头 如:Authorization: Bearer sk-xxxx\n\tModels []ModelMetadata `json:\"models\"` // 模型列表\n}\n\nfunc initModelProviders() {\n\t// 初始化模型提供商及其模型\n\tModelProviders = map[consts.ModelProvider]ModelProvider{\n\t\tconsts.ModelProviderBaiZhiCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://model-square.app.baizhi.cloud/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiZhiCloudModelStore: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloudModelStore,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://ai-models.app.baizhi.cloud/api/openai\",\n\t\t},\n\t\tconsts.ModelProviderDeepSeek: {\n\t\t\tOwnerName: consts.ModelProviderDeepSeek,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDeepSeek),\n\t\t\tAPIBase: \"https://api.deepseek.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderSiliconFlow: {\n\t\t\tOwnerName: consts.ModelProviderSiliconFlow,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderSiliconFlow),\n\t\t\tAPIBase: \"https://api.siliconflow.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenAI),\n\t\t\tAPIBase: \"https://api.openai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOllama: {\n\t\t\tOwnerName: consts.ModelProviderOllama,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOllama),\n\t\t\tAPIBase: \"http://localhost:11434\",\n\t\t},\n\t\tconsts.ModelProviderMoonshot: {\n\t\t\tOwnerName: consts.ModelProviderMoonshot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMoonshot),\n\t\t\tAPIBase: \"https://api.moonshot.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderAzureOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderAzureOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAzureOpenAI),\n\t\t},\n\t\tconsts.ModelProviderHunyuan: {\n\t\t\tOwnerName: consts.ModelProviderHunyuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHunyuan),\n\t\t\tAPIBase: \"https://api.hunyuan.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiLian: {\n\t\t\tOwnerName: consts.ModelProviderBaiLian,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiLian),\n\t\t\tAPIBase: \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n\t\t},\n\t\tconsts.ModelProviderVolcengine: {\n\t\t\tOwnerName: consts.ModelProviderVolcengine,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVolcengine),\n\t\t\tAPIBase: \"https://ark.cn-beijing.volces.com/api/v3\",\n\t\t},\n\t\tconsts.ModelProviderGemini: {\n\t\t\tOwnerName: consts.ModelProviderGemini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGemini),\n\t\t\tAPIBase: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t},\n\t\tconsts.ModelProviderZhiPu: {\n\t\t\tOwnerName: consts.ModelProviderZhiPu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderZhiPu),\n\t\t\tAPIBase: \"https://open.bigmodel.cn/api/paas/v4\",\n\t\t},\n\t\tconsts.ModelProviderAiHubMix: {\n\t\t\tOwnerName: consts.ModelProviderAiHubMix,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAiHubMix),\n\t\t\tAPIBase: \"https://aihubmix.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOcoolAI: {\n\t\t\tOwnerName: consts.ModelProviderOcoolAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOcoolAI),\n\t\t\tAPIBase: \"https://api.ocoolai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderPPIO: {\n\t\t\tOwnerName: consts.ModelProviderPPIO,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPPIO),\n\t\t\tAPIBase: \"https://api.ppinfra.com/v3/openai\",\n\t\t},\n\t\tconsts.ModelProviderAlayaNew: {\n\t\t\tOwnerName: consts.ModelProviderAlayaNew,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAlayaNew),\n\t\t\tAPIBase: \"https://deepseek.alayanew.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderQiniu: {\n\t\t\tOwnerName: consts.ModelProviderQiniu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderQiniu),\n\t\t\tAPIBase: \"https://api.qnaigc.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderDMXAPI: {\n\t\t\tOwnerName: consts.ModelProviderDMXAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDMXAPI),\n\t\t\tAPIBase: \"https://www.dmxapi.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderBurnCloud: {\n\t\t\tOwnerName: consts.ModelProviderBurnCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBurnCloud),\n\t\t\tAPIBase: \"https://ai.burncloud.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderTokenFlux: {\n\t\t\tOwnerName: consts.ModelProviderTokenFlux,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTokenFlux),\n\t\t\tAPIBase: \"https://tokenflux.ai/v1\",\n\t\t},\n\t\tconsts.ModelProvider302AI: {\n\t\t\tOwnerName: consts.ModelProvider302AI,\n\t\t\tModels: getModelsByOwner(consts.ModelProvider302AI),\n\t\t\tAPIBase: \"https://api.302.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderCephalon: {\n\t\t\tOwnerName: consts.ModelProviderCephalon,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCephalon),\n\t\t\tAPIBase: \"https://cephalon.cloud/user-center/v1/model\",\n\t\t},\n\t\tconsts.ModelProviderLanyun: {\n\t\t\tOwnerName: consts.ModelProviderLanyun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLanyun),\n\t\t\tAPIBase: \"https://maas-api.lanyun.net/v1\",\n\t\t},\n\t\tconsts.ModelProviderPH8: {\n\t\t\tOwnerName: consts.ModelProviderPH8,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPH8),\n\t\t\tAPIBase: \"https://ph8.co/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenRouter: {\n\t\t\tOwnerName: consts.ModelProviderOpenRouter,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenRouter),\n\t\t\tAPIBase: \"https://openrouter.ai/api/v1\",\n\t\t},\n\t\tconsts.ModelProviderNewAPI: {\n\t\t\tOwnerName: consts.ModelProviderNewAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNewAPI),\n\t\t\tAPIBase: \"http://localhost:3000/v1\",\n\t\t},\n\t\tconsts.ModelProviderLMStudio: {\n\t\t\tOwnerName: consts.ModelProviderLMStudio,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLMStudio),\n\t\t\tAPIBase: \"http://localhost:1234/v1\",\n\t\t},\n\t\tconsts.ModelProviderAnthropic: {\n\t\t\tOwnerName: consts.ModelProviderAnthropic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAnthropic),\n\t\t\tAPIBase: \"https://api.anthropic.com\",\n\t\t},\n\t\tconsts.ModelProviderVertexAI: {\n\t\t\tOwnerName: consts.ModelProviderVertexAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVertexAI),\n\t\t\tAPIBase: \"https://aiplatform.googleapis.com\",\n\t\t},\n\t\tconsts.ModelProviderGithub: {\n\t\t\tOwnerName: consts.ModelProviderGithub,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGithub),\n\t\t\tAPIBase: \"https://models.github.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderCopilot: {\n\t\t\tOwnerName: consts.ModelProviderCopilot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCopilot),\n\t\t\tAPIBase: \"https://api.githubcopilot.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderYi: {\n\t\t\tOwnerName: consts.ModelProviderYi,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderYi),\n\t\t\tAPIBase: \"https://api.lingyiwanwu.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaichuan: {\n\t\t\tOwnerName: consts.ModelProviderBaichuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaichuan),\n\t\t\tAPIBase: \"https://api.baichuan-ai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderStepFun: {\n\t\t\tOwnerName: consts.ModelProviderStepFun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderStepFun),\n\t\t\tAPIBase: \"https://api.stepfun.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderInfini: {\n\t\t\tOwnerName: consts.ModelProviderInfini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderInfini),\n\t\t\tAPIBase: \"https://cloud.infini-ai.com/maas/v1\",\n\t\t},\n\t\tconsts.ModelProviderMiniMax: {\n\t\t\tOwnerName: consts.ModelProviderMiniMax,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMiniMax),\n\t\t\tAPIBase: \"https://api.minimax.chat/v1\",\n\t\t},\n\t\tconsts.ModelProviderGroq: {\n\t\t\tOwnerName: consts.ModelProviderGroq,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGroq),\n\t\t\tAPIBase: \"https://api.groq.com/openai/v1\",\n\t\t},\n\t\tconsts.ModelProviderTogether: {\n\t\t\tOwnerName: consts.ModelProviderTogether,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTogether),\n\t\t\tAPIBase: \"https://api.together.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderFireworks: {\n\t\t\tOwnerName: consts.ModelProviderFireworks,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderFireworks),\n\t\t\tAPIBase: \"https://api.fireworks.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderNvidia: {\n\t\t\tOwnerName: consts.ModelProviderNvidia,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNvidia),\n\t\t\tAPIBase: \"https://integrate.api.nvidia.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderGrok: {\n\t\t\tOwnerName: consts.ModelProviderGrok,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGrok),\n\t\t\tAPIBase: \"https://api.x.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderHyperbolic: {\n\t\t\tOwnerName: consts.ModelProviderHyperbolic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHyperbolic),\n\t\t\tAPIBase: \"https://api.hyperbolic.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderMistral: {\n\t\t\tOwnerName: consts.ModelProviderMistral,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMistral),\n\t\t\tAPIBase: \"https://api.mistral.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderJina: {\n\t\t\tOwnerName: consts.ModelProviderJina,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderJina),\n\t\t\tAPIBase: \"https://api.jina.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderPerplexity: {\n\t\t\tOwnerName: consts.ModelProviderPerplexity,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPerplexity),\n\t\t\tAPIBase: \"https://api.perplexity.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderModelScope: {\n\t\t\tOwnerName: consts.ModelProviderModelScope,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderModelScope),\n\t\t\tAPIBase: \"https://api-inference.modelscope.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderXirang: {\n\t\t\tOwnerName: consts.ModelProviderXirang,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderXirang),\n\t\t\tAPIBase: \"https://wishub-x1.ctyun.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderTencentCloudTI: {\n\t\t\tOwnerName: consts.ModelProviderTencentCloudTI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTencentCloudTI),\n\t\t\tAPIBase: \"https://api.lkeap.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiduCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiduCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiduCloud),\n\t\t\tAPIBase: \"https://qianfan.baidubce.com/v2\",\n\t\t},\n\t\tconsts.ModelProviderGPUStack: {\n\t\t\tOwnerName: consts.ModelProviderGPUStack,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGPUStack),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderVoyageAI: {\n\t\t\tOwnerName: consts.ModelProviderVoyageAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVoyageAI),\n\t\t\tAPIBase: \"https://api.voyageai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderAWSBedrock: {\n\t\t\tOwnerName: consts.ModelProviderAWSBedrock,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAWSBedrock),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderPoe: {\n\t\t\tOwnerName: consts.ModelProviderPoe,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPoe),\n\t\t\tAPIBase: \"https://api.poe.com/v1\",\n\t\t},\n\t}\n\n\t// 初始化按类型分组的模型映射\n\tTypeModelMap = make(map[consts.ModelType][]ModelMetadata)\n\tfor i := range Models {\n\t\tmodel := Models[i]\n\t\tTypeModelMap[model.ModelType] = append(TypeModelMap[model.ModelType], model)\n\t}\n}\n"}, "e7534d26820cfc1f2d708ab12efc9324d7a641f8": {"t": 1785759494.4978971, "n": 11316, "h": "499396bcdf06f3ea", "c": "package domain\n\nimport \"github.com/chaitin/ModelKit/v2/consts\"\n\ntype IModelProvider[T any] interface {\n\tListModel(subType string, provider string) ([]T, error)\n}\n\nvar ModelProviders map[consts.ModelProvider]ModelProvider\nvar TypeModelMap map[consts.ModelType][]ModelMetadata\n\ntype ModelProvider struct {\n\tOwnerName consts.ModelProvider `json:\"owner_name\"` // 提供商\n\tAPIBase string `json:\"api_base\"` // 接口地址 如:https://api.qwen.com\n\tAPIKey string `json:\"api_key\"` // 接口密钥 如:sk-xxxx\n\tAPIVersion string `json:\"api_version\"` // 接口版本 如:2023-05-15\n\tAPIHeader string `json:\"api_header\"` // 接口头 如:Authorization: Bearer sk-xxxx\n\tModels []ModelMetadata `json:\"models\"` // 模型列表\n}\n\nfunc initModelProviders() {\n\t// 初始化模型提供商及其模型\n\tModelProviders = map[consts.ModelProvider]ModelProvider{\n\t\tconsts.ModelProviderBaiZhiCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://model-square.app.baizhi.cloud/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiZhiCloudModelStore: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloudModelStore,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://ai-models.app.baizhi.cloud/api/openai\",\n\t\t},\n\t\tconsts.ModelProviderDeepSeek: {\n\t\t\tOwnerName: consts.ModelProviderDeepSeek,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDeepSeek),\n\t\t\tAPIBase: \"https://api.deepseek.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderSiliconFlow: {\n\t\t\tOwnerName: consts.ModelProviderSiliconFlow,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderSiliconFlow),\n\t\t\tAPIBase: \"https://api.siliconflow.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenAI),\n\t\t\tAPIBase: \"https://api.openai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOllama: {\n\t\t\tOwnerName: consts.ModelProviderOllama,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOllama),\n\t\t\tAPIBase: \"http://localhost:11434\",\n\t\t},\n\t\tconsts.ModelProviderMoonshot: {\n\t\t\tOwnerName: consts.ModelProviderMoonshot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMoonshot),\n\t\t\tAPIBase: \"https://api.moonshot.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderAzureOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderAzureOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAzureOpenAI),\n\t\t},\n\t\tconsts.ModelProviderHunyuan: {\n\t\t\tOwnerName: consts.ModelProviderHunyuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHunyuan),\n\t\t\tAPIBase: \"https://api.hunyuan.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiLian: {\n\t\t\tOwnerName: consts.ModelProviderBaiLian,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiLian),\n\t\t\tAPIBase: \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n\t\t},\n\t\tconsts.ModelProviderVolcengine: {\n\t\t\tOwnerName: consts.ModelProviderVolcengine,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVolcengine),\n\t\t\tAPIBase: \"https://ark.cn-beijing.volces.com/api/v3\",\n\t\t},\n\t\tconsts.ModelProviderGemini: {\n\t\t\tOwnerName: consts.ModelProviderGemini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGemini),\n\t\t\tAPIBase: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t},\n\t\tconsts.ModelProviderZhiPu: {\n\t\t\tOwnerName: consts.ModelProviderZhiPu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderZhiPu),\n\t\t\tAPIBase: \"https://open.bigmodel.cn/api/paas/v4\",\n\t\t},\n\t\tconsts.ModelProviderAiHubMix: {\n\t\t\tOwnerName: consts.ModelProviderAiHubMix,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAiHubMix),\n\t\t\tAPIBase: \"https://aihubmix.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOcoolAI: {\n\t\t\tOwnerName: consts.ModelProviderOcoolAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOcoolAI),\n\t\t\tAPIBase: \"https://api.ocoolai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderPPIO: {\n\t\t\tOwnerName: consts.ModelProviderPPIO,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPPIO),\n\t\t\tAPIBase: \"https://api.ppinfra.com/v3/openai\",\n\t\t},\n\t\tconsts.ModelProviderAlayaNew: {\n\t\t\tOwnerName: consts.ModelProviderAlayaNew,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAlayaNew),\n\t\t\tAPIBase: \"https://deepseek.alayanew.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderQiniu: {\n\t\t\tOwnerName: consts.ModelProviderQiniu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderQiniu),\n\t\t\tAPIBase: \"https://api.qnaigc.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderDMXAPI: {\n\t\t\tOwnerName: consts.ModelProviderDMXAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDMXAPI),\n\t\t\tAPIBase: \"https://www.dmxapi.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderBurnCloud: {\n\t\t\tOwnerName: consts.ModelProviderBurnCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBurnCloud),\n\t\t\tAPIBase: \"https://ai.burncloud.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderTokenFlux: {\n\t\t\tOwnerName: consts.ModelProviderTokenFlux,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTokenFlux),\n\t\t\tAPIBase: \"https://tokenflux.ai/v1\",\n\t\t},\n\t\tconsts.ModelProvider302AI: {\n\t\t\tOwnerName: consts.ModelProvider302AI,\n\t\t\tModels: getModelsByOwner(consts.ModelProvider302AI),\n\t\t\tAPIBase: \"https://api.302.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderCephalon: {\n\t\t\tOwnerName: consts.ModelProviderCephalon,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCephalon),\n\t\t\tAPIBase: \"https://cephalon.cloud/user-center/v1/model\",\n\t\t},\n\t\tconsts.ModelProviderLanyun: {\n\t\t\tOwnerName: consts.ModelProviderLanyun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLanyun),\n\t\t\tAPIBase: \"https://maas-api.lanyun.net/v1\",\n\t\t},\n\t\tconsts.ModelProviderPH8: {\n\t\t\tOwnerName: consts.ModelProviderPH8,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPH8),\n\t\t\tAPIBase: \"https://ph8.co/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenRouter: {\n\t\t\tOwnerName: consts.ModelProviderOpenRouter,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenRouter),\n\t\t\tAPIBase: \"https://openrouter.ai/api/v1\",\n\t\t},\n\t\tconsts.ModelProviderNewAPI: {\n\t\t\tOwnerName: consts.ModelProviderNewAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNewAPI),\n\t\t\tAPIBase: \"http://localhost:3000/v1\",\n\t\t},\n\t\tconsts.ModelProviderLMStudio: {\n\t\t\tOwnerName: consts.ModelProviderLMStudio,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLMStudio),\n\t\t\tAPIBase: \"http://localhost:1234/v1\",\n\t\t},\n\t\tconsts.ModelProviderAnthropic: {\n\t\t\tOwnerName: consts.ModelProviderAnthropic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAnthropic),\n\t\t\tAPIBase: \"https://api.anthropic.com\",\n\t\t},\n\t\tconsts.ModelProviderVertexAI: {\n\t\t\tOwnerName: consts.ModelProviderVertexAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVertexAI),\n\t\t\tAPIBase: \"https://aiplatform.googleapis.com\",\n\t\t},\n\t\tconsts.ModelProviderGithub: {\n\t\t\tOwnerName: consts.ModelProviderGithub,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGithub),\n\t\t\tAPIBase: \"https://models.github.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderCopilot: {\n\t\t\tOwnerName: consts.ModelProviderCopilot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCopilot),\n\t\t\tAPIBase: \"https://api.githubcopilot.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderYi: {\n\t\t\tOwnerName: consts.ModelProviderYi,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderYi),\n\t\t\tAPIBase: \"https://api.lingyiwanwu.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaichuan: {\n\t\t\tOwnerName: consts.ModelProviderBaichuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaichuan),\n\t\t\tAPIBase: \"https://api.baichuan-ai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderStepFun: {\n\t\t\tOwnerName: consts.ModelProviderStepFun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderStepFun),\n\t\t\tAPIBase: \"https://api.stepfun.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderInfini: {\n\t\t\tOwnerName: consts.ModelProviderInfini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderInfini),\n\t\t\tAPIBase: \"https://cloud.infini-ai.com/maas/v1\",\n\t\t},\n\t\tconsts.ModelProviderMiniMax: {\n\t\t\tOwnerName: consts.ModelProviderMiniMax,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMiniMax),\n\t\t\tAPIBase: \"https://api.minimax.chat/v1\",\n\t\t},\n\t\tconsts.ModelProviderGroq: {\n\t\t\tOwnerName: consts.ModelProviderGroq,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGroq),\n\t\t\tAPIBase: \"https://api.groq.com/openai/v1\",\n\t\t},\n\t\tconsts.ModelProviderTogether: {\n\t\t\tOwnerName: consts.ModelProviderTogether,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTogether),\n\t\t\tAPIBase: \"https://api.together.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderFireworks: {\n\t\t\tOwnerName: consts.ModelProviderFireworks,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderFireworks),\n\t\t\tAPIBase: \"https://api.fireworks.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderNvidia: {\n\t\t\tOwnerName: consts.ModelProviderNvidia,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNvidia),\n\t\t\tAPIBase: \"https://integrate.api.nvidia.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderGrok: {\n\t\t\tOwnerName: consts.ModelProviderGrok,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGrok),\n\t\t\tAPIBase: \"https://api.x.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderHyperbolic: {\n\t\t\tOwnerName: consts.ModelProviderHyperbolic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHyperbolic),\n\t\t\tAPIBase: \"https://api.hyperbolic.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderMistral: {\n\t\t\tOwnerName: consts.ModelProviderMistral,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMistral),\n\t\t\tAPIBase: \"https://api.mistral.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderJina: {\n\t\t\tOwnerName: consts.ModelProviderJina,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderJina),\n\t\t\tAPIBase: \"https://api.jina.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderPerplexity: {\n\t\t\tOwnerName: consts.ModelProviderPerplexity,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPerplexity),\n\t\t\tAPIBase: \"https://api.perplexity.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderModelScope: {\n\t\t\tOwnerName: consts.ModelProviderModelScope,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderModelScope),\n\t\t\tAPIBase: \"https://api-inference.modelscope.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderXirang: {\n\t\t\tOwnerName: consts.ModelProviderXirang,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderXirang),\n\t\t\tAPIBase: \"https://wishub-x1.ctyun.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderTencentCloudTI: {\n\t\t\tOwnerName: consts.ModelProviderTencentCloudTI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTencentCloudTI),\n\t\t\tAPIBase: \"https://api.lkeap.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiduCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiduCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiduCloud),\n\t\t\tAPIBase: \"https://qianfan.baidubce.com/v2\",\n\t\t},\n\t\tconsts.ModelProviderGPUStack: {\n\t\t\tOwnerName: consts.ModelProviderGPUStack,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGPUStack),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderVoyageAI: {\n\t\t\tOwnerName: consts.ModelProviderVoyageAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVoyageAI),\n\t\t\tAPIBase: \"https://api.voyageai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderAWSBedrock: {\n\t\t\tOwnerName: consts.ModelProviderAWSBedrock,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAWSBedrock),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderPoe: {\n\t\t\tOwnerName: consts.ModelProviderPoe,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPoe),\n\t\t\tAPIBase: \"https://api.poe.com/v1\",\n\t\t},\n\t}\n\n\t// 初始化按类型分组的模型映射\n\tTypeModelMap = make(map[consts.ModelType][]ModelMetadata)\n\tfor i := range Models {\n\t\tmodel := Models[i]\n\t\tTypeModelMap[model.ModelType] = append(TypeModelMap[model.ModelType], model)\n\t}\n}\n"}, "2d215b20a34624c149f5630d32feb16c8bc388e2": {"t": 1785759497.3125026, "n": 11079, "h": "3f34d38215429122", "c": "package domain\n\nimport \"github.com/chaitin/ModelKit/v2/consts\"\n\ntype IModelProvider[T any] interface {\n\tListModel(subType string, provider string) ([]T, error)\n}\n\nvar ModelProviders map[consts.ModelProvider]ModelProvider\nvar TypeModelMap map[consts.ModelType][]ModelMetadata\n\ntype ModelProvider struct {\n\tOwnerName consts.ModelProvider `json:\"owner_name\"` // 提供商\n\tAPIBase string `json:\"api_base\"` // 接口地址 如:https://api.qwen.com\n\tAPIKey string `json:\"api_key\"` // 接口密钥 如:sk-xxxx\n\tAPIVersion string `json:\"api_version\"` // 接口版本 如:2023-05-15\n\tAPIHeader string `json:\"api_header\"` // 接口头 如:Authorization: Bearer sk-xxxx\n\tModels []ModelMetadata `json:\"models\"` // 模型列表\n}\n\nfunc initModelProviders() {\n\t// 初始化模型提供商及其模型\n\tModelProviders = map[consts.ModelProvider]ModelProvider{\n\t\tconsts.ModelProviderBaiZhiCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://model-square.app.baizhi.cloud/v1\",\n\t\t},\n\t\tconsts.ModelProviderDeepSeek: {\n\t\t\tOwnerName: consts.ModelProviderDeepSeek,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDeepSeek),\n\t\t\tAPIBase: \"https://api.deepseek.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderSiliconFlow: {\n\t\t\tOwnerName: consts.ModelProviderSiliconFlow,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderSiliconFlow),\n\t\t\tAPIBase: \"https://api.siliconflow.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenAI),\n\t\t\tAPIBase: \"https://api.openai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOllama: {\n\t\t\tOwnerName: consts.ModelProviderOllama,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOllama),\n\t\t\tAPIBase: \"http://localhost:11434\",\n\t\t},\n\t\tconsts.ModelProviderMoonshot: {\n\t\t\tOwnerName: consts.ModelProviderMoonshot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMoonshot),\n\t\t\tAPIBase: \"https://api.moonshot.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderAzureOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderAzureOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAzureOpenAI),\n\t\t},\n\t\tconsts.ModelProviderHunyuan: {\n\t\t\tOwnerName: consts.ModelProviderHunyuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHunyuan),\n\t\t\tAPIBase: \"https://api.hunyuan.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiLian: {\n\t\t\tOwnerName: consts.ModelProviderBaiLian,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiLian),\n\t\t\tAPIBase: \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n\t\t},\n\t\tconsts.ModelProviderVolcengine: {\n\t\t\tOwnerName: consts.ModelProviderVolcengine,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVolcengine),\n\t\t\tAPIBase: \"https://ark.cn-beijing.volces.com/api/v3\",\n\t\t},\n\t\tconsts.ModelProviderGemini: {\n\t\t\tOwnerName: consts.ModelProviderGemini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGemini),\n\t\t\tAPIBase: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t},\n\t\tconsts.ModelProviderZhiPu: {\n\t\t\tOwnerName: consts.ModelProviderZhiPu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderZhiPu),\n\t\t\tAPIBase: \"https://open.bigmodel.cn/api/paas/v4\",\n\t\t},\n\t\tconsts.ModelProviderAiHubMix: {\n\t\t\tOwnerName: consts.ModelProviderAiHubMix,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAiHubMix),\n\t\t\tAPIBase: \"https://aihubmix.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOcoolAI: {\n\t\t\tOwnerName: consts.ModelProviderOcoolAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOcoolAI),\n\t\t\tAPIBase: \"https://api.ocoolai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderPPIO: {\n\t\t\tOwnerName: consts.ModelProviderPPIO,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPPIO),\n\t\t\tAPIBase: \"https://api.ppinfra.com/v3/openai\",\n\t\t},\n\t\tconsts.ModelProviderAlayaNew: {\n\t\t\tOwnerName: consts.ModelProviderAlayaNew,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAlayaNew),\n\t\t\tAPIBase: \"https://deepseek.alayanew.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderQiniu: {\n\t\t\tOwnerName: consts.ModelProviderQiniu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderQiniu),\n\t\t\tAPIBase: \"https://api.qnaigc.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderDMXAPI: {\n\t\t\tOwnerName: consts.ModelProviderDMXAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDMXAPI),\n\t\t\tAPIBase: \"https://www.dmxapi.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderBurnCloud: {\n\t\t\tOwnerName: consts.ModelProviderBurnCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBurnCloud),\n\t\t\tAPIBase: \"https://ai.burncloud.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderTokenFlux: {\n\t\t\tOwnerName: consts.ModelProviderTokenFlux,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTokenFlux),\n\t\t\tAPIBase: \"https://tokenflux.ai/v1\",\n\t\t},\n\t\tconsts.ModelProvider302AI: {\n\t\t\tOwnerName: consts.ModelProvider302AI,\n\t\t\tModels: getModelsByOwner(consts.ModelProvider302AI),\n\t\t\tAPIBase: \"https://api.302.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderCephalon: {\n\t\t\tOwnerName: consts.ModelProviderCephalon,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCephalon),\n\t\t\tAPIBase: \"https://cephalon.cloud/user-center/v1/model\",\n\t\t},\n\t\tconsts.ModelProviderLanyun: {\n\t\t\tOwnerName: consts.ModelProviderLanyun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLanyun),\n\t\t\tAPIBase: \"https://maas-api.lanyun.net/v1\",\n\t\t},\n\t\tconsts.ModelProviderPH8: {\n\t\t\tOwnerName: consts.ModelProviderPH8,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPH8),\n\t\t\tAPIBase: \"https://ph8.co/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenRouter: {\n\t\t\tOwnerName: consts.ModelProviderOpenRouter,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenRouter),\n\t\t\tAPIBase: \"https://openrouter.ai/api/v1\",\n\t\t},\n\t\tconsts.ModelProviderNewAPI: {\n\t\t\tOwnerName: consts.ModelProviderNewAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNewAPI),\n\t\t\tAPIBase: \"http://localhost:3000/v1\",\n\t\t},\n\t\tconsts.ModelProviderLMStudio: {\n\t\t\tOwnerName: consts.ModelProviderLMStudio,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLMStudio),\n\t\t\tAPIBase: \"http://localhost:1234/v1\",\n\t\t},\n\t\tconsts.ModelProviderAnthropic: {\n\t\t\tOwnerName: consts.ModelProviderAnthropic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAnthropic),\n\t\t\tAPIBase: \"https://api.anthropic.com\",\n\t\t},\n\t\tconsts.ModelProviderVertexAI: {\n\t\t\tOwnerName: consts.ModelProviderVertexAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVertexAI),\n\t\t\tAPIBase: \"https://aiplatform.googleapis.com\",\n\t\t},\n\t\tconsts.ModelProviderGithub: {\n\t\t\tOwnerName: consts.ModelProviderGithub,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGithub),\n\t\t\tAPIBase: \"https://models.github.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderCopilot: {\n\t\t\tOwnerName: consts.ModelProviderCopilot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCopilot),\n\t\t\tAPIBase: \"https://api.githubcopilot.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderYi: {\n\t\t\tOwnerName: consts.ModelProviderYi,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderYi),\n\t\t\tAPIBase: \"https://api.lingyiwanwu.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaichuan: {\n\t\t\tOwnerName: consts.ModelProviderBaichuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaichuan),\n\t\t\tAPIBase: \"https://api.baichuan-ai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderStepFun: {\n\t\t\tOwnerName: consts.ModelProviderStepFun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderStepFun),\n\t\t\tAPIBase: \"https://api.stepfun.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderInfini: {\n\t\t\tOwnerName: consts.ModelProviderInfini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderInfini),\n\t\t\tAPIBase: \"https://cloud.infini-ai.com/maas/v1\",\n\t\t},\n\t\tconsts.ModelProviderMiniMax: {\n\t\t\tOwnerName: consts.ModelProviderMiniMax,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMiniMax),\n\t\t\tAPIBase: \"https://api.minimax.chat/v1\",\n\t\t},\n\t\tconsts.ModelProviderGroq: {\n\t\t\tOwnerName: consts.ModelProviderGroq,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGroq),\n\t\t\tAPIBase: \"https://api.groq.com/openai/v1\",\n\t\t},\n\t\tconsts.ModelProviderTogether: {\n\t\t\tOwnerName: consts.ModelProviderTogether,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTogether),\n\t\t\tAPIBase: \"https://api.together.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderFireworks: {\n\t\t\tOwnerName: consts.ModelProviderFireworks,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderFireworks),\n\t\t\tAPIBase: \"https://api.fireworks.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderNvidia: {\n\t\t\tOwnerName: consts.ModelProviderNvidia,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNvidia),\n\t\t\tAPIBase: \"https://integrate.api.nvidia.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderGrok: {\n\t\t\tOwnerName: consts.ModelProviderGrok,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGrok),\n\t\t\tAPIBase: \"https://api.x.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderHyperbolic: {\n\t\t\tOwnerName: consts.ModelProviderHyperbolic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHyperbolic),\n\t\t\tAPIBase: \"https://api.hyperbolic.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderMistral: {\n\t\t\tOwnerName: consts.ModelProviderMistral,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMistral),\n\t\t\tAPIBase: \"https://api.mistral.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderJina: {\n\t\t\tOwnerName: consts.ModelProviderJina,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderJina),\n\t\t\tAPIBase: \"https://api.jina.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderPerplexity: {\n\t\t\tOwnerName: consts.ModelProviderPerplexity,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPerplexity),\n\t\t\tAPIBase: \"https://api.perplexity.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderModelScope: {\n\t\t\tOwnerName: consts.ModelProviderModelScope,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderModelScope),\n\t\t\tAPIBase: \"https://api-inference.modelscope.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderXirang: {\n\t\t\tOwnerName: consts.ModelProviderXirang,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderXirang),\n\t\t\tAPIBase: \"https://wishub-x1.ctyun.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderTencentCloudTI: {\n\t\t\tOwnerName: consts.ModelProviderTencentCloudTI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTencentCloudTI),\n\t\t\tAPIBase: \"https://api.lkeap.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiduCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiduCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiduCloud),\n\t\t\tAPIBase: \"https://qianfan.baidubce.com/v2\",\n\t\t},\n\t\tconsts.ModelProviderGPUStack: {\n\t\t\tOwnerName: consts.ModelProviderGPUStack,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGPUStack),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderVoyageAI: {\n\t\t\tOwnerName: consts.ModelProviderVoyageAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVoyageAI),\n\t\t\tAPIBase: \"https://api.voyageai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderAWSBedrock: {\n\t\t\tOwnerName: consts.ModelProviderAWSBedrock,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAWSBedrock),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderPoe: {\n\t\t\tOwnerName: consts.ModelProviderPoe,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPoe),\n\t\t\tAPIBase: \"https://api.poe.com/v1\",\n\t\t},\n\t}\n\n\t// 初始化按类型分组的模型映射\n\tTypeModelMap = make(map[consts.ModelType][]ModelMetadata)\n\tfor i := range Models {\n\t\tmodel := Models[i]\n\t\tTypeModelMap[model.ModelType] = append(TypeModelMap[model.ModelType], model)\n\t}\n}\n"}, "a269dc23a54a8a450937b84dc5f985ff72721cf2": {"t": 1785759499.3093412, "n": 11075, "h": "10c846a8a3a88eb2", "c": "package domain\n\nimport \"github.com/chaitin/ModelKit/consts\"\n\ntype IModelProvider[T any] interface {\n\tListModel(subType string, provider string) ([]T, error)\n}\n\nvar ModelProviders map[consts.ModelProvider]ModelProvider\nvar TypeModelMap map[consts.ModelType][]ModelMetadata\n\ntype ModelProvider struct {\n\tOwnerName consts.ModelProvider `json:\"owner_name\"` // 提供商\n\tAPIBase string `json:\"api_base\"` // 接口地址 如:https://api.qwen.com\n\tAPIKey string `json:\"api_key\"` // 接口密钥 如:sk-xxxx\n\tAPIVersion string `json:\"api_version\"` // 接口版本 如:2023-05-15\n\tAPIHeader string `json:\"api_header\"` // 接口头 如:Authorization: Bearer sk-xxxx\n\tModels []ModelMetadata `json:\"models\"` // 模型列表\n}\n\nfunc initModelProviders() {\n\t// 初始化模型提供商及其模型\n\tModelProviders = map[consts.ModelProvider]ModelProvider{\n\t\tconsts.ModelProviderBaiZhiCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiZhiCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiZhiCloud),\n\t\t\tAPIBase: \"https://model-square.app.baizhi.cloud/v1\",\n\t\t},\n\t\tconsts.ModelProviderDeepSeek: {\n\t\t\tOwnerName: consts.ModelProviderDeepSeek,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDeepSeek),\n\t\t\tAPIBase: \"https://api.deepseek.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderSiliconFlow: {\n\t\t\tOwnerName: consts.ModelProviderSiliconFlow,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderSiliconFlow),\n\t\t\tAPIBase: \"https://api.siliconflow.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenAI),\n\t\t\tAPIBase: \"https://api.openai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOllama: {\n\t\t\tOwnerName: consts.ModelProviderOllama,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOllama),\n\t\t\tAPIBase: \"http://localhost:11434\",\n\t\t},\n\t\tconsts.ModelProviderMoonshot: {\n\t\t\tOwnerName: consts.ModelProviderMoonshot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMoonshot),\n\t\t\tAPIBase: \"https://api.moonshot.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderAzureOpenAI: {\n\t\t\tOwnerName: consts.ModelProviderAzureOpenAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAzureOpenAI),\n\t\t},\n\t\tconsts.ModelProviderHunyuan: {\n\t\t\tOwnerName: consts.ModelProviderHunyuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHunyuan),\n\t\t\tAPIBase: \"https://api.hunyuan.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiLian: {\n\t\t\tOwnerName: consts.ModelProviderBaiLian,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiLian),\n\t\t\tAPIBase: \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n\t\t},\n\t\tconsts.ModelProviderVolcengine: {\n\t\t\tOwnerName: consts.ModelProviderVolcengine,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVolcengine),\n\t\t\tAPIBase: \"https://ark.cn-beijing.volces.com/api/v3\",\n\t\t},\n\t\tconsts.ModelProviderGemini: {\n\t\t\tOwnerName: consts.ModelProviderGemini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGemini),\n\t\t\tAPIBase: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t},\n\t\tconsts.ModelProviderZhiPu: {\n\t\t\tOwnerName: consts.ModelProviderZhiPu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderZhiPu),\n\t\t\tAPIBase: \"https://open.bigmodel.cn/api/paas/v4\",\n\t\t},\n\t\tconsts.ModelProviderAiHubMix: {\n\t\t\tOwnerName: consts.ModelProviderAiHubMix,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAiHubMix),\n\t\t\tAPIBase: \"https://aihubmix.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderOcoolAI: {\n\t\t\tOwnerName: consts.ModelProviderOcoolAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOcoolAI),\n\t\t\tAPIBase: \"https://api.ocoolai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderPPIO: {\n\t\t\tOwnerName: consts.ModelProviderPPIO,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPPIO),\n\t\t\tAPIBase: \"https://api.ppinfra.com/v3/openai\",\n\t\t},\n\t\tconsts.ModelProviderAlayaNew: {\n\t\t\tOwnerName: consts.ModelProviderAlayaNew,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAlayaNew),\n\t\t\tAPIBase: \"https://deepseek.alayanew.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderQiniu: {\n\t\t\tOwnerName: consts.ModelProviderQiniu,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderQiniu),\n\t\t\tAPIBase: \"https://api.qnaigc.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderDMXAPI: {\n\t\t\tOwnerName: consts.ModelProviderDMXAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderDMXAPI),\n\t\t\tAPIBase: \"https://www.dmxapi.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderBurnCloud: {\n\t\t\tOwnerName: consts.ModelProviderBurnCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBurnCloud),\n\t\t\tAPIBase: \"https://ai.burncloud.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderTokenFlux: {\n\t\t\tOwnerName: consts.ModelProviderTokenFlux,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTokenFlux),\n\t\t\tAPIBase: \"https://tokenflux.ai/v1\",\n\t\t},\n\t\tconsts.ModelProvider302AI: {\n\t\t\tOwnerName: consts.ModelProvider302AI,\n\t\t\tModels: getModelsByOwner(consts.ModelProvider302AI),\n\t\t\tAPIBase: \"https://api.302.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderCephalon: {\n\t\t\tOwnerName: consts.ModelProviderCephalon,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCephalon),\n\t\t\tAPIBase: \"https://cephalon.cloud/user-center/v1/model\",\n\t\t},\n\t\tconsts.ModelProviderLanyun: {\n\t\t\tOwnerName: consts.ModelProviderLanyun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLanyun),\n\t\t\tAPIBase: \"https://maas-api.lanyun.net/v1\",\n\t\t},\n\t\tconsts.ModelProviderPH8: {\n\t\t\tOwnerName: consts.ModelProviderPH8,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPH8),\n\t\t\tAPIBase: \"https://ph8.co/v1\",\n\t\t},\n\t\tconsts.ModelProviderOpenRouter: {\n\t\t\tOwnerName: consts.ModelProviderOpenRouter,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderOpenRouter),\n\t\t\tAPIBase: \"https://openrouter.ai/api/v1\",\n\t\t},\n\t\tconsts.ModelProviderNewAPI: {\n\t\t\tOwnerName: consts.ModelProviderNewAPI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNewAPI),\n\t\t\tAPIBase: \"http://localhost:3000/v1\",\n\t\t},\n\t\tconsts.ModelProviderLMStudio: {\n\t\t\tOwnerName: consts.ModelProviderLMStudio,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderLMStudio),\n\t\t\tAPIBase: \"http://localhost:1234/v1\",\n\t\t},\n\t\tconsts.ModelProviderAnthropic: {\n\t\t\tOwnerName: consts.ModelProviderAnthropic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAnthropic),\n\t\t\tAPIBase: \"https://api.anthropic.com\",\n\t\t},\n\t\tconsts.ModelProviderVertexAI: {\n\t\t\tOwnerName: consts.ModelProviderVertexAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVertexAI),\n\t\t\tAPIBase: \"https://aiplatform.googleapis.com\",\n\t\t},\n\t\tconsts.ModelProviderGithub: {\n\t\t\tOwnerName: consts.ModelProviderGithub,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGithub),\n\t\t\tAPIBase: \"https://models.github.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderCopilot: {\n\t\t\tOwnerName: consts.ModelProviderCopilot,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderCopilot),\n\t\t\tAPIBase: \"https://api.githubcopilot.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderYi: {\n\t\t\tOwnerName: consts.ModelProviderYi,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderYi),\n\t\t\tAPIBase: \"https://api.lingyiwanwu.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaichuan: {\n\t\t\tOwnerName: consts.ModelProviderBaichuan,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaichuan),\n\t\t\tAPIBase: \"https://api.baichuan-ai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderStepFun: {\n\t\t\tOwnerName: consts.ModelProviderStepFun,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderStepFun),\n\t\t\tAPIBase: \"https://api.stepfun.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderInfini: {\n\t\t\tOwnerName: consts.ModelProviderInfini,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderInfini),\n\t\t\tAPIBase: \"https://cloud.infini-ai.com/maas/v1\",\n\t\t},\n\t\tconsts.ModelProviderMiniMax: {\n\t\t\tOwnerName: consts.ModelProviderMiniMax,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMiniMax),\n\t\t\tAPIBase: \"https://api.minimax.chat/v1\",\n\t\t},\n\t\tconsts.ModelProviderGroq: {\n\t\t\tOwnerName: consts.ModelProviderGroq,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGroq),\n\t\t\tAPIBase: \"https://api.groq.com/openai/v1\",\n\t\t},\n\t\tconsts.ModelProviderTogether: {\n\t\t\tOwnerName: consts.ModelProviderTogether,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTogether),\n\t\t\tAPIBase: \"https://api.together.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderFireworks: {\n\t\t\tOwnerName: consts.ModelProviderFireworks,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderFireworks),\n\t\t\tAPIBase: \"https://api.fireworks.ai/inference/v1\",\n\t\t},\n\t\tconsts.ModelProviderNvidia: {\n\t\t\tOwnerName: consts.ModelProviderNvidia,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderNvidia),\n\t\t\tAPIBase: \"https://integrate.api.nvidia.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderGrok: {\n\t\t\tOwnerName: consts.ModelProviderGrok,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGrok),\n\t\t\tAPIBase: \"https://api.x.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderHyperbolic: {\n\t\t\tOwnerName: consts.ModelProviderHyperbolic,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderHyperbolic),\n\t\t\tAPIBase: \"https://api.hyperbolic.xyz/v1\",\n\t\t},\n\t\tconsts.ModelProviderMistral: {\n\t\t\tOwnerName: consts.ModelProviderMistral,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderMistral),\n\t\t\tAPIBase: \"https://api.mistral.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderJina: {\n\t\t\tOwnerName: consts.ModelProviderJina,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderJina),\n\t\t\tAPIBase: \"https://api.jina.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderPerplexity: {\n\t\t\tOwnerName: consts.ModelProviderPerplexity,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPerplexity),\n\t\t\tAPIBase: \"https://api.perplexity.ai/v1\",\n\t\t},\n\t\tconsts.ModelProviderModelScope: {\n\t\t\tOwnerName: consts.ModelProviderModelScope,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderModelScope),\n\t\t\tAPIBase: \"https://api-inference.modelscope.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderXirang: {\n\t\t\tOwnerName: consts.ModelProviderXirang,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderXirang),\n\t\t\tAPIBase: \"https://wishub-x1.ctyun.cn/v1\",\n\t\t},\n\t\tconsts.ModelProviderTencentCloudTI: {\n\t\t\tOwnerName: consts.ModelProviderTencentCloudTI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderTencentCloudTI),\n\t\t\tAPIBase: \"https://api.lkeap.cloud.tencent.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderBaiduCloud: {\n\t\t\tOwnerName: consts.ModelProviderBaiduCloud,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderBaiduCloud),\n\t\t\tAPIBase: \"https://qianfan.baidubce.com/v2\",\n\t\t},\n\t\tconsts.ModelProviderGPUStack: {\n\t\t\tOwnerName: consts.ModelProviderGPUStack,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderGPUStack),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderVoyageAI: {\n\t\t\tOwnerName: consts.ModelProviderVoyageAI,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderVoyageAI),\n\t\t\tAPIBase: \"https://api.voyageai.com/v1\",\n\t\t},\n\t\tconsts.ModelProviderAWSBedrock: {\n\t\t\tOwnerName: consts.ModelProviderAWSBedrock,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderAWSBedrock),\n\t\t\tAPIBase: \"\",\n\t\t},\n\t\tconsts.ModelProviderPoe: {\n\t\t\tOwnerName: consts.ModelProviderPoe,\n\t\t\tModels: getModelsByOwner(consts.ModelProviderPoe),\n\t\t\tAPIBase: \"https://api.poe.com/v1\",\n\t\t},\n\t}\n\n\t// 初始化按类型分组的模型映射\n\tTypeModelMap = make(map[consts.ModelType][]ModelMetadata)\n\tfor i := range Models {\n\t\tmodel := Models[i]\n\t\tTypeModelMap[model.ModelType] = append(TypeModelMap[model.ModelType], model)\n\t}\n}"}, "f0886a7acee6917a27d0a086394aa7b7552cb468": {"t": 1785759500.7142868, "n": 113, "h": "4f16b2db7106f365", "c": "package domain\n\ntype IModelProvider[T any] interface {\n\tListModel(subType string, provider string) ([]T, error)\n}"}, "87c70c859f860bf5e98db8629353177c340a5e1c": {"t": 1785759502.4060845, "n": 95, "h": "8f95839e35f9101b", "c": "package domain\n\ntype ModelProvider[T any] interface {\n\tListModel(subType string) ([]T, error)\n}"}}, "docs/Chat.md": {"7c0a182cb8359405a14f69efb1854c92c73e21bb": {"t": 1785746513.3751175, "n": 2351, "h": "3c277865f6fd8823", "c": "# ModelKit Chat 介绍\n- 支持 `OpenAI API` \n- 支持的供应商:\n `兼容OpenAI API 的所有供应商`、`AzureOpenAI`、`Ollama` 、 `DeepSeek`、`Gemini`、`BaiLian`\n# 创建chat\n\n```go\npackage main\n\nimport (\n \"context\"\n \"os\"\n \"log/slog\"\n \"github.com/chaitin/ModelKit/v2/consts\"\n \"github.com/chaitin/ModelKit/v2/domain\"\n \"github.com/chaitin/ModelKit/v2/usecase\"\n\t\"github.com/cloudwego/eino/schema\"\n)\n\nfunc main() {\n ctx := context.Background()\n logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{\n AddSource: true,\n Level: slog.LevelInfo,\n }))\n mk := usecase.NewModelKit(logger)\n\n chatModel, err := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderOpenAI,\n ModelName: \"gpt-4o-mini\",\n BaseURL: \"https://api.openai.com/v1\",\n APIKey: \"sk-xxxxxx\",\n })\n\n if err != nil {\n logger.Error(\"get chat model failed\", \"err\", err)\n }\n}\n```\n\n字段说明(ModelMetadata):\n\n- `provider`:模型提供商,取值如 `OpenAI`、`AzureOpenAI`、`Ollama`、`DeepSeek`、`Gemini`、`BaiLian`。\n- `model_name`:对话模型 ID,例如 `gpt-4o-mini`、`deepseek-chat`。\n- `base_url`:OpenAI 兼容客户端会自动调用 `/chat/completions`;不要在 `base_url` 中包含该路径。`Ollama` 若以 `/v1` 结尾走兼容模式,否则走原生。\n- `api_key`:鉴权密钥,作为 `Authorization: Bearer <API_KEY>` 使用。\n- `api_version`:仅 `AzureOpenAI` 需要,未设置将默认 `2024-10-21`。\n- `api_header`:可选的自定义请求头(`key=value` 按行拼接)。\n高级参数: \n- `max_tokens`:最大生成长度,默认为模型最大值。\n- `temperature`:采样温度,建议与TopP二选一,范围0-2,默认0.0。\n- `top_p`:核采样,建议与Temperature二选一,范围0-1,默认1.0。\n- `stop`:停止序列。\n- `presence_penalty`:存在惩罚,范围-2到2,默认0。\n- `frequency_penalty`:频率惩罚,范围-2到2,默认0。\n- `response_format`:结构化响应格式(OpenAI 兼容)。\n- `seed`:确定性采样。\n- `logit_bias`:Logit 偏置。\n\n# 使用chat\n## 非流式生成\n\n```go\nt := float32(0.2)\nchatModel, _ := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderDeepSeek,\n ModelName: \"deepseek-chat\",\n BaseURL: \"https://api.deepseek.com\",\n APIKey: \"sk-xxxxxx\",\n Temperature: &t,\n})\nmsgs := []*schema.Message{ schema.UserMessage(\"讲个笑话\") }\nres, _ := chatModel.Generate(ctx, msgs)\n```\n\n示例结果\n\n```json\n{\n \"content\": \"当然,这里有一个轻松的笑话……\"\n}\n```\n\n## 流式生成\n\n```go\nstream, _ := chatModel.Stream(ctx, msgs)\nfor {\n chunk, err := stream.Recv()\n if err == io.EOF {\n break\n }\n if err != nil {\n break\n }\n fmt.Print(chunk.Content)\n}\n```\n\n示例结果\n\n```text\n当 然 , 这 里 有 一 个 轻 松 的 笑 话 …\n```"}, "2681b72c0a91b966c7060c915fe5a635752f387e": {"t": 1785759488.644365, "n": 2351, "h": "3c277865f6fd8823", "c": "# ModelKit Chat 介绍\n- 支持 `OpenAI API` \n- 支持的供应商:\n `兼容OpenAI API 的所有供应商`、`AzureOpenAI`、`Ollama` 、 `DeepSeek`、`Gemini`、`BaiLian`\n# 创建chat\n\n```go\npackage main\n\nimport (\n \"context\"\n \"os\"\n \"log/slog\"\n \"github.com/chaitin/ModelKit/v2/consts\"\n \"github.com/chaitin/ModelKit/v2/domain\"\n \"github.com/chaitin/ModelKit/v2/usecase\"\n\t\"github.com/cloudwego/eino/schema\"\n)\n\nfunc main() {\n ctx := context.Background()\n logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{\n AddSource: true,\n Level: slog.LevelInfo,\n }))\n mk := usecase.NewModelKit(logger)\n\n chatModel, err := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderOpenAI,\n ModelName: \"gpt-4o-mini\",\n BaseURL: \"https://api.openai.com/v1\",\n APIKey: \"sk-xxxxxx\",\n })\n\n if err != nil {\n logger.Error(\"get chat model failed\", \"err\", err)\n }\n}\n```\n\n字段说明(ModelMetadata):\n\n- `provider`:模型提供商,取值如 `OpenAI`、`AzureOpenAI`、`Ollama`、`DeepSeek`、`Gemini`、`BaiLian`。\n- `model_name`:对话模型 ID,例如 `gpt-4o-mini`、`deepseek-chat`。\n- `base_url`:OpenAI 兼容客户端会自动调用 `/chat/completions`;不要在 `base_url` 中包含该路径。`Ollama` 若以 `/v1` 结尾走兼容模式,否则走原生。\n- `api_key`:鉴权密钥,作为 `Authorization: Bearer <API_KEY>` 使用。\n- `api_version`:仅 `AzureOpenAI` 需要,未设置将默认 `2024-10-21`。\n- `api_header`:可选的自定义请求头(`key=value` 按行拼接)。\n高级参数: \n- `max_tokens`:最大生成长度,默认为模型最大值。\n- `temperature`:采样温度,建议与TopP二选一,范围0-2,默认0.0。\n- `top_p`:核采样,建议与Temperature二选一,范围0-1,默认1.0。\n- `stop`:停止序列。\n- `presence_penalty`:存在惩罚,范围-2到2,默认0。\n- `frequency_penalty`:频率惩罚,范围-2到2,默认0。\n- `response_format`:结构化响应格式(OpenAI 兼容)。\n- `seed`:确定性采样。\n- `logit_bias`:Logit 偏置。\n\n# 使用chat\n## 非流式生成\n\n```go\nt := float32(0.2)\nchatModel, _ := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderDeepSeek,\n ModelName: \"deepseek-chat\",\n BaseURL: \"https://api.deepseek.com\",\n APIKey: \"sk-xxxxxx\",\n Temperature: &t,\n})\nmsgs := []*schema.Message{ schema.UserMessage(\"讲个笑话\") }\nres, _ := chatModel.Generate(ctx, msgs)\n```\n\n示例结果\n\n```json\n{\n \"content\": \"当然,这里有一个轻松的笑话……\"\n}\n```\n\n## 流式生成\n\n```go\nstream, _ := chatModel.Stream(ctx, msgs)\nfor {\n chunk, err := stream.Recv()\n if err == io.EOF {\n break\n }\n if err != nil {\n break\n }\n fmt.Print(chunk.Content)\n}\n```\n\n示例结果\n\n```text\n当 然 , 这 里 有 一 个 轻 松 的 笑 话 …\n```"}, "a472fa5ef6bd13bd2d5efae2d09142c7d9f3a9c7": {"t": 1785759490.0182195, "n": 2267, "h": "8b21558822ce4c78", "c": "# ModelKit Chat 介绍\n- 支持 `OpenAI API` \n- 支持的供应商:\n `兼容OpenAI API 的所有供应商`、`AzureOpenAI`、`Ollama` 、 `DeepSeek`、`Gemini`、`BaiLian`\n# 创建chat\n\n```go\npackage main\n\nimport (\n \"context\"\n \"os\"\n \"log/slog\"\n \"github.com/chaitin/ModelKit/v2/consts\"\n \"github.com/chaitin/ModelKit/v2/domain\"\n \"github.com/chaitin/ModelKit/v2/usecase\"\n\t\"github.com/cloudwego/eino/schema\"\n)\n\nfunc main() {\n ctx := context.Background()\n logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{\n AddSource: true,\n Level: slog.LevelInfo,\n }))\n mk := usecase.NewModelKit(logger)\n\n chatModel, err := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderOpenAI,\n ModelName: \"gpt-4o-mini\",\n BaseURL: \"https://api.openai.com/v1\",\n APIKey: \"sk-xxxxxx\",\n })\n\n if err != nil {\n logger.Error(\"get chat model failed\", \"err\", err)\n }\n}\n```\n\n字段说明(ModelMetadata):\n\n- `provider`:模型提供商,取值如 `OpenAI`、`AzureOpenAI`、`Ollama`、`DeepSeek`、`Gemini`、`BaiLian`。\n- `model_name`:对话模型 ID,例如 `gpt-4o-mini`、`deepseek-chat`。\n- `base_url`:OpenAI 兼容客户端会自动调用 `/chat/completions`;不要在 `base_url` 中包含该路径。`Ollama` 若以 `/v1` 结尾走兼容模式,否则走原生。\n- `api_key`:鉴权密钥,作为 `Authorization: Bearer <API_KEY>` 使用。\n- `api_version`:仅 `AzureOpenAI` 需要,未设置将默认 `2024-10-21`。\n- `api_header`:可选的自定义请求头(`key=value` 按行拼接)。\n高级参数: \n- `max_tokens`:最大生成长度。\n- `temperature`:采样温度。\n- `top_p`:核采样。\n- `stop`:停止序列。\n- `presence_penalty`:存在惩罚。\n- `frequency_penalty`:频率惩罚。\n- `response_format`:结构化响应格式(OpenAI 兼容)。\n- `seed`:确定性采样。\n- `logit_bias`:Logit 偏置。\n\n# 使用chat\n## 非流式生成\n\n```go\nt := float32(0.2)\nchatModel, _ := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderDeepSeek,\n ModelName: \"deepseek-chat\",\n BaseURL: \"https://api.deepseek.com\",\n APIKey: \"sk-xxxxxx\",\n Temperature: &t,\n})\nmsgs := []*schema.Message{ schema.UserMessage(\"讲个笑话\") }\nres, _ := chatModel.Generate(ctx, msgs)\n```\n\n示例结果\n\n```json\n{\n \"content\": \"当然,这里有一个轻松的笑话……\"\n}\n```\n\n## 流式生成\n\n```go\nstream, _ := chatModel.Stream(ctx, msgs)\nfor {\n chunk, err := stream.Recv()\n if err == io.EOF {\n break\n }\n if err != nil {\n break\n }\n fmt.Print(chunk.Content)\n}\n```\n\n示例结果\n\n```text\n当 然 , 这 里 有 一 个 轻 松 的 笑 话 …\n```"}, "4e7e9a56b0aa00ccd7ee945bcb7fccf8d318c9b4": {"t": 1785759491.49628, "n": 2247, "h": "9478954fccc162f3", "c": "# ModelKit Chat 介绍\n- 支持 `OpenAI API` \n- 支持的供应商:\n `兼容OpenAI API 的所有供应商`、`AzureOpenAI`、`Ollama` 、 `DeepSeek`、`Gemini`\n# 创建chat\n\n```go\npackage main\n\nimport (\n \"context\"\n \"os\"\n \"log/slog\"\n \"github.com/chaitin/ModelKit/v2/consts\"\n \"github.com/chaitin/ModelKit/v2/domain\"\n \"github.com/chaitin/ModelKit/v2/usecase\"\n\t\"github.com/cloudwego/eino/schema\"\n)\n\nfunc main() {\n ctx := context.Background()\n logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{\n AddSource: true,\n Level: slog.LevelInfo,\n }))\n mk := usecase.NewModelKit(logger)\n\n chatModel, err := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderOpenAI,\n ModelName: \"gpt-4o-mini\",\n BaseURL: \"https://api.openai.com/v1\",\n APIKey: \"sk-xxxxxx\",\n })\n\n if err != nil {\n logger.Error(\"get chat model failed\", \"err\", err)\n }\n}\n```\n\n字段说明(ModelMetadata):\n\n- `provider`:模型提供商,取值如 `OpenAI`、`AzureOpenAI`、`Ollama`、`DeepSeek`、`Gemini`。\n- `model_name`:对话模型 ID,例如 `gpt-4o-mini`、`deepseek-chat`。\n- `base_url`:OpenAI 兼容客户端会自动调用 `/chat/completions`;不要在 `base_url` 中包含该路径。`Ollama` 若以 `/v1` 结尾走兼容模式,否则走原生。\n- `api_key`:鉴权密钥,作为 `Authorization: Bearer <API_KEY>` 使用。\n- `api_version`:仅 `AzureOpenAI` 需要,未设置将默认 `2024-10-21`。\n- `api_header`:可选的自定义请求头(`key=value` 按行拼接)。\n高级参数: \n- `max_tokens`:最大生成长度。\n- `temperature`:采样温度。\n- `top_p`:核采样。\n- `stop`:停止序列。\n- `presence_penalty`:存在惩罚。\n- `frequency_penalty`:频率惩罚。\n- `response_format`:结构化响应格式(OpenAI 兼容)。\n- `seed`:确定性采样。\n- `logit_bias`:Logit 偏置。\n\n# 使用chat\n## 非流式生成\n\n```go\nt := float32(0.2)\nchatModel, _ := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderDeepSeek,\n ModelName: \"deepseek-chat\",\n BaseURL: \"https://api.deepseek.com\",\n APIKey: \"sk-xxxxxx\",\n Temperature: &t,\n})\nmsgs := []*schema.Message{ schema.UserMessage(\"讲个笑话\") }\nres, _ := chatModel.Generate(ctx, msgs)\n```\n\n示例结果\n\n```json\n{\n \"content\": \"当然,这里有一个轻松的笑话……\"\n}\n```\n\n## 流式生成\n\n```go\nstream, _ := chatModel.Stream(ctx, msgs)\nfor {\n chunk, err := stream.Recv()\n if err == io.EOF {\n break\n }\n if err != nil {\n break\n }\n fmt.Print(chunk.Content)\n}\n```\n\n示例结果\n\n```text\n当 然 , 这 里 有 一 个 轻 松 的 笑 话 …\n```"}, "21e17fdf7d712bfe9bb09e0ca5b2432bd96c483d": {"t": 1785759493.7225535, "n": 2211, "h": "bdd5d4e1cfe289c2", "c": "# ModelKit Chat 介绍\n- 支持 `OpenAI API` \n- 支持的供应商:\n `兼容OpenAI API 的所有供应商`、`AzureOpenAI`、`Ollama` 、 `DeepSeek`、`Gemini`\n# 创建chat\n\n```go\npackage main\n\nimport (\n \"context\"\n \"os\"\n \"log/slog\"\n \"github.com/chaitin/ModelKit/v2/consts\"\n \"github.com/chaitin/ModelKit/v2/domain\"\n \"github.com/chaitin/ModelKit/v2/usecase\"\n)\n\nfunc main() {\n ctx := context.Background()\n logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{\n AddSource: true,\n Level: slog.LevelInfo,\n }))\n mk := usecase.NewModelKit(logger)\n\n chatModel, err := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderOpenAI,\n ModelName: \"gpt-4o-mini\",\n BaseURL: \"https://api.openai.com/v1\",\n APIKey: \"sk-xxxxxx\",\n })\n\n if err != nil {\n logger.Error(\"get chat model failed\", \"err\", err)\n }\n}\n```\n\n字段说明(ModelMetadata):\n\n- `provider`:模型提供商,取值如 `OpenAI`、`AzureOpenAI`、`Ollama`、`DeepSeek`、`Gemini`。\n- `model_name`:对话模型 ID,例如 `gpt-4o-mini`、`deepseek-chat`。\n- `base_url`:OpenAI 兼容客户端会自动调用 `/chat/completions`;不要在 `base_url` 中包含该路径。`Ollama` 若以 `/v1` 结尾走兼容模式,否则走原生。\n- `api_key`:鉴权密钥,作为 `Authorization: Bearer <API_KEY>` 使用。\n- `api_version`:仅 `AzureOpenAI` 需要,未设置将默认 `2024-10-21`。\n- `api_header`:可选的自定义请求头(`key=value` 按行拼接)。\n高级参数: \n- `max_tokens`:最大生成长度。\n- `temperature`:采样温度。\n- `top_p`:核采样。\n- `stop`:停止序列。\n- `presence_penalty`:存在惩罚。\n- `frequency_penalty`:频率惩罚。\n- `response_format`:结构化响应格式(OpenAI 兼容)。\n- `seed`:确定性采样。\n- `logit_bias`:Logit 偏置。\n\n# 使用chat\n## 非流式生成\n\n```go\nt := float32(0.2)\nchatModel, _ := mk.GetChatModel(ctx, &domain.ModelMetadata{\n Provider: consts.ModelProviderDeepSeek,\n ModelName: \"deepseek-chat\",\n BaseURL: \"https://api.deepseek.com\",\n APIKey: \"sk-xxxxxx\",\n Temperature: &t,\n})\nmsgs := []*schema.Message{ schema.UserMessage(\"讲个笑话\") }\nres, _ := chatModel.Generate(ctx, msgs)\n```\n\n示例结果\n\n```json\n{\n \"content\": \"当然,这里有一个轻松的笑话……\"\n}\n```\n\n## 流式生成\n\n```go\nstream, _ := chatModel.Stream(ctx, msgs)\nfor {\n chunk, err := stream.Recv()\n if err == io.EOF {\n break\n }\n if err != nil {\n break\n }\n fmt.Print(chunk.Content)\n}\n```\n\n示例结果\n\n```text\n当 然 , 这 里 有 一 个 轻 松 的 笑 话 …\n```"}}, "domain/model.go": {"7c0a182cb8359405a14f69efb1854c92c73e21bb": {"t": 1785809844.5949955, "n": 46626, "h": "282a6445aa08407d", "c": "package domain\n\nimport (\n\t\"github.com/chaitin/ModelKit/v2/consts\"\n\t\"github.com/cloudwego/eino-ext/libs/acl/openai\"\n)\n\ntype ModelParam struct {\n\tContextWindow int `json:\"context_window\"`\n\tMaxTokens int `json:\"max_tokens\"`\n\tR1Enabled bool `json:\"r1_enabled\"`\n\tSupportComputerUse bool `json:\"support_computer_use\"`\n\tSupportImages bool `json:\"support_images\"`\n\tSupportPromptCache bool `json:\"support_prompt_cache\"`\n\tTemperature *float32 `json:\"temperature\"`\n}\n\ntype ModelMetadata struct {\n\t// 基础参数\n\tModelName string `json:\"id\"` // 模型的名字\n\tObject string `json:\"object\"` // 总是model\n\tCreated int `json:\"created\"` // 创建时间\n\tProvider consts.ModelProvider `json:\"provider\"` // 提供商\n\tModelType consts.ModelType `json:\"model_type\"` // 模型类型\n\t// api 调用相关参数\n\tBaseURL string `json:\"base_url\"`\n\tAPIKey string `json:\"api_key\"`\n\tAPIHeader string `json:\"api_header\"`\n\tAPIVersion string `json:\"api_version\"` // for azure openai\n\t// 高级参数\n\t// 限制生成的最大token数量,可选,默认为模型最大值, Ollama不支持\n\tMaxTokens *int `json:\"max_tokens\"`\n\t// 采样温度参数,建议与TopP二选一,范围0-2,值越大输出越随机,可选,默认0.0\n\tTemperature *float32 `json:\"temperature\"`\n\t// 控制采样多样性,建议与Temperature二选一,范围0-1,值越小输出越聚焦,可选,默认1.0\n\tTopP *float32 `json:\"top_p\"`\n\t// API停止生成的序列标记,可选,例如:[]string{\"\\n\", \"User:\"}\n\tStop []string `json:\"stop\"`\n\t// 基于存在惩罚重复,范围-2到2,正值增加新主题可能性,可选,默认0, Gemini不支持\n\tPresencePenalty *float32 `json:\"presence_penalty\"`\n\t// 指定模型响应的格式,可选,用于结构化输出, DS,Gemini,Ollama不支持\n\tResponseFormat *openai.ChatCompletionResponseFormat `json:\"response_format\"`\n\t// 启用确定性采样以获得一致输出,可选,用于可重现结果, DS,Gemini不支持\n\tSeed *int `json:\"seed\"`\n\t// 基于频率惩罚重复,范围-2到2,正值降低重复可能性,可选,默认0, Gemini不支持\n\tFrequencyPenalty *float32 `json:\"frequency_penalty\"`\n\t// 修改特定token在补全中出现的可能性,可选,token ID到偏置值(-100到100)的映射, DS,Gemini,Ollama不支持\n\tLogitBias map[string]int `json:\"logit_bias\"`\n\t// Embeddng高级参数\n\tEmbedderParam EmbedderParam `json:\"embedder_param\"`\n}\n\ntype EmbedderParam struct {\n\t// 向量维度,可选:2048(仅v4)、1536(仅v4)、1024、768、512、256、128、64\n\tDimension *int `json:\"dimension\"`\n\t// 文本类型,检索任务建议区分:query 与 document,默认 document\n\tTextType *string `json:\"text_type\"`\n\t// 输出类型,仅 v3/v4 支持:dense、sparse、dense&sparse,默认 dense\n\tOutputType *string `json:\"output_type\"`\n\t// 输出编码格式,默认 float\n\tEncodingFormat *string `json:\"encoding_format\"`\n\t// 检索指令,仅在 text-embedding-v4 且 TextType=query 时生效\n\tInstruct *string `json:\"instruct\"`\n}\n\nvar Models []ModelMetadata\n\n// getBaiZhiCloudModels 返回百智云模型列表\nfunc getBaiZhiCloudModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"qwen-plus\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-72b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-14b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-coder-plus\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"deepseek-r1\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"kimi-k2-0711-preview\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-coder-480b-a35b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"deepseek-v3\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-turbo\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-32b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiZhiCloud, ModelType: consts.ModelTypeChat},\n\t}\n}\n\n// getDeepSeekModels 返回Deepseek模型列表\nfunc getDeepSeekModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"deepseek-chat\", Object: \"model\", Provider: consts.ModelProviderDeepSeek, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"deepseek-reasoner\", Object: \"model\", Provider: consts.ModelProviderDeepSeek, ModelType: consts.ModelTypeChat},\n\t}\n}\n\n// getHunyuanModels 返回腾讯混元模型列表\nfunc getHunyuanModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"hunyuan-pro\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-vision\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-lite\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-standard-32K\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-standard\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-standard-256k\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-functioncall\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"hunyuan-role\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-code\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"hunyuan-turbo-vision\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-turbo-latest\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbo\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-large\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-large-longcontext\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-latest\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-20250226\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-20250313\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-t1-latest\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-t1-20250321\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-t1-vision\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-turbos-20250515\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-large-vision\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-t1-20250529\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-20250604\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-vision-20250619\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-t1-vision-20250619\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"hunyuan-a13b\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-t1-20250711\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-turbos-20250716\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"hunyuan-vision-7b-20250720\", Object: \"model\", Provider: consts.ModelProviderHunyuan, ModelType: consts.ModelTypeVision},\n\t}\n}\n\n// getBaiLianModels 返回阿里百炼模型列表\nfunc getBaiLianModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"text-embedding-v1\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"text-embedding-v2\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"text-embedding-v3\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"gte-rerank\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"qwen3-rerank\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"qwen3-coder-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen3-coder-plus-2025-07-22\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-plus-2025-07-14\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-coder-480b-a35b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-mt-turbo\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-mt-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-tts-2025-05-22\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qvq-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qvq-plus-2025-05-15\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qvq-max-2025-05-15\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-4b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-32b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-30b-a3b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-235b-a22b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-14b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-1.7b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-0.6b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen3-8b\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-vl-max-2025-04-02\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"qwen-vl-ocr-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"qwen-vl-ocr\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"qwen-coder-plus-1106\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-coder-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-coder-plus-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen2.5-coder-3b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen2.5-coder-0.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen2.5-coder-14b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen2.5-coder-32b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-math-turbo\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-3b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-math-1.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-1.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-0.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-32b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-72b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-coder-7b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen2.5-math-7b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-coder-turbo\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-coder-turbo-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-math-plus-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-math-plus-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-math-turbo-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-plus-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-plus-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-turbo-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-math-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-14b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-7b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2.5-math-72b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-coder-turbo-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen-math-turbo-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-latest\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-turbo-0919\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2-1.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2-72b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2-7b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2-0.5b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen2-57b-a14b-instruct\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-long\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-vl-max\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"qwen-vl-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"qwen-max-0428\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen1.5-110b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen1.5-0.5b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-1.8b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-1.8b-longcontext-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-7b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-14b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-72b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"codeqwen1.5-7b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"qwen1.5-32b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen1.5-72b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-longcontext\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-1201\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen1.5-1.8b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen1.5-14b-chat\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-turbo\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-plus\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-0403\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"qwen-max-0107\", Object: \"model\", Provider: consts.ModelProviderBaiLian, ModelType: consts.ModelTypeChat},\n\t}\n}\n\n// getVolcengineModels 返回火山引擎模型列表\nfunc getVolcengineModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"doubao-seed-1.6-250615\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"doubao-seed-1.6-flash-250615\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"doubao-seed-1.6-flash-250715\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"doubao-seed-1.6-thinking-250615\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"doubao-seed-1.6-thinking-250715\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"doubao-1.5-thinking-vision-pro-250428\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeVision},\n\t\t// {ModelName: \"Doubao-1.5-thinking-pro-250415\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"deepseek-r1-250528\", Object: \"model\", Provider: consts.ModelProviderVolcengine, ModelType: consts.ModelTypeChat},\n\t}\n}\n\n// getOpenAIModels 返回OpenAI模型列表\nfunc getOpenAIModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"text-embedding-ada-002\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"whisper-1\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-3.5-turbo\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"tts-1\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-3.5-turbo-16k\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"davinci-002\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"babbage-002\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-3.5-turbo-instruct\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-3.5-turbo-instruct-0914\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"dall-e-3\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"dall-e-2\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"gpt-3.5-turbo-1106\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"tts-1-hd\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"tts-1-1106\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"tts-1-hd-1106\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"text-embedding-3-small\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"text-embedding-3-large\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"gpt-3.5-turbo-0125\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-2024-05-13\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-mini-2024-07-18\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-mini\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-2024-08-06\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o1-mini-2024-09-12\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o1-mini\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-audio-preview-2024-10-01\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-audio-preview\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"omni-moderation-latest\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"omni-moderation-2024-09-26\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-audio-preview-2024-12-17\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-audio-preview-2024-12-17\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-audio-preview\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-2024-11-20\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-search-preview-2025-03-11\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-search-preview\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-search-preview-2025-03-11\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-search-preview\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-transcribe\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-transcribe\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4o-mini-tts\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"gpt-4.1-2025-04-14\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-mini-2025-04-14\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-mini\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-nano-2025-04-14\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-nano\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-image-1\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"gpt-4o-audio-preview-2025-06-03\", Object: \"model\", Provider: consts.ModelProviderOpenAI, ModelType: consts.ModelTypeFunctionCall},\n\t}\n}\n\n// getSiliconFlowModels 返回硅基流动模型列表\nfunc getSiliconFlowModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"stabilityai/stable-diffusion-xl-base-1.0\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"THUDM/glm-4-9b-chat\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"internlm/internlm2_5-7b-chat\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"BAAI/bge-large-en-v1.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"BAAI/bge-large-zh-v1.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"Pro/Qwen/Qwen2-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/THUDM/glm-4-9b-chat\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"black-forest-labs/FLUX.1-schnell\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"black-forest-labs/FLUX.1-dev\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"FunAudioLLM/SenseVoiceSmall\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"netease-youdao/bce-embedding-base_v1\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"BAAI/bge-m3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"netease-youdao/bce-reranker-base_v1\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"BAAI/bge-reranker-v2-m3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-V2.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-72B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-14B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-32B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/black-forest-labs/FLUX.1-schnell\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-Coder-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"Pro/Qwen/Qwen2.5-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-72B-Instruct-128K\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2-VL-72B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Pro/BAAI/bge-m3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"stabilityai/stable-diffusion-3-5-large\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"LoRA/Qwen/Qwen2.5-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"fishaudio/fish-speech-1.4\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"Pro/Qwen/Qwen2.5-Coder-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"LoRA/Qwen/Qwen2.5-72B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-Coder-32B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"Pro/BAAI/bge-reranker-v2-m3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"RVC-Boss/GPT-SoVITS\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"fishaudio/fish-speech-1.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"black-forest-labs/FLUX.1-pro\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"LoRA/Qwen/Qwen2.5-14B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"LoRA/Qwen/Qwen2.5-32B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"FunAudioLLM/CosyVoice2-0.5B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"deepseek-ai/deepseek-vl2\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Qwen/QVQ-72B-Preview\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"LoRA/black-forest-labs/FLUX.1-dev\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen2.5-VL-72B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Pro/Qwen/Qwen2.5-VL-7B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-V3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-R1\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"Pro/deepseek-ai/DeepSeek-R1\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/deepseek-ai/DeepSeek-V3\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Kwai-Kolors/Kolors\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Qwen/QwQ-32B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Wan-AI/Wan2.1-T2V-14B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Wan-AI/Wan2.1-T2V-14B-Turbo\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Wan-AI/Wan2.1-I2V-14B-720P\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Wan-AI/Wan2.1-I2V-14B-720P-Turbo\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"Qwen/Qwen2.5-VL-32B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeVision},\n\t\t{ModelName: \"THUDM/GLM-Z1-32B-0414\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"THUDM/GLM-4-32B-0414\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"THUDM/GLM-Z1-9B-0414\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"THUDM/GLM-4-9B-0414\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"THUDM/GLM-Z1-Rumination-32B-0414\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-8B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-14B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-32B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-30B-A3B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-235B-A22B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Tongyi-Zhiwen/QwenLong-L1-32B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"deepseek-ai/DeepSeek-R1-0528-Qwen3-8B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-Embedding-8B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"Qwen/Qwen3-Embedding-4B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"Qwen/Qwen3-Embedding-0.6B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeEmbedding},\n\t\t{ModelName: \"MiniMaxAI/MiniMax-M1-80k\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-Reranker-0.6B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"Qwen/Qwen3-Reranker-4B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"Qwen/Qwen3-Reranker-8B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeRerank},\n\t\t{ModelName: \"fnlp/MOSS-TTSD-v0.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeFunctionCall},\n\t\t{ModelName: \"moonshotai/Kimi-Dev-72B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"tencent/Hunyuan-A13B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"baidu/ERNIE-4.5-300B-A47B\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"THUDM/GLM-4.1V-9B-Thinking\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/THUDM/GLM-4.1V-9B-Thinking\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"ascend-tribe/pangu-pro-moe\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"moonshotai/Kimi-K2-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Pro/moonshotai/Kimi-K2-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-235B-A22B-Instruct-2507\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-Coder-480B-A35B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t\t{ModelName: \"Qwen/Qwen3-235B-A22B-Thinking-2507\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"zai-org/GLM-4.5\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"zai-org/GLM-4.5-Air\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-30B-A3B-Instruct-2507\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-30B-A3B-Thinking-2507\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"Qwen/Qwen3-Coder-30B-A3B-Instruct\", Object: \"model\", Provider: consts.ModelProviderSiliconFlow, ModelType: consts.ModelTypeCoder},\n\t}\n}\n\n// 月之暗面模型\nfunc getMoonshotModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"moonshot-v1-auto\", Object: \"model\", Provider: consts.ModelProviderMoonshot, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"moonshot-v1-8k\", Object: \"model\", Provider: consts.ModelProviderMoonshot, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"moonshot-v1-32k\", Object: \"model\", Provider: consts.ModelProviderMoonshot, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"moonshot-v1-128k\", Object: \"model\", Provider: consts.ModelProviderMoonshot, ModelType: consts.ModelTypeChat},\n\t}\n\n}\n\n// getAzureOpenAIModels 返回Azure OpenAI模型列表\nfunc getAzureOpenAIModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"gpt-4\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-mini\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4o-nano\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-mini\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gpt-4.1-nano\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o1\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o1-mini\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o3\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o3-mini\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"o4-mini\", Object: \"model\", Provider: consts.ModelProviderAzureOpenAI, ModelType: consts.ModelTypeChat},\n\t}\n}\n\n// getGeminiModels 返回Google Gemini模型列表\nfunc getGeminiModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"gemini-2.5-pro\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.5-flash\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.5-flash-lite-preview-06-17\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.5-flash-preview-tts\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.5-pro-preview-tts\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.0-flash\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-2.0-flash-lite\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-1.5-flash\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-1.5-flash-8b\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-1.5-pro\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"gemini-embedding-001\", Object: \"model\", Provider: consts.ModelProviderGemini, ModelType: consts.ModelTypeEmbedding},\n\t}\n}\n\n// getZhiPuModels 返回智谱模型列表\nfunc getZhiPuModels() []ModelMetadata {\n\treturn []ModelMetadata{\n\t\t{ModelName: \"glm-4.5\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4.5-x\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"glm-4.5-air\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4.5-airx\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t{ModelName: \"glm-4.5-flash\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-plus\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-air-250414\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-airx\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-long\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-flashx-250414\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4-flash-250414\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-z1-air\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-z1-airx\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-z1-flashx\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-z1-flash\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeChat},\n\t\t// {ModelName: \"glm-4v-plus-0111\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeVision},\n\t\t// {ModelName: \"glm-4v-flash\", Object: \"model\", Provider: consts.ModelProviderZhiPu, ModelType: consts.ModelTypeVision},\n\t}\n}\n\nfunc initModels() {\n\tModels = make([]ModelMetadata, 0, 200)\n\n\tModels = append(Models, getBaiZhiCloudModels()...)\n\tModels = append(Models, getDeepSeekModels()...)\n\tModels = append(Models, getHunyuanModels()...)\n\tModels = append(Models, getBaiLianModels()...)\n\tModels = append(Models, getVolcengineModels()...)\n\tModels = append(Models, getOpenAIModels()...)\n\tModels = append(Models, getSiliconFlowModels()...)\n\tModels = append(Models, getMoonshotModels()...)\n\tModels = append(Models, getAzureOpenAIModels()...)\n\tModels = append(Models, getZhiPuModels()...)\n\tModels = append(Models, getGeminiModels()...)\n}\n"}}}} |