diff --git a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts index 9509de81ec..480cb17b3d 100644 --- a/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts +++ b/src/renderer/src/aiCore/clients/anthropic/AnthropicAPIClient.ts @@ -125,7 +125,7 @@ export class AnthropicAPIClient extends BaseApiClient< // @ts-ignore sdk未提供 override async getEmbeddingDimensions(): Promise { - return 0 + throw new Error("Anthropic SDK doesn't support getEmbeddingDimensions method.") } override getTemperature(assistant: Assistant, model: Model): number | undefined { diff --git a/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts b/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts index 2b1e2c4d31..7f08def6cc 100644 --- a/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts +++ b/src/renderer/src/aiCore/clients/gemini/GeminiAPIClient.ts @@ -147,15 +147,12 @@ export class GeminiAPIClient extends BaseApiClient< override async getEmbeddingDimensions(model: Model): Promise { const sdk = await this.getSdkInstance() - try { - const data = await sdk.models.embedContent({ - model: model.id, - contents: [{ role: 'user', parts: [{ text: 'hi' }] }] - }) - return data.embeddings?.[0]?.values?.length || 0 - } catch (e) { - return 0 - } + + const data = await sdk.models.embedContent({ + model: model.id, + contents: [{ role: 'user', parts: [{ text: 'hi' }] }] + }) + return data.embeddings?.[0]?.values?.length || 0 } override async listModels(): Promise { diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts index a44f25def8..cd03607c29 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIBaseClient.ts @@ -85,16 +85,13 @@ export abstract class OpenAIBaseClient< override async getEmbeddingDimensions(model: Model): Promise { const sdk = await this.getSdkInstance() - try { - const data = await sdk.embeddings.create({ - model: model.id, - input: model?.provider === 'baidu-cloud' ? ['hi'] : 'hi', - encoding_format: 'float' - }) - return data.data[0].embedding.length - } catch (e) { - return 0 - } + + const data = await sdk.embeddings.create({ + model: model.id, + input: model?.provider === 'baidu-cloud' ? ['hi'] : 'hi', + encoding_format: 'float' + }) + return data.data[0].embedding.length } override async listModels(): Promise { diff --git a/src/renderer/src/aiCore/index.ts b/src/renderer/src/aiCore/index.ts index f5e33ad34c..bcf360b7ae 100644 --- a/src/renderer/src/aiCore/index.ts +++ b/src/renderer/src/aiCore/index.ts @@ -114,7 +114,7 @@ export default class AiProvider { return dimensions } catch (error) { console.error('Error getting embedding dimensions:', error) - return 0 + throw error } } diff --git a/src/renderer/src/pages/knowledge/components/AddKnowledgePopup.tsx b/src/renderer/src/pages/knowledge/components/AddKnowledgePopup.tsx index 50c9c80fa1..c59c944415 100644 --- a/src/renderer/src/pages/knowledge/components/AddKnowledgePopup.tsx +++ b/src/renderer/src/pages/knowledge/components/AddKnowledgePopup.tsx @@ -116,7 +116,6 @@ const PopupContainer: React.FC = ({ title, resolve }) => { const aiProvider = new AiProvider(provider) values.dimensions = await aiProvider.getEmbeddingDimensions(selectedEmbeddingModel) } catch (error) { - console.error('Error getting embedding dimensions:', error) window.message.error(t('message.error.get_embedding_dimensions') + '\n' + getErrorMessage(error)) setLoading(false) return diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index 9c01723d47..e7cd409c46 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -570,10 +570,7 @@ export async function checkApi(provider: Provider, model: Model): Promise assistant.model = model try { if (isEmbeddingModel(model)) { - const result = await ai.getEmbeddingDimensions(model) - if (result === 0) { - throw new Error(i18n.t('message.error.enter.model')) - } + await ai.getEmbeddingDimensions(model) } else { const params: CompletionsParams = { callType: 'check',