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';
4import { decode } from 'html-entities';4import { decode } from 'html-entities';
5import { readSecret, SECRET_KEYS } from './secrets.js';5import { readSecret, SECRET_KEYS } from './secrets.js';
6import { jsonParser } from '../express-common.js';6import { jsonParser } from '../express-common.js';
7import { trimV1 } from '../util.js';
8import { setAdditionalHeaders } from '../additional-headers.js';
79
8export const router = express.Router();10export const router = express.Router();
911
@@ -257,6 +259,41 @@ router.post('/tavily', jsonParser, async (request, response) => {
257 }259 }
258});260});
259261
262router.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
260router.post('/visit', jsonParser, async (request, response) => {297router.post('/visit', jsonParser, async (request, response) => {
261 try {298 try {
262 const url = request.body.url;299 const url = request.body.url;