nsarrazin's picture
nsarrazin HF Staff
feat(models): Llama 3.1 support (#1355)
d947276 unverified
raw
history blame
962 Bytes
import type { BackendTool } from ".";
import vm from "node:vm";
const calculator: BackendTool = {
name: "query_calculator",
displayName: "Calculator",
description:
"A simple calculator, takes a string containing a mathematical expression and returns the answer. Only supports +, -, *, ** (power) and /, as well as parenthesis ().",
parameterDefinitions: {
equation: {
description:
"The formula to evaluate. EXACTLY as you would plug into a calculator. No words, no letters, only numbers and operators. Letters will make the tool crash.",
type: "formula",
required: true,
},
},
async *call(params) {
try {
const blocks = String(params.equation).split("\n");
const query = blocks[blocks.length - 1].replace(/[^-()\d/*+.]/g, "");
return {
outputs: [{ calculator: `${query} = ${vm.runInNewContext(query)}` }],
};
} catch (cause) {
throw Error("Invalid expression", { cause });
}
},
};
export default calculator;