refactor(aiCore): enhance temperature and TopP parameter handling

- Updated `getTemperature` and `getTopP` functions to incorporate reasoning effort checks for Claude models.
- Refactored logic to ensure temperature and TopP settings are only returned when applicable.
- Improved clarity and maintainability of parameter retrieval functions.
This commit is contained in:
MyPrototypeWhat 2025-08-29 15:06:34 +08:00
parent 2ca5116769
commit c9d0265872
4 changed files with 31 additions and 10 deletions

View File

@ -6,6 +6,7 @@
import { loggerService } from '@logger'
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
import {
isClaudeReasoningModel,
isGenerateImageModel,
isNotSupportTemperatureAndTopP,
isOpenRouterBuiltInWebSearchModel,
@ -44,15 +45,29 @@ const logger = loggerService.withContext('transformParameters')
/**
*
*/
export function getTemperature(assistant: Assistant, model: Model): number | undefined {
return isNotSupportTemperatureAndTopP(model) ? undefined : assistant.settings?.temperature
function getTemperature(assistant: Assistant, model: Model): number | undefined {
if (assistant.settings?.reasoning_effort && isClaudeReasoningModel(model)) {
return undefined
}
if (isNotSupportTemperatureAndTopP(model)) {
return undefined
}
const assistantSettings = getAssistantSettings(assistant)
return assistantSettings?.enableTemperature ? assistantSettings?.temperature : undefined
}
/**
* TopP
*/
export function getTopP(assistant: Assistant, model: Model): number | undefined {
return isNotSupportTemperatureAndTopP(model) ? undefined : assistant.settings?.topP
function getTopP(assistant: Assistant, model: Model): number | undefined {
if (assistant.settings?.reasoning_effort && isClaudeReasoningModel(model)) {
return undefined
}
if (isNotSupportTemperatureAndTopP(model)) {
return undefined
}
const assistantSettings = getAssistantSettings(assistant)
return assistantSettings?.enableTopP ? assistantSettings?.topP : undefined
}
/**
@ -372,7 +387,7 @@ export async function buildStreamTextParams(
if (assistant.prompt) {
params.system = assistant.prompt
}
console.log('params', params)
return {
params,
modelId: model.id,

View File

@ -77,7 +77,7 @@ export function buildProviderOptions(
case 'openai':
case 'azure':
providerSpecificOptions = {
...buildOpenAIProviderOptions(assistant, model, capabilities),
...buildOpenAIProviderOptions(assistant, model, capabilities, actualProvider),
serviceTier: serviceTierSetting
}
break
@ -126,7 +126,8 @@ function buildOpenAIProviderOptions(
enableReasoning: boolean
enableWebSearch: boolean
enableGenerateImage: boolean
}
},
actualProvider: Provider
): Record<string, any> {
const { enableReasoning } = capabilities
let providerOptions: Record<string, any> = {}
@ -139,6 +140,11 @@ function buildOpenAIProviderOptions(
}
}
if (actualProvider.id === 'azure') {
providerOptions.apiVersion = actualProvider.apiVersion
providerOptions.useDeploymentBasedUrls = true
}
return providerOptions
}

View File

@ -263,9 +263,9 @@ const HomeWindow: FC<{ draggable?: boolean }> = ({ draggable = true }) => {
}
newAssistant.settings.streamOutput = true
// 显式关闭这些功能
// newAssistant.webSearchProviderId = undefined
newAssistant.webSearchProviderId = undefined
newAssistant.mcpServers = undefined
// newAssistant.knowledge_bases = undefined
newAssistant.knowledge_bases = undefined
const llmMessages = await ConversationService.prepareMessagesForModel(messagesForContext, newAssistant)
await fetchChatCompletion({

View File

@ -63,7 +63,7 @@ export const processMessages = async (
// 显式关闭这些功能
newAssistant.webSearchProviderId = undefined
newAssistant.mcpServers = undefined
// newAssistant.knowledge_bases = undefined
newAssistant.knowledge_bases = undefined
const llmMessages = await ConversationService.prepareMessagesForModel([userMessage], newAssistant)
await fetchChatCompletion({