feat(web-search): pass country and language params to Brave API
- Add country, search_lang, and ui_lang optional parameters to runWebSearch - Pass new parameters to Brave Search API as URL query parameters - Update cache key to include localization parameters - Wire parameters through createWebSearchTool execute function
This commit is contained in:
committed by
Peter Steinberger
parent
d163dbcfcd
commit
c4e1064066
@@ -307,8 +307,13 @@ async function runWebSearch(params: {
|
|||||||
timeoutSeconds: number;
|
timeoutSeconds: number;
|
||||||
cacheTtlMs: number;
|
cacheTtlMs: number;
|
||||||
provider: (typeof SEARCH_PROVIDERS)[number];
|
provider: (typeof SEARCH_PROVIDERS)[number];
|
||||||
|
country?: string;
|
||||||
|
search_lang?: string;
|
||||||
|
ui_lang?: string;
|
||||||
}): Promise<Record<string, unknown>> {
|
}): Promise<Record<string, unknown>> {
|
||||||
const cacheKey = normalizeCacheKey(`${params.provider}:${params.query}:${params.count}`);
|
const cacheKey = normalizeCacheKey(
|
||||||
|
`${params.provider}:${params.query}:${params.count}:${params.country || "default"}:${params.search_lang || "default"}:${params.ui_lang || "default"}`
|
||||||
|
);
|
||||||
const cached = readCache(SEARCH_CACHE, cacheKey);
|
const cached = readCache(SEARCH_CACHE, cacheKey);
|
||||||
if (cached) return { ...cached.value, cached: true };
|
if (cached) return { ...cached.value, cached: true };
|
||||||
|
|
||||||
@@ -320,6 +325,15 @@ async function runWebSearch(params: {
|
|||||||
const url = new URL(BRAVE_SEARCH_ENDPOINT);
|
const url = new URL(BRAVE_SEARCH_ENDPOINT);
|
||||||
url.searchParams.set("q", params.query);
|
url.searchParams.set("q", params.query);
|
||||||
url.searchParams.set("count", String(params.count));
|
url.searchParams.set("count", String(params.count));
|
||||||
|
if (params.country) {
|
||||||
|
url.searchParams.set("country", params.country);
|
||||||
|
}
|
||||||
|
if (params.search_lang) {
|
||||||
|
url.searchParams.set("search_lang", params.search_lang);
|
||||||
|
}
|
||||||
|
if (params.ui_lang) {
|
||||||
|
url.searchParams.set("ui_lang", params.ui_lang);
|
||||||
|
}
|
||||||
|
|
||||||
const res = await fetch(url.toString(), {
|
const res = await fetch(url.toString(), {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
@@ -451,6 +465,9 @@ export function createWebSearchTool(options?: {
|
|||||||
const query = readStringParam(params, "query", { required: true });
|
const query = readStringParam(params, "query", { required: true });
|
||||||
const count =
|
const count =
|
||||||
readNumberParam(params, "count", { integer: true }) ?? search?.maxResults ?? undefined;
|
readNumberParam(params, "count", { integer: true }) ?? search?.maxResults ?? undefined;
|
||||||
|
const country = readStringParam(params, "country");
|
||||||
|
const search_lang = readStringParam(params, "search_lang");
|
||||||
|
const ui_lang = readStringParam(params, "ui_lang");
|
||||||
const result = await runWebSearch({
|
const result = await runWebSearch({
|
||||||
query,
|
query,
|
||||||
count: resolveSearchCount(count, DEFAULT_SEARCH_COUNT),
|
count: resolveSearchCount(count, DEFAULT_SEARCH_COUNT),
|
||||||
@@ -458,6 +475,9 @@ export function createWebSearchTool(options?: {
|
|||||||
timeoutSeconds: resolveTimeoutSeconds(search?.timeoutSeconds, DEFAULT_TIMEOUT_SECONDS),
|
timeoutSeconds: resolveTimeoutSeconds(search?.timeoutSeconds, DEFAULT_TIMEOUT_SECONDS),
|
||||||
cacheTtlMs: resolveCacheTtlMs(search?.cacheTtlMinutes, DEFAULT_CACHE_TTL_MINUTES),
|
cacheTtlMs: resolveCacheTtlMs(search?.cacheTtlMinutes, DEFAULT_CACHE_TTL_MINUTES),
|
||||||
provider: resolveSearchProvider(search),
|
provider: resolveSearchProvider(search),
|
||||||
|
country,
|
||||||
|
search_lang,
|
||||||
|
ui_lang,
|
||||||
});
|
});
|
||||||
return jsonResult(result);
|
return jsonResult(result);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user