WebSearch: Add KoboldCpp search endpoint.

0441a8725f14892d4e3b5e3d4c67f94767bb6bc6

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +37 -0Showing whitespace changes
src/endpoints/search.js+37 -0
@@ -4,6 +4,8 @@ import express from 'express';
44import { decode } from 'html-entities';
55import { readSecret, SECRET_KEYS } from './secrets.js';
66import { jsonParser } from '../express-common.js';
7+import { trimV1 } from '../util.js';
8+import { setAdditionalHeaders } from '../additional-headers.js';
79
810export const router = express.Router();
911
@@ -257,6 +259,41 @@ router.post('/tavily', jsonParser, async (request, response) => {
257259 }
258260});
259261
262+router.post('/koboldcpp', jsonParser, async (request, response) => {
263+ try {
264+ const { query, url } = request.body;
265+
266+ if (!url) {
267+ console.error('No URL provided for KoboldCpp search');
268+ return response.sendStatus(400);
269+ }
270+
271+ console.debug('KoboldCpp search query', query);
272+
273+ const baseUrl = trimV1(url);
274+ const args = {
275+ method: 'POST',
276+ headers: {},
277+ body: JSON.stringify({ q: query }),
278+ };
279+
280+ setAdditionalHeaders(request, args, baseUrl);
281+ const result = await fetch(`${baseUrl}/api/extra/websearch`, args);
282+
283+ if (!result.ok) {
284+ const text = await result.text();
285+ console.error('KoboldCpp request failed', result.statusText, text);
286+ return response.status(500).send(text);
287+ }
288+
289+ const data = await result.json();
290+ return response.json(data);
291+ } catch (error) {
292+ console.error(error);
293+ return response.sendStatus(500);
294+ }
295+});
296+
260297router.post('/visit', jsonParser, async (request, response) => {
261298 try {
262299 const url = request.body.url;