Spaces:
Paused
Paused
File size: 2,299 Bytes
770735d 0fc59f9 5b1a9aa 2c00ea8 bf75aa7 de36cdc 6655689 770735d f58e466 0fc59f9 6655689 de36cdc 6655689 de36cdc 6655689 1c78f33 6655689 0fc59f9 43606a3 0fc59f9 5b1a9aa 43606a3 59118b8 43606a3 0fc59f9 bf75aa7 1c78f33 bf75aa7 6d7dd9c 3f26498 770735d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import type { Message } from "$lib/types/Message";
import { format } from "date-fns";
import type { EndpointMessage } from "../../endpoints/endpoints";
import { generateFromDefaultEndpoint } from "../../generateFromDefaultEndpoint";
import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
import { taskModel } from "$lib/server/models";
import type { Tool } from "$lib/types/Tool";
import { getToolOutput } from "$lib/server/tools/getToolOutput";
export async function generateQuery(messages: Message[]) {
const currentDate = format(new Date(), "MMMM d, yyyy");
if (taskModel.tools) {
const webSearchTool = {
name: "web_search",
description: "Search the web for information",
inputs: [
{
name: "query",
type: "str",
description: "The query to search the web for",
paramType: "required",
},
],
} as unknown as Tool;
const endpoint = await taskModel.getEndpoint();
const query = await getToolOutput({
messages,
preprompt: `The user wants you to search the web for information. Give a relevant google search query to answer the question. Answer with only the query. Dont include any other description, comments, or anything else. Today is ${currentDate}`,
tool: webSearchTool,
endpoint,
});
if (query) {
return query;
}
}
const userMessages = messages.filter(({ from }) => from === "user");
const previousUserMessages = userMessages.slice(0, -1);
const lastMessage = userMessages.slice(-1)[0];
const convQuery: Array<EndpointMessage> = [
{
from: "user",
content:
(previousUserMessages.length > 0
? `Previous questions: \n${previousUserMessages
.map(({ content }) => `- ${content}`)
.join("\n")}`
: "") +
"\n\nCurrent Question: " +
lastMessage.content,
},
];
const webQuery = await getReturnFromGenerator(
generateFromDefaultEndpoint({
messages: convQuery,
preprompt: `The user wants you to search the web for information. Give a relevant google search query to answer the question. Answer with only the query. Dont include any other description, comments, or anything else. Today is ${currentDate}. The conversation follows: \n`,
generateSettings: {
max_new_tokens: 30,
},
})
);
return webQuery.trim().replace(/^"|"$/g, "");
}
|