From aba702c51bdfa9ad8a3961b392872f4eeeb6e7ab Mon Sep 17 00:00:00 2001 From: HadiCherkaoui Date: Fri, 28 Feb 2025 15:50:59 +0100 Subject: [PATCH] make it possible to configure multiple engines --- sample.config.toml | 7 ++++++- src/chains/imageSearchAgent.ts | 4 ++-- src/chains/videoSearchAgent.ts | 4 ++-- src/config.ts | 18 ++++++++++++++++-- src/routes/discover.ts | 4 ++-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/sample.config.toml b/sample.config.toml index 1c37239..c0d41be 100644 --- a/sample.config.toml +++ b/sample.config.toml @@ -2,7 +2,12 @@ PORT = 3001 # Port to run the server on SIMILARITY_MEASURE = "cosine" # "cosine" or "dot" KEEP_ALIVE = "5m" # How long to keep Ollama models loaded into memory. (Instead of using -1 use "-1m") -SEARCH_ENGINE_BACKEND = "searxng" # "google" | "searxng" | "bing" | "brave" | "yacy" + +[SEARCH_ENGINE_BACKENDS] # "google" | "searxng" | "bing" | "brave" | "yacy" +SEARCH = "searxng" +IMAGE = "searxng" +VIDEO = "searxng" +NEWS = "searxng" [KEYCLOAK] URL = "" diff --git a/src/chains/imageSearchAgent.ts b/src/chains/imageSearchAgent.ts index b2c4155..f1043ce 100644 --- a/src/chains/imageSearchAgent.ts +++ b/src/chains/imageSearchAgent.ts @@ -12,7 +12,7 @@ import { searchGooglePSE } from '../lib/searchEngines/google_pse'; import { searchBraveAPI } from '../lib/searchEngines/brave'; import { searchYaCy } from '../lib/searchEngines/yacy'; import { searchBingAPI } from '../lib/searchEngines/bing'; -import { getSearchEngineBackend } from '../config'; +import { getImageSearchEngineBackend } from '../config'; import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; const imageSearchChainPrompt = ` @@ -42,7 +42,7 @@ type ImageSearchChainInput = { }; async function performImageSearch(query: string) { - const searchEngine = getSearchEngineBackend(); + const searchEngine = getImageSearchEngineBackend(); let images = []; switch (searchEngine) { diff --git a/src/chains/videoSearchAgent.ts b/src/chains/videoSearchAgent.ts index 5bff63d..37f6a5b 100644 --- a/src/chains/videoSearchAgent.ts +++ b/src/chains/videoSearchAgent.ts @@ -11,7 +11,7 @@ import { searchSearxng } from '../lib/searchEngines/searxng'; import { searchGooglePSE } from '../lib/searchEngines/google_pse'; import { searchBraveAPI } from '../lib/searchEngines/brave'; import { searchBingAPI } from '../lib/searchEngines/bing'; -import { getSearchEngineBackend } from '../config'; +import { getVideoSearchEngineBackend } from '../config'; import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; const VideoSearchChainPrompt = ` @@ -43,7 +43,7 @@ type VideoSearchChainInput = { const strParser = new StringOutputParser(); async function performVideoSearch(query: string) { - const searchEngine = getSearchEngineBackend(); + const searchEngine = getVideoSearchEngineBackend(); const youtubeQuery = `${query} site:youtube.com`; let videos = []; diff --git a/src/config.ts b/src/config.ts index 5d41df2..549cb05 100644 --- a/src/config.ts +++ b/src/config.ts @@ -9,8 +9,13 @@ interface Config { PORT: number; SIMILARITY_MEASURE: string; KEEP_ALIVE: string; - SEARCH_ENGINE_BACKEND: string; }; + SEARCH_ENGINE_BACKENDS: { + SEARCH: string; + IMAGE: string; + VIDEO: string; + NEWS: string; + } KEYCLOAK: { URL: string; REALM: string; @@ -83,7 +88,16 @@ export const getAnthropicApiKey = () => loadConfig().MODELS.ANTHROPIC.API_KEY; export const getGeminiApiKey = () => loadConfig().MODELS.GEMINI.API_KEY; export const getSearchEngineBackend = () => - loadConfig().GENERAL.SEARCH_ENGINE_BACKEND; + loadConfig().SEARCH_ENGINE_BACKENDS.SEARCH; + +export const getImageSearchEngineBackend = () => + loadConfig().SEARCH_ENGINE_BACKENDS.IMAGE || getSearchEngineBackend(); + +export const getVideoSearchEngineBackend = () => + loadConfig().SEARCH_ENGINE_BACKENDS.VIDEO || getSearchEngineBackend(); + +export const getNewsSearchEngineBackend = () => + loadConfig().SEARCH_ENGINE_BACKENDS.NEWS || getSearchEngineBackend(); export const getGoogleApiKey = () => loadConfig().SEARCH_ENGINES.GOOGLE.API_KEY; diff --git a/src/routes/discover.ts b/src/routes/discover.ts index 8206d38..c0b25b6 100644 --- a/src/routes/discover.ts +++ b/src/routes/discover.ts @@ -4,13 +4,13 @@ import { searchGooglePSE } from '../lib/searchEngines/google_pse'; import { searchBraveAPI } from '../lib/searchEngines/brave'; import { searchYaCy } from '../lib/searchEngines/yacy'; import { searchBingAPI } from '../lib/searchEngines/bing'; -import { getSearchEngineBackend } from '../config'; +import { getNewsSearchEngineBackend } from '../config'; import logger from '../utils/logger'; const router = express.Router(); async function performSearch(query: string, site: string) { - const searchEngine = getSearchEngineBackend(); + const searchEngine = getNewsSearchEngineBackend(); switch (searchEngine) { case 'google': { const googleResult = await searchGooglePSE(query);