From 2a9b36f626503a94932f71454de061b93dd4bc6a Mon Sep 17 00:00:00 2001 From: Hk-Gosuto Date: Fri, 29 Dec 2023 19:00:01 +0800 Subject: [PATCH] feat: add wolframAlpha plugin --- README.md | 11 +++++++---- app/api/langchain/tool/agent/agentapi.ts | 13 +++++++++++-- app/plugins/cn.ts | 11 +++++++++++ app/plugins/en.ts | 11 +++++++++++ 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 771a9aa4f..45bf58baf 100644 --- a/README.md +++ b/README.md @@ -76,15 +76,18 @@ - DuckDuckGo - 计算 - - [Calculator](https://js.langchain.com/docs/api/tools_calculator/classes/Calculator) - + - [Calculator](https://api.js.langchain.com/classes/langchain_tools_calculator.Calculator.html) + - [WolframAlpha](https://api.js.langchain.com/classes/langchain_tools.WolframAlphaTool.html) + - 环境变量:`WOLFRAM_ALPHA_APP_ID` + - 申请地址:[Wolfram|Alpha Developer Portal](https://developer.wolframalpha.com/) + - 网络请求 - - [WebBrowser](https://js.langchain.com/docs/api/tools_webbrowser/classes/WebBrowser) + - [WebBrowser](https://api.js.langchain.com/classes/langchain_tools_webbrowser.WebBrowser.html) - PDFBrowser - ⚠ 仅在非 vercel 环境部署时可用 ⚠ - 其它 - - [Wiki](https://js.langchain.com/docs/api/tools/classes/WikipediaQueryRun) + - [Wiki](https://api.js.langchain.com/classes/langchain_tools.WikipediaQueryRun.html) - DALL-E 3 - DALL-E 3 插件需要配置对象存储服务,请参考 [对象存储服务配置指南](./docs/s3-oss.md) 配置 - 如无需图像转存则可以配置 `DALLE_NO_IMAGE_STORAGE=1` ,此时将直接将 DALL-E 服务返回的临时 URL 用于图像显示,注意:该链接具有时效性 diff --git a/app/api/langchain/tool/agent/agentapi.ts b/app/api/langchain/tool/agent/agentapi.ts index b66c0c80c..be571ca0d 100644 --- a/app/api/langchain/tool/agent/agentapi.ts +++ b/app/api/langchain/tool/agent/agentapi.ts @@ -16,7 +16,7 @@ import { ACCESS_CODE_PREFIX, ServiceProvider } from "@/app/constant"; import * as langchainTools from "langchain/tools"; import { HttpGetTool } from "@/app/api/langchain-tools/http_get"; import { DuckDuckGo } from "@/app/api/langchain-tools/duckduckgo_search"; -import { DynamicTool, Tool } from "langchain/tools"; +import { DynamicTool, Tool, WolframAlphaTool } from "langchain/tools"; import { BaiduSearch } from "@/app/api/langchain-tools/baidu_search"; import { GoogleSearch } from "@/app/api/langchain-tools/google_search"; import { useAccessStore } from "@/app/store"; @@ -282,6 +282,16 @@ export class AgentApi { var tool = langchainTools[ toolName as keyof typeof langchainTools ] as any; + if ( + toolName === "wolfram_alpha" && + process.env.WOLFRAM_ALPHA_APP_ID + ) { + const tool = new WolframAlphaTool({ + appid: process.env.WOLFRAM_ALPHA_APP_ID, + }); + tools.push(tool); + return; + } if (tool) { tools.push(new tool()); } @@ -387,7 +397,6 @@ export class AgentApi { [handler], ); - console.log("returning response"); return new Response(this.transformStream.readable, { headers: { "Content-Type": "text/event-stream" }, }); diff --git a/app/plugins/cn.ts b/app/plugins/cn.ts index d15cdc385..0cfb6e3e5 100644 --- a/app/plugins/cn.ts +++ b/app/plugins/cn.ts @@ -84,4 +84,15 @@ export const CN_PLUGINS: BuiltinPlugin[] = [ enable: false, onlyNodeRuntime: true, }, + { + name: "WolframAlphaTool", + toolName: "wolfram_alpha", + lang: "cn", + description: + "在需要回答有关数学、科学、技术、文化、社会和日常生活的问题时非常有用。", + builtin: true, + createdAt: 1703846656000, + enable: false, + onlyNodeRuntime: false, + }, ]; diff --git a/app/plugins/en.ts b/app/plugins/en.ts index 485e447ff..830b033be 100644 --- a/app/plugins/en.ts +++ b/app/plugins/en.ts @@ -87,4 +87,15 @@ export const EN_PLUGINS: BuiltinPlugin[] = [ enable: false, onlyNodeRuntime: true, }, + { + name: "WolframAlphaTool", + toolName: "wolfram_alpha", + lang: "en", + description: + "Useful for when you need to answer questions about Math, Science, Technology, Culture, Society and Everyday Life.", + builtin: true, + createdAt: 1703846656000, + enable: false, + onlyNodeRuntime: false, + }, ];