Add allow & blocklist for websearch (#651)
Browse files* Add allow & blocklist for websearch
* fix start whitespace
- .env +3 -0
- src/lib/server/websearch/generateQuery.ts +15 -1
.env
CHANGED
|
@@ -18,6 +18,9 @@ SERPER_API_KEY=#your serper.dev api key here
|
|
| 18 |
SERPAPI_KEY=#your serpapi key here
|
| 19 |
USE_LOCAL_WEBSEARCH=#set to true to parse google results yourself, overrides other API keys
|
| 20 |
|
|
|
|
|
|
|
|
|
|
| 21 |
# Parameters to enable open id login
|
| 22 |
OPENID_CONFIG=`{
|
| 23 |
"PROVIDER_URL": "",
|
|
|
|
| 18 |
SERPAPI_KEY=#your serpapi key here
|
| 19 |
USE_LOCAL_WEBSEARCH=#set to true to parse google results yourself, overrides other API keys
|
| 20 |
|
| 21 |
+
WEBSEARCH_ALLOWLIST=`[]` # if it's defined, allow websites from only this list.
|
| 22 |
+
WEBSEARCH_BLOCKLIST=`[]` # if it's defined, block websites from this list.
|
| 23 |
+
|
| 24 |
# Parameters to enable open id login
|
| 25 |
OPENID_CONFIG=`{
|
| 26 |
"PROVIDER_URL": "",
|
src/lib/server/websearch/generateQuery.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
| 1 |
import type { Message } from "$lib/types/Message";
|
| 2 |
import { format } from "date-fns";
|
| 3 |
import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
export async function generateQuery(messages: Message[]) {
|
| 6 |
const currentDate = format(new Date(), "MMMM d, yyyy");
|
|
@@ -61,8 +73,10 @@ Current Question: Where is it being hosted ?`,
|
|
| 61 |
},
|
| 62 |
];
|
| 63 |
|
| 64 |
-
|
| 65 |
messages: convQuery,
|
| 66 |
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}`,
|
| 67 |
});
|
|
|
|
|
|
|
| 68 |
}
|
|
|
|
| 1 |
import type { Message } from "$lib/types/Message";
|
| 2 |
import { format } from "date-fns";
|
| 3 |
import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint";
|
| 4 |
+
import { WEBSEARCH_ALLOWLIST, WEBSEARCH_BLOCKLIST } from "$env/static/private";
|
| 5 |
+
import { z } from "zod";
|
| 6 |
+
|
| 7 |
+
const listSchema = z.array(z.string()).default([]);
|
| 8 |
+
|
| 9 |
+
const allowList = listSchema.parse(JSON.parse(WEBSEARCH_ALLOWLIST));
|
| 10 |
+
const blockList = listSchema.parse(JSON.parse(WEBSEARCH_BLOCKLIST));
|
| 11 |
+
|
| 12 |
+
const queryModifier = [
|
| 13 |
+
...allowList.map((item) => "site:" + item),
|
| 14 |
+
...blockList.map((item) => "-site:" + item),
|
| 15 |
+
].join(" ");
|
| 16 |
|
| 17 |
export async function generateQuery(messages: Message[]) {
|
| 18 |
const currentDate = format(new Date(), "MMMM d, yyyy");
|
|
|
|
| 73 |
},
|
| 74 |
];
|
| 75 |
|
| 76 |
+
const webQuery = await generateFromDefaultEndpoint({
|
| 77 |
messages: convQuery,
|
| 78 |
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}`,
|
| 79 |
});
|
| 80 |
+
|
| 81 |
+
return (queryModifier + " " + webQuery).trim();
|
| 82 |
}
|