You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为JavaScript关键词匹配型聊天机器人添加简易计算器功能?

给JavaScript聊天机器人添加简易数学运算功能方案

嘿,这个需求挺实用的!咱们可以通过「识别数学表达式→安全计算→集成到现有逻辑」这三步来实现,下面是具体的落地代码和思路:

一、核心思路

聊天机器人需要先判断用户输入是否是数学计算题,提取合法的运算表达式后,安全计算结果并返回。重点要避免直接使用eval(),防止恶意输入带来的安全风险。

二、具体实现步骤

1. 编写表达式识别与安全计算函数

先写一个专门处理数学计算的函数,包含输入校验和安全计算逻辑:

function calculateMath(expr) {
  // 第一步:清理输入中的空格
  const cleanExpr = expr.replace(/\s+/g, '');
  
  // 第二步:严格校验输入合法性——只能包含数字、+、-、*、/、小数点
  const validRegex = /^(\d+(\.\d+)?)([\+\-\*\/](\d+(\.\d+)?))+$/;
  if (!validRegex.test(cleanExpr)) {
    return "抱歉,我目前只能处理包含+、-、*、/的纯数字计算题哦~";
  }

  try {
    // 用new Function替代eval,配合前面的校验,安全性更高
    const result = new Function(`return ${cleanExpr}`)();
    
    // 处理特殊情况:除以0或者非法计算结果
    if (isNaN(result) || !isFinite(result)) {
      return "哎呀,这个计算有问题哦——比如不能除以0哒😯";
    }

    // 可以给结果做个格式化,比如小数太多时保留两位
    const formattedResult = Number.isInteger(result) ? result : result.toFixed(2);
    return `计算结果是:${formattedResult}`;
  } catch (err) {
    return "抱歉,我暂时算不出这个结果,换个简单的试试?";
  }
}

2. 集成到聊天机器人的响应逻辑

把上面的函数嵌入到你现有的关键词识别流程里,优先判断是否是数学计算请求:

function getBotResponse(userInput) {
  // 先检查是否是数学计算题(只要包含数字+运算符就触发)
  const hasMathOperators = /[\d\+\-\*\/]/.test(userInput);
  if (hasMathOperators) {
    return calculateMath(userInput);
  }

  // 下面是你原来的关键词响应逻辑,保留即可
  if (userInput.includes("你好")) {
    return "哈喽哈喽😊";
  }
  if (userInput.includes("天气")) {
    return "抱歉,我还不会查天气呢😅";
  }
  // 其他关键词规则...

  return "我有点懵,能不能换个说法呀?";
}

3. 测试与优化

  • 测试正常场景:比如"10 + 5"、"3.5 * 4 - 2",应该返回正确结果
  • 测试异常场景:比如"10 / 0"、"2++3"、"abc+123",应该返回友好提示
  • 进阶优化:如果需要支持括号运算,可以调整正则为/^[\d\+\-\*\/\(\)\.]+$/,同时额外添加括号配对校验逻辑

内容的提问来源于stack exchange,提问作者coderino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:59:34