forked from FlowiseAI/Flowise
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Searxng Tool implementation (FlowiseAI#2599)
* Searxng Tool implementation, first commit with most functionality * Fixed complains of pnpm lint * Picky linter
- Loading branch information
Showing
2 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
import { SearxngSearch } from '@langchain/community/tools/searxng_search' | ||
import { INode, INodeData, INodeParams } from '../../../src/Interface' | ||
import { getBaseClasses } from '../../../src/utils' | ||
|
||
class Searxng_Tools implements INode { | ||
label: string | ||
name: string | ||
version: number | ||
description: string | ||
type: string | ||
icon: string | ||
category: string | ||
baseClasses: string[] | ||
inputs: INodeParams[] | ||
|
||
constructor() { | ||
this.label = 'SearXNG' | ||
this.name = 'searXNG' | ||
this.version = 1.0 | ||
this.type = 'SearXNG' | ||
this.icon = 'SearXNG.svg' | ||
this.category = 'Tools' | ||
this.description = 'Wrapper around SearXNG - a free internet metasearch engine' | ||
this.inputs = [ | ||
{ | ||
label: 'Base URL', | ||
name: 'apiBase', | ||
type: 'string', | ||
default: 'http://searxng:8080' | ||
}, | ||
{ | ||
label: 'Categories', | ||
name: 'categories', | ||
description: | ||
'Comma separated list, specifies the active search categories. (see <a target="_blank" href="https://docs.searxng.org/user/configured_engines.html#configured-engines">Configured Engines</a>)', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'string' | ||
}, | ||
{ | ||
label: 'Engines', | ||
name: 'engines', | ||
description: | ||
'Comma separated list, specifies the active search engines. (see <a target="_blank" href="https://docs.searxng.org/user/configured_engines.html#configured-engines">Configured Engines</a>)', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'string' | ||
}, | ||
{ | ||
label: 'Language', | ||
name: 'language', | ||
description: 'Code of the language.', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'string' | ||
}, | ||
{ | ||
label: 'Page No.', | ||
name: 'pageno', | ||
description: 'Search page number.', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'number' | ||
}, | ||
{ | ||
label: 'Time Range', | ||
name: 'time_range', | ||
description: | ||
'Time range of search for engines which support it. See if an engine supports time range search in the preferences page of an instance.', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'string' | ||
}, | ||
{ | ||
label: 'Safe Search', | ||
name: 'safesearch', | ||
description: | ||
'Filter search results of engines which support safe search. See if an engine supports safe search in the preferences page of an instance.', | ||
optional: true, | ||
additionalParams: true, | ||
type: 'number' | ||
} | ||
] | ||
this.baseClasses = [this.type, ...getBaseClasses(SearxngSearch)] | ||
} | ||
|
||
async init(nodeData: INodeData, _: string): Promise<any> { | ||
const apiBase = nodeData.inputs?.apiBase as string | ||
const categories = nodeData.inputs?.categories as string | ||
const engines = nodeData.inputs?.engines as string | ||
const language = nodeData.inputs?.language as string | ||
const pageno = nodeData.inputs?.pageno as number | ||
const time_range = nodeData.inputs?.time_range as string | ||
const safesearch = nodeData.inputs?.safesearch as 0 | 1 | 2 | undefined | ||
const format = 'json' as 'json' | ||
|
||
const params = { | ||
format, | ||
categories, | ||
engines, | ||
language, | ||
pageno, | ||
time_range, | ||
safesearch | ||
} | ||
|
||
const headers = {} | ||
|
||
const tool = new SearxngSearch({ | ||
apiBase, | ||
params, | ||
headers | ||
}) | ||
|
||
return tool | ||
} | ||
} | ||
|
||
module.exports = { nodeClass: Searxng_Tools } |