From d4ddcbfc5b04acb359dac4f114676792915d5b38 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Wed, 5 Feb 2025 20:35:25 +0800 Subject: [PATCH] feat: Enhance web search parameter handling for assistants #575 --- src/renderer/src/config/models.ts | 22 +++++++++++++------- src/renderer/src/providers/OpenAIProvider.ts | 2 +- src/renderer/src/providers/QwenLMProvider.ts | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 10479ec649..5cccaf4cf2 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -123,7 +123,7 @@ import WenxinModelLogoDark from '@renderer/assets/images/models/wenxin_dark.png' import YiModelLogo from '@renderer/assets/images/models/yi.png' import YiModelLogoDark from '@renderer/assets/images/models/yi_dark.png' import { getProviderByModel } from '@renderer/services/AssistantService' -import { Model } from '@renderer/types' +import { Assistant, Model } from '@renderer/types' import OpenAI from 'openai' import { getWebSearchTools } from './tools' @@ -1182,16 +1182,22 @@ export function isWebSearchModel(model: Model): boolean { return false } -export function getOpenAIWebSearchParams(model: Model): Record { +export function getOpenAIWebSearchParams(assistant: Assistant, model: Model): Record { if (isWebSearchModel(model)) { - const webSearchTools = getWebSearchTools(model) + if (assistant.enableWebSearch) { + const webSearchTools = getWebSearchTools(model) - if (model.provider === 'hunyuan') { - return { enable_enhancement: true } - } + if (model.provider === 'hunyuan') { + return { enable_enhancement: true } + } - return { - tools: webSearchTools + return { + tools: webSearchTools + } + } else { + if (model.provider === 'hunyuan') { + return { enable_enhancement: false } + } } } diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 1dfecea19e..525350a8e2 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -193,7 +193,7 @@ export default class OpenAIProvider extends BaseProvider { keep_alive: this.keepAliveTime, stream: isSupportStreamOutput(), reasoning_effort: this.getReasoningEffort(assistant, model), - ...(assistant.enableWebSearch ? getOpenAIWebSearchParams(model) : {}), + ...getOpenAIWebSearchParams(assistant, model), ...this.getProviderSpecificParameters(model), ...this.getCustomParameters(assistant) }) diff --git a/src/renderer/src/providers/QwenLMProvider.ts b/src/renderer/src/providers/QwenLMProvider.ts index f701bde10b..a313416e81 100644 --- a/src/renderer/src/providers/QwenLMProvider.ts +++ b/src/renderer/src/providers/QwenLMProvider.ts @@ -120,7 +120,7 @@ class QwenLMProvider extends OpenAIProvider { top_p: assistant?.settings?.topP, max_tokens: maxTokens, stream: true, - ...(assistant.enableWebSearch ? getOpenAIWebSearchParams(model) : {}), + ...getOpenAIWebSearchParams(assistant, model), ...this.getCustomParameters(assistant) })