Spaces:
Build error
Build error
import type { Message } from "$lib/types/Message"; | |
import { format } from "date-fns"; | |
import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint"; | |
import { WEBSEARCH_ALLOWLIST, WEBSEARCH_BLOCKLIST } from "$env/static/private"; | |
import { z } from "zod"; | |
const listSchema = z.array(z.string()).default([]); | |
const allowList = listSchema.parse(JSON.parse(WEBSEARCH_ALLOWLIST)); | |
const blockList = listSchema.parse(JSON.parse(WEBSEARCH_BLOCKLIST)); | |
const queryModifier = [ | |
...allowList.map((item) => "site:" + item), | |
...blockList.map((item) => "-site:" + item), | |
].join(" "); | |
export async function generateQuery(messages: Message[]) { | |
const currentDate = format(new Date(), "MMMM d, yyyy"); | |
const userMessages = messages.filter(({ from }) => from === "user"); | |
const previousUserMessages = userMessages.slice(0, -1); | |
const lastMessage = userMessages.slice(-1)[0]; | |
const convQuery: Array<Omit<Message, "id">> = [ | |
{ | |
from: "user", | |
content: `Previous Questions: | |
- Who is the president of France? | |
Current Question: What about Mexico? | |
`, | |
}, | |
{ | |
from: "assistant", | |
content: "President of Mexico", | |
}, | |
{ | |
from: "user", | |
content: `Previous questions: | |
- When is the next formula 1 grand prix? | |
Current Question: Where is it being hosted ?`, | |
}, | |
{ | |
from: "assistant", | |
content: "location of next formula 1 grand prix", | |
}, | |
{ | |
from: "user", | |
content: "Current Question: What type of printhead does the Epson F2270 DTG printer use?", | |
}, | |
{ | |
from: "assistant", | |
content: "Epson F2270 DTG printer printhead", | |
}, | |
{ from: "user", content: "What were the news yesterday ?" }, | |
{ | |
from: "assistant", | |
content: `news ${format(new Date(Date.now() - 864e5), "MMMM d, yyyy")}`, | |
}, | |
{ from: "user", content: "What is the current weather in Paris ?" }, | |
{ from: "assistant", content: `weather in Paris ${currentDate}` }, | |
{ | |
from: "user", | |
content: | |
(previousUserMessages.length > 0 | |
? `Previous questions: \n${previousUserMessages | |
.map(({ content }) => `- ${content}`) | |
.join("\n")}` | |
: "") + | |
"\n\nCurrent Question:" + | |
lastMessage.content, | |
}, | |
]; | |
const webQuery = await generateFromDefaultEndpoint({ | |
messages: convQuery, | |
preprompt: `You are tasked with generating web search queries. Give me an appropriate query to answer my question for google search. Answer with only the query. Today is ${currentDate}`, | |
}); | |
return (queryModifier + " " + webQuery).trim(); | |
} | |