ChatGPT-Next-Web/app/api/langchain-tools/wolframalpha.ts
2024-01-24 20:54:15 +08:00

34 lines
1.0 KiB
TypeScript

import { Tool } from "@langchain/core/tools";
export class WolframAlphaTool extends Tool {
name = "wolfram_alpha_llm";
description = `A wrapper around Wolfram Alpha. Useful for when you need to answer questions about Math, Science, Technology, Culture, Society and Everyday Life. Input should be a search query. If the result contains an image link, use the markdown syntax to return the image.`;
constructor() {
super();
}
async _call(query: string) {
const appid = process.env.WOLFRAM_ALPHA_APP_ID;
if (!appid) {
return "`WOLFRAM_ALPHA_APP_ID` Not configured";
}
const url = `https://www.wolframalpha.com/api/v1/llm-api?appid=${appid}&input=${encodeURIComponent(
query,
)}`;
console.log("[WolframAlphaTool]", url);
try {
const res = await fetch(url, {
method: "GET",
});
const resText = await res.text();
console.log(resText);
return resText;
} catch (ex) {
console.error("[WolframAlphaTool]", ex);
return "query error";
}
}
}