From d693d51201581127709b245af469521cab39bbe5 Mon Sep 17 00:00:00 2001 From: Hk-Gosuto Date: Mon, 7 Aug 2023 12:31:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0bing=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=8F=92=E4=BB=B6=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 ++++++++++++++---- app/api/langchain/tool/agent/route.ts | 10 +++++++- yarn.lock | 37 +++++++++++---------------- 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index c63cac3eb..5dca644a7 100644 --- a/README.md +++ b/README.md @@ -31,17 +31,28 @@ - 除插件工具外,与原项目保持一致 [ChatGPT-Next-Web 主要功能](https://github.com/Yidadaa/ChatGPT-Next-Web#主要功能) - 基于 [LangChain](https://github.com/hwchase17/langchainjs) 实现的插件功能,目前支持以下插件,未来会添加更多 - - [SerpAPI](https://js.langchain.com/docs/api/tools/classes/SerpAPI) - - [Calculator](https://js.langchain.com/docs/api/tools_calculator/classes/Calculator) - - DuckDuckGo - - HttpGet + - 搜索 + - [SerpAPI](https://js.langchain.com/docs/api/tools/classes/SerpAPI) + - [BingSerpAPI](https://js.langchain.com/docs/api/tools/classes/BingSerpAPI) + - DuckDuckGo + + - 计算 + - [Calculator](https://js.langchain.com/docs/api/tools_calculator/classes/Calculator) + + - 网络请求 + - HttpGet + ## 开发计划 - [x] 支持使用 DuckDuckGo 作为默认搜索引擎 - 当前配置 `SERPAPI_API_KEY` 时优先使用 `serpapi` 作为搜索插件,不配置时默认使用 `duckduckgo` 作为搜索插件。 + 当前配置 `SERPAPI_API_KEY` 时优先使用 `SerpAPI` 作为搜索插件,不配置时默认使用 `DuckDuckGo` 作为搜索插件。 + + 当前配置 `BING_SEARCH_API_KEY` 时优先使用 `BingSerpAPI` 作为搜索插件,不配置时默认使用 `DuckDuckGo` 作为搜索插件。 + + 优先级:`SerpAPI > BingSerpAPI > DuckDuckGo` - [ ] 插件列表页面开发 - [ ] 支持开关指定插件 @@ -126,6 +137,10 @@ Your openai api key. [SerpApi: Google Search API](https://serpapi.com/) +### `BING_SEARCH_API_KEY` (optional) + +[Web Search API | Microsoft Bing](https://www.microsoft.com/en-us/bing/apis/bing-web-search-api) + ### `CODE` (optional) Access passsword, separated by comma. diff --git a/app/api/langchain/tool/agent/route.ts b/app/api/langchain/tool/agent/route.ts index f659880a4..f67b9e0a3 100644 --- a/app/api/langchain/tool/agent/route.ts +++ b/app/api/langchain/tool/agent/route.ts @@ -6,6 +6,7 @@ import { ChatOpenAI } from "langchain/chat_models/openai"; import { BaseCallbackHandler } from "langchain/callbacks"; import { + BingSerpAPI, DynamicTool, RequestsGetTool, RequestsPostTool, @@ -145,7 +146,14 @@ async function handle(req: NextRequest) { }); let searchTool: Tool = new DuckDuckGo(); - if (process.env.SERPAPI_API_KEY) { + if (process.env.BING_SEARCH_API_KEY) { + let bingSearchTool = new BingSerpAPI(process.env.BING_SEARCH_API_KEY); + searchTool = new DynamicTool({ + name: "bing_search", + description: bingSearchTool.description, + func: async (input: string) => bingSearchTool.call(input), + }); + } else if (process.env.SERPAPI_API_KEY) { let serpAPITool = new SerpAPI(process.env.SERPAPI_API_KEY); searchTool = new DynamicTool({ name: "google_search", diff --git a/yarn.lock b/yarn.lock index 6f3287bec..a4cf1f95c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,9 +16,9 @@ "@jridgewell/trace-mapping" "^0.3.9" "@anthropic-ai/sdk@^0.5.7": - version "0.5.9" - resolved "https://registry.yarnpkg.com/@anthropic-ai/sdk/-/sdk-0.5.9.tgz#8a78f3a0558b2aee6572bab1f38f0c996999b985" - integrity sha512-9/TYca4qSe0xG40LLNf5vemybw5JAKF5OE6Eiyc+O+h3+VGGPeOKo+1SHaWBP5zS7bGX2o3Ne6EonPWyh9oNqA== + version "0.5.10" + resolved "https://registry.yarnpkg.com/@anthropic-ai/sdk/-/sdk-0.5.10.tgz#8cd0b68ac32c71e579b466a89ea30338f2165a32" + integrity sha512-P8xrIuTUO/6wDzcjQRUROXp4WSqtngbXaE4GpEu0PhEmnq/1Q8vbF1s0o7W07EV3j8zzRoyJxAKovUJtNXH7ew== dependencies: "@types/node" "^18.11.18" "@types/node-fetch" "^2.6.4" @@ -1526,14 +1526,14 @@ form-data "^3.0.0" "@types/node@*": - version "20.4.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" - integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== + version "20.4.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.8.tgz#b5dda19adaa473a9bf0ab5cbd8f30ec7d43f5c85" + integrity sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg== "@types/node@^18.11.18": - version "18.17.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.1.tgz#84c32903bf3a09f7878c391d31ff08f6fe7d8335" - integrity sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw== + version "18.17.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.3.tgz#409febdc84478b452306a8112c692e800ad9f6fe" + integrity sha512-2x8HWtFk0S99zqVQABU9wTpr8wPoaDHZUcAkoTKH+nL7kPv3WUI9cRi/Kk5Mz4xdqXSqTkKP7IWNoQQYCnDsTA== "@types/node@^20.3.3": version "20.3.3" @@ -1811,12 +1811,10 @@ acorn@^8.9.0: integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -2766,11 +2764,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - dequal@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -4269,9 +4262,9 @@ langchain@^0.0.114: zod-to-json-schema "^3.20.4" langsmith@~0.0.11: - version "0.0.16" - resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.0.16.tgz#5afdf6155ae58b8f99868b00cca575a25cb616ad" - integrity sha512-HD97KJaSpCcuixbjfRhpSFdo5rWz28OJiUVs5uBRZDKUN2Amg4PWd0NFzGO3xC8osnjPPRvgH9by6Ige79hjxQ== + version "0.0.19" + resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.0.19.tgz#10813120f69596975682197134e547a5ca753172" + integrity sha512-eqql2sv4LgLNuC0yFEeJ1Eh81KlvYeTwl3xuqUgzfox2/gCdiAi3BC0Lv/9+6hoV2yx/0krs2O4zRdnJYm6eow== dependencies: "@types/uuid" "^9.0.1" commander "^10.0.1"