diff --git a/packages/adapter-deepseek/src/client.ts b/packages/adapter-deepseek/src/client.ts index e3af9e395..92ff0f555 100644 --- a/packages/adapter-deepseek/src/client.ts +++ b/packages/adapter-deepseek/src/client.ts @@ -73,12 +73,17 @@ export class DeepseekClient extends PlatformModelAndEmbeddingsClient { + const type = model.includes('deepseek') + ? ModelType.llm + : ModelType.embeddings + return { name: model, - type: model.includes('deepseek') - ? ModelType.llm - : ModelType.embeddings, - capabilities: [ModelCapabilities.ToolCall] + type, + capabilities: + type === ModelType.llm + ? [ModelCapabilities.ToolCall] + : [] } as ModelInfo }) } catch (e) { diff --git a/packages/adapter-doubao/src/client.ts b/packages/adapter-doubao/src/client.ts index 85aac5e6d..a024c257e 100644 --- a/packages/adapter-doubao/src/client.ts +++ b/packages/adapter-doubao/src/client.ts @@ -110,16 +110,18 @@ export class DouBaoClient extends PlatformModelAndEmbeddingsClient }) return expandedModels.map(([model, token]) => { + const type = model.includes('embedding') + ? ModelType.embeddings + : ModelType.llm + return { name: model, - type: model.includes('embedding') - ? ModelType.embeddings - : ModelType.llm, + type, maxTokens: token, capabilities: [ - unsupportedFunctionCallModels.includes(model) - ? undefined - : ModelCapabilities.ToolCall, + type === ModelType.llm && + !unsupportedFunctionCallModels.includes(model) && + ModelCapabilities.ToolCall, imageInputSupportModels.some((pattern) => model.match(pattern) ) diff --git a/packages/adapter-hunyuan/src/client.ts b/packages/adapter-hunyuan/src/client.ts index a9de5cad1..476c930dd 100644 --- a/packages/adapter-hunyuan/src/client.ts +++ b/packages/adapter-hunyuan/src/client.ts @@ -61,13 +61,16 @@ export class HunyuanClient extends PlatformModelAndEmbeddingsClient { + const type = model.includes('embedding') + ? ModelType.embeddings + : ModelType.llm + return { name: model, - type: model.includes('embedding') - ? ModelType.embeddings - : ModelType.llm, + type, maxTokens: token, - capabilities: [ModelCapabilities.ToolCall] + capabilities: + type === ModelType.llm ? [ModelCapabilities.ToolCall] : [] } as ModelInfo }) } diff --git a/packages/adapter-openai-like/src/client.ts b/packages/adapter-openai-like/src/client.ts index 8435f1776..da2c2675f 100644 --- a/packages/adapter-openai-like/src/client.ts +++ b/packages/adapter-openai-like/src/client.ts @@ -59,18 +59,27 @@ export class OpenAIClient extends PlatformModelEmbeddingsAndRerankerClient { : [] const additionalModels = this._config.additionalModels.map( - ({ model, modelType, contextSize, modelCapabilities }) => - ({ + ({ model, modelType, contextSize, modelCapabilities }) => { + const type = + modelType === 'Embeddings 嵌入模型' + ? ModelType.embeddings + : modelType === 'Reranker 重排序模型' + ? ModelType.reranker + : ModelType.llm + + return { name: model, - type: - modelType === 'Embeddings 嵌入模型' - ? ModelType.embeddings - : modelType === 'Reranker 重排序模型' - ? ModelType.reranker - : ModelType.llm, - capabilities: modelCapabilities, + type, + capabilities: + type === ModelType.llm + ? modelCapabilities + : modelCapabilities.filter( + (cap) => + cap !== ModelCapabilities.ToolCall + ), maxTokens: contextSize ?? 4096 - }) as ModelInfo + } as ModelInfo + } ) const filteredModels = rawModels.filter( @@ -109,18 +118,21 @@ export class OpenAIClient extends PlatformModelEmbeddingsAndRerankerClient { const id = model.toLowerCase() return !blacklist.some((keyword) => id.includes(keyword)) }) - .map( - (model) => - ({ - name: model, - type: isRerankerModel(model) - ? ModelType.reranker - : isEmbeddingModel(model) - ? ModelType.embeddings - : ModelType.llm, - ...supportToolCalling(model) - }) as ModelInfo - ) + .map((model) => { + const type = isRerankerModel(model) + ? ModelType.reranker + : isEmbeddingModel(model) + ? ModelType.embeddings + : ModelType.llm + + return { + name: model, + type, + ...(type === ModelType.llm + ? supportToolCalling(model) + : { capabilities: [] }) + } as ModelInfo + }) return additionalModels.concat( formattedModels.filter( diff --git a/packages/adapter-openai/src/client.ts b/packages/adapter-openai/src/client.ts index c73f9102a..43911ae4d 100644 --- a/packages/adapter-openai/src/client.ts +++ b/packages/adapter-openai/src/client.ts @@ -77,19 +77,20 @@ export class OpenAIClient extends PlatformModelAndEmbeddingsClient ) ) .map((model) => { + const type = model.includes('embedding') + ? ModelType.embeddings + : ModelType.llm + return { name: model, - type: model.includes('embedding') - ? ModelType.embeddings - : ModelType.llm, + type, capabilities: [ - ModelCapabilities.ToolCall, - supportImageInput(model) - ? ModelCapabilities.ImageInput - : undefined, - supportAudioInput(model) - ? ModelCapabilities.AudioInput - : undefined + type === ModelType.llm && + ModelCapabilities.ToolCall, + supportImageInput(model) && + ModelCapabilities.ImageInput, + supportAudioInput(model) && + ModelCapabilities.AudioInput ].filter(Boolean) } as ModelInfo }) diff --git a/packages/adapter-qwen/src/client.ts b/packages/adapter-qwen/src/client.ts index 4af9c3f24..2c7f8a780 100644 --- a/packages/adapter-qwen/src/client.ts +++ b/packages/adapter-qwen/src/client.ts @@ -141,35 +141,46 @@ export class QWenClient extends PlatformModelAndEmbeddingsClient { }) const additionalModels = this._config.additionalModels.map( - ({ model, modelType, contextSize, modelCapabilities }) => - ({ + ({ model, modelType, contextSize, modelCapabilities }) => { + const type = + modelType === 'Embeddings 嵌入模型' + ? ModelType.embeddings + : ModelType.llm + + return { name: model, - type: - modelType === 'Embeddings 嵌入模型' - ? ModelType.embeddings - : ModelType.llm, - capabilities: modelCapabilities, + type, + capabilities: + type === ModelType.llm + ? modelCapabilities + : modelCapabilities.filter( + (cap) => cap !== ModelCapabilities.ToolCall + ), maxTokens: contextSize ?? 4096 - }) as ModelInfo + } as ModelInfo + } ) return expandedModels .map(([model, token]) => { + const type = model.includes('embedding') + ? ModelType.embeddings + : ModelType.llm + return { name: model, - type: model.includes('embedding') - ? ModelType.embeddings - : ModelType.llm, + type, maxTokens: token, capabilities: [ - (model.includes('qwen-plus') || - model.includes('qwen-max') || - model.includes('qwen-turbo') || - model.includes('qwen3') || - model.includes('qwen2.5') || - model.includes('omni') || - model.includes('Kimi-K2') || - model.includes('deepseek')) && + type === ModelType.llm && + (model.includes('qwen-plus') || + model.includes('qwen-max') || + model.includes('qwen-turbo') || + model.includes('qwen3') || + model.includes('qwen2.5') || + model.includes('omni') || + model.includes('Kimi-K2') || + model.includes('deepseek')) && ModelCapabilities.ToolCall, imageInputSupportModels.some((pattern) => model.includes(pattern)