improve reasoning toggle tests and refactor model capability checks
This commit is contained in:
@@ -106,14 +106,16 @@ export function buildWebSearchQueries(message, decision = decideWebSearch(messag
|
||||
}
|
||||
|
||||
/** Retrieve before generation; only try a second date query when the first has no usable evidence. */
|
||||
export async function retrieveWebSearch(message, provider, {signal, onSearching = () => {}} = {}) {
|
||||
export async function retrieveWebSearch(message, provider, {signal, onSearching = () => {}, referenceText = ""} = {}) {
|
||||
const decision = decideWebSearch(message);
|
||||
if (!decision.shouldSearch) return {decision, state: "skipped", queries: [], candidates: [], sources: null};
|
||||
onSearching();
|
||||
const queries = [];
|
||||
let candidates = [];
|
||||
let sources = [];
|
||||
for (const query of buildWebSearchQueries(message, decision)) {
|
||||
// Image evidence may clarify "is this accurate?"; it must never alter the user's tool decision.
|
||||
const searchMessage = referenceText ? `${message} ${referenceText}` : message;
|
||||
for (const query of buildWebSearchQueries(searchMessage, decision)) {
|
||||
queries.push(query);
|
||||
try {
|
||||
const results = await provider.search(query, {
|
||||
@@ -125,7 +127,7 @@ export async function retrieveWebSearch(message, provider, {signal, onSearching
|
||||
const merged = [...results, ...candidates].sort((a, b) =>
|
||||
Number(Boolean(b?.snippet || b?.content)) - Number(Boolean(a?.snippet || a?.content)));
|
||||
candidates = normalizeSearchCandidates(merged, MAX_CANDIDATES * 2);
|
||||
sources = selectSearchResults(message, candidates, decision);
|
||||
sources = selectSearchResults(searchMessage, candidates, decision);
|
||||
if (sources.length) break;
|
||||
} catch (error) {
|
||||
if (signal?.aborted || queries.length === 1) throw error;
|
||||
|
||||
Reference in New Issue
Block a user