Merge pull request #2861 from MoerAI/fix/category-config-params
fix(delegate-task): apply category config temperature/maxTokens/top_p to categoryModel (fixes #2831)
This commit is contained in:
@@ -12,8 +12,19 @@ import { buildFallbackChainFromModels, findMostSpecificFallbackEntry } from "../
|
|||||||
import { getAvailableModelsForDelegateTask } from "./available-models"
|
import { getAvailableModelsForDelegateTask } from "./available-models"
|
||||||
import { resolveModelForDelegateTask } from "./model-selection"
|
import { resolveModelForDelegateTask } from "./model-selection"
|
||||||
|
|
||||||
|
import type { CategoryConfig } from "../../config/schema"
|
||||||
import type { DelegatedModelConfig } from "./types"
|
import type { DelegatedModelConfig } from "./types"
|
||||||
|
|
||||||
|
function applyCategoryParams(base: DelegatedModelConfig, config: CategoryConfig): DelegatedModelConfig {
|
||||||
|
const result = { ...base }
|
||||||
|
if (config.temperature !== undefined) result.temperature = config.temperature
|
||||||
|
if (config.top_p !== undefined) result.top_p = config.top_p
|
||||||
|
if (config.maxTokens !== undefined) result.maxTokens = config.maxTokens
|
||||||
|
if (config.reasoningEffort !== undefined) result.reasoningEffort = config.reasoningEffort
|
||||||
|
if (config.thinking !== undefined) result.thinking = config.thinking
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
export interface CategoryResolutionResult {
|
export interface CategoryResolutionResult {
|
||||||
agentToUse: string
|
agentToUse: string
|
||||||
categoryModel: DelegatedModelConfig | undefined
|
categoryModel: DelegatedModelConfig | undefined
|
||||||
@@ -106,7 +117,7 @@ Available categories: ${allCategoryNames}`,
|
|||||||
const parsedModel = parseModelString(actualModel)
|
const parsedModel = parseModelString(actualModel)
|
||||||
const variantToUse = userCategories?.[args.category!]?.variant ?? resolved.config.variant
|
const variantToUse = userCategories?.[args.category!]?.variant ?? resolved.config.variant
|
||||||
categoryModel = parsedModel
|
categoryModel = parsedModel
|
||||||
? (variantToUse ? { ...parsedModel, variant: variantToUse } : parsedModel)
|
? applyCategoryParams({ ...parsedModel, variant: variantToUse }, resolved.config)
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -165,7 +176,7 @@ Available categories: ${allCategoryNames}`,
|
|||||||
const parsedModel = parseModelString(actualModel)
|
const parsedModel = parseModelString(actualModel)
|
||||||
const variantToUse = userCategories?.[args.category!]?.variant ?? resolvedVariant ?? resolved.config.variant
|
const variantToUse = userCategories?.[args.category!]?.variant ?? resolvedVariant ?? resolved.config.variant
|
||||||
categoryModel = parsedModel
|
categoryModel = parsedModel
|
||||||
? (variantToUse ? { ...parsedModel, variant: variantToUse } : parsedModel)
|
? applyCategoryParams({ ...parsedModel, variant: variantToUse }, resolved.config)
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -223,11 +234,11 @@ Available categories: ${categoryNames.join(", ")}`,
|
|||||||
categoryModel = {
|
categoryModel = {
|
||||||
...categoryModel,
|
...categoryModel,
|
||||||
variant: userCategories?.[args.category!]?.variant ?? effectiveEntry.variant ?? categoryModel.variant,
|
variant: userCategories?.[args.category!]?.variant ?? effectiveEntry.variant ?? categoryModel.variant,
|
||||||
reasoningEffort: effectiveEntry.reasoningEffort,
|
reasoningEffort: effectiveEntry.reasoningEffort ?? categoryModel.reasoningEffort,
|
||||||
temperature: effectiveEntry.temperature,
|
temperature: effectiveEntry.temperature ?? categoryModel.temperature,
|
||||||
top_p: effectiveEntry.top_p,
|
top_p: effectiveEntry.top_p ?? categoryModel.top_p,
|
||||||
maxTokens: effectiveEntry.maxTokens,
|
maxTokens: effectiveEntry.maxTokens ?? categoryModel.maxTokens,
|
||||||
thinking: effectiveEntry.thinking,
|
thinking: effectiveEntry.thinking ?? categoryModel.thinking,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user