Add support for websearch retries (#318)
Browse files* web search retries
* remove test error lol
src/lib/components/OpenWebSearchResults.svelte
CHANGED
|
@@ -13,7 +13,7 @@
|
|
| 13 |
|
| 14 |
let detailsOpen: boolean;
|
| 15 |
let error: boolean;
|
| 16 |
-
$: error = webSearchMessages.
|
| 17 |
</script>
|
| 18 |
|
| 19 |
<details
|
|
|
|
| 13 |
|
| 14 |
let detailsOpen: boolean;
|
| 15 |
let error: boolean;
|
| 16 |
+
$: error = webSearchMessages[webSearchMessages.length - 2]?.type === "error";
|
| 17 |
</script>
|
| 18 |
|
| 19 |
<details
|
src/routes/conversation/[id]/web-search/+server.ts
CHANGED
|
@@ -58,9 +58,9 @@ export async function GET({ params, locals, url }) {
|
|
| 58 |
updatedAt: new Date(),
|
| 59 |
};
|
| 60 |
|
| 61 |
-
function appendUpdate(message: string, args?: string[]) {
|
| 62 |
webSearch.messages.push({
|
| 63 |
-
type: "update",
|
| 64 |
message,
|
| 65 |
args,
|
| 66 |
});
|
|
@@ -91,12 +91,20 @@ export async function GET({ params, locals, url }) {
|
|
| 91 |
text = webSearch.knowledgeGraph;
|
| 92 |
appendUpdate("Found a Google knowledge page");
|
| 93 |
} else if (webSearch.results.length > 0) {
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
} else {
|
| 101 |
throw new Error("No results found for this search query");
|
| 102 |
}
|
|
|
|
| 58 |
updatedAt: new Date(),
|
| 59 |
};
|
| 60 |
|
| 61 |
+
function appendUpdate(message: string, args?: string[], type?: "error" | "update") {
|
| 62 |
webSearch.messages.push({
|
| 63 |
+
type: type ?? "update",
|
| 64 |
message,
|
| 65 |
args,
|
| 66 |
});
|
|
|
|
| 91 |
text = webSearch.knowledgeGraph;
|
| 92 |
appendUpdate("Found a Google knowledge page");
|
| 93 |
} else if (webSearch.results.length > 0) {
|
| 94 |
+
let tries = 0;
|
| 95 |
+
|
| 96 |
+
while (!text && tries < 3) {
|
| 97 |
+
const searchUrl = webSearch.results[tries];
|
| 98 |
+
appendUpdate("Browsing result", [JSON.stringify(searchUrl)]);
|
| 99 |
+
try {
|
| 100 |
+
text = await parseWeb(searchUrl);
|
| 101 |
+
if (!text) throw new Error("text of the webpage is null");
|
| 102 |
+
} catch (e) {
|
| 103 |
+
appendUpdate("Error parsing webpage", [], "error");
|
| 104 |
+
tries++;
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
if (!text) throw new Error("No text found on the first 3 results");
|
| 108 |
} else {
|
| 109 |
throw new Error("No results found for this search query");
|
| 110 |
}
|