feat(web_search): add optional model parameter for Perplexity provider
Allows runtime model override without config changes or gateway restart. - Add 'model' parameter to web_search tool schema - Override configured default when parameter is provided - Return error if used with non-Perplexity provider (Brave) Closes #2882
This commit is contained in:
parent
3fe4b2595a
commit
6fe931ace0
@ -63,6 +63,12 @@ const WebSearchSchema = Type.Object({
|
|||||||
"Filter results by discovery time (Brave only). Values: 'pd' (past 24h), 'pw' (past week), 'pm' (past month), 'py' (past year), or date range 'YYYY-MM-DDtoYYYY-MM-DD'.",
|
"Filter results by discovery time (Brave only). Values: 'pd' (past 24h), 'pw' (past week), 'pm' (past month), 'py' (past year), or date range 'YYYY-MM-DDtoYYYY-MM-DD'.",
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
model: Type.Optional(
|
||||||
|
Type.String({
|
||||||
|
description:
|
||||||
|
"Perplexity model to use (Perplexity provider only). Overrides the configured default. Examples: 'sonar', 'sonar-pro', 'sonar-reasoning'.",
|
||||||
|
}),
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
type WebSearchConfig = NonNullable<MoltbotConfig["tools"]>["web"] extends infer Web
|
type WebSearchConfig = NonNullable<MoltbotConfig["tools"]>["web"] extends infer Web
|
||||||
@ -450,6 +456,14 @@ export function createWebSearchTool(options?: {
|
|||||||
docs: "https://docs.molt.bot/tools/web",
|
docs: "https://docs.molt.bot/tools/web",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const modelOverride = readStringParam(params, "model");
|
||||||
|
if (modelOverride && provider !== "perplexity") {
|
||||||
|
return jsonResult({
|
||||||
|
error: "unsupported_model_override",
|
||||||
|
message: "model parameter is only supported by the Perplexity web_search provider.",
|
||||||
|
docs: "https://docs.molt.bot/tools/web",
|
||||||
|
});
|
||||||
|
}
|
||||||
const freshness = rawFreshness ? normalizeFreshness(rawFreshness) : undefined;
|
const freshness = rawFreshness ? normalizeFreshness(rawFreshness) : undefined;
|
||||||
if (rawFreshness && !freshness) {
|
if (rawFreshness && !freshness) {
|
||||||
return jsonResult({
|
return jsonResult({
|
||||||
@ -475,7 +489,7 @@ export function createWebSearchTool(options?: {
|
|||||||
perplexityAuth?.source,
|
perplexityAuth?.source,
|
||||||
perplexityAuth?.apiKey,
|
perplexityAuth?.apiKey,
|
||||||
),
|
),
|
||||||
perplexityModel: resolvePerplexityModel(perplexityConfig),
|
perplexityModel: modelOverride || resolvePerplexityModel(perplexityConfig),
|
||||||
});
|
});
|
||||||
return jsonResult(result);
|
return jsonResult(result);
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user