feat: 支持duckduckgo搜索插件

This commit is contained in:
Hk-Gosuto
2023-07-29 19:02:57 +08:00
parent be35b50940
commit 1d5e8a9cbf
5 changed files with 141 additions and 61 deletions

View File

@@ -0,0 +1,32 @@
import { SafeSearchType, search } from "duck-duck-scrape";
import { convert as htmlToText } from "html-to-text";
import { Tool } from "langchain/tools";
export class DuckDuckGo extends Tool {
name = "duckduckgo_search";
maxResults = 4;
/** @ignore */
async _call(input: string) {
const searchResults = await search(input, {
safeSearch: SafeSearchType.OFF,
});
if (searchResults.noResults) {
return "No good search result found";
}
const results = searchResults.results
.slice(0, this.maxResults)
.map(
({ title, description, url }) =>
`title:${title}\ncontent:${htmlToText(description)}\nurl:${url}`,
)
.join("\n\n");
return results;
}
description =
"a search engine. useful for when you need to answer questions about current events. input should be a search query.";
}