From 8ab4a30b3f8c2082111e66e76c64a3e04c1f9a07 Mon Sep 17 00:00:00 2001 From: sxjeru Date: Sun, 2 Feb 2025 19:12:21 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20style:=20Check=20siliconcloud=20?= =?UTF-8?q?API-Key=20Balance=20=20(#5667)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update siliconcloud.ts * Update index.ts * Update index.ts * Update index.ts * Update index.ts --- src/config/modelProviders/siliconcloud.ts | 4 +-- src/libs/agent-runtime/siliconcloud/index.ts | 34 +++++++++++++++++++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/config/modelProviders/siliconcloud.ts b/src/config/modelProviders/siliconcloud.ts index f0d78c5e60586..0250075ff70e7 100644 --- a/src/config/modelProviders/siliconcloud.ts +++ b/src/config/modelProviders/siliconcloud.ts @@ -1,6 +1,6 @@ import { ModelProviderCard } from '@/types/llm'; -// ref :https://siliconflow.cn/zh-cn/pricing +// ref: https://siliconflow.cn/zh-cn/pricing const SiliconCloud: ModelProviderCard = { chatModels: [ { @@ -582,7 +582,7 @@ const SiliconCloud: ModelProviderCard = { vision: true, }, ], - checkModel: 'Qwen/Qwen2.5-7B-Instruct', + checkModel: 'Pro/Qwen/Qwen2-1.5B-Instruct', description: 'SiliconCloud,基于优秀开源基础模型的高性价比 GenAI 云服务', id: 'siliconcloud', modelList: { showModelFetcher: true }, diff --git a/src/libs/agent-runtime/siliconcloud/index.ts b/src/libs/agent-runtime/siliconcloud/index.ts index bf0bd65891b27..a4a574e8ea2c7 100644 --- a/src/libs/agent-runtime/siliconcloud/index.ts +++ b/src/libs/agent-runtime/siliconcloud/index.ts @@ -1,4 +1,5 @@ -import { ModelProvider } from '../types'; +import { AgentRuntimeErrorType } from '../error'; +import { ChatCompletionErrorPayload, ModelProvider } from '../types'; import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory'; import { LOBE_DEFAULT_MODEL_LIST } from '@/config/aiModels'; @@ -10,6 +11,33 @@ export interface SiliconCloudModelCard { export const LobeSiliconCloudAI = LobeOpenAICompatibleFactory({ baseURL: 'https://api.siliconflow.cn/v1', chatCompletion: { + handleError: (error: any): Omit | undefined => { + let errorResponse: Response | undefined; + if (error instanceof Response) { + errorResponse = error; + } else if ('status' in (error as any)) { + errorResponse = error as Response; + } + if (errorResponse) { + if (errorResponse.status === 401) { + return { + error: errorResponse.status, + errorType: AgentRuntimeErrorType.InvalidProviderAPIKey, + }; + } + + if (errorResponse.status === 403) { + return { + error: errorResponse.status, + errorType: AgentRuntimeErrorType.ProviderBizError, + message: '请检查 API Key 余额是否充足,或者是否在用未实名的 API Key 访问需要实名的模型。', + }; + } + } + return { + error, + }; + }, handlePayload: (payload) => { return { ...payload, @@ -20,6 +48,10 @@ export const LobeSiliconCloudAI = LobeOpenAICompatibleFactory({ debug: { chatCompletion: () => process.env.DEBUG_SILICONCLOUD_CHAT_COMPLETION === '1', }, + errorType: { + bizError: AgentRuntimeErrorType.ProviderBizError, + invalidAPIKey: AgentRuntimeErrorType.InvalidProviderAPIKey, + }, models: { transformModel: (m) => { const functionCallKeywords = [