【项目实训】新增根据关键词模糊查询大模型生成的相应公司的问题

为了完善项目,我们计划新增一个页面,以实现用户输入关键词,从而到数据库中模糊查询。

实现逻辑:用户输入关键词,选择公司,首先根据公司查询该公司的高频考点,(如果用户没有选择公司,则不匹配公司名称,自动匹配关键词即可),查询到高频考点后,进入大模型生成的问题的表llmquestion中,模糊查询问题,从而在前端显示该公司对应于该关键词可能提问的问题,以供用户参考。

更新数据库

首先导入已经保存好的大模型的对于各个公司的面试问题的总结,依次导入,由于保存在了txt文件中,并且只保存了问题,未设置company字段保存company,所以在导入数据库之后需要对company字段进行更新
如图:
在这里插入图片描述
最终得到数据库中结果如图:
在这里插入图片描述

编写后端函数,返回前端需要的数据

根据前端需要的逻辑,编写代码,代码如下:

def showLLMQuestion():
    if request.method == "POST":
        company_list = request.json['data']['company']
        keyword = request.json['data']['keyword']

    sql = Database("xmsx")
    try:
        # 首如果前端没有选择公司:则默认只匹配关键词
        if company_list:
            # 如果前端传递了公司名,并且是一个列表
            company_conditions = " OR ".join([f"company LIKE '%{company}%'" for company in company_list])
            # 从词频表中选择前10个高频关键词
            keyword_list = sql.execute(
            f"SELECT keyword FROM keyword WHERE {company_conditions} ORDER BY frequence DESC LIMIT 10")
            # 模糊匹配高频关键字
            keywords = [keyword[0] for keyword in keyword_list]
            keyword_conditions = " OR ".join([f"question LIKE '%{keyword}%'" for keyword in keywords])
            sql_query = f"SELECT question FROM llmquestion WHERE ({company_conditions}) AND (question LIKE '%{keyword}%' OR {keyword_conditions} ) "
        else:
            sql_query = f"SELECT question FROM llmquestion WHERE question LIKE '%{keyword}%'"
        result = sql.execute(sql_query)
        print(result)  # 调试信息:打印查询结果
    except Exception as e:
        print(e)  # 调试信息:打印异常信息
        return jsonify({'status': "error", 'message': "code error"})
    else:
        if not len(result) == 0:
            return jsonify({'questions': [result[0], result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9]]});
        else:
            return {'status': 'success', 'questions': '无'}

编写前端函数

  • 首先编写getDataOut.py,增加代码如下:
export const getLLMQuestion = params =>{
    return request.post("/getLLMQuestion",{
        data:params
    }).then(res=>res)
}
  • 其次,在前端vue文件中如下调用函数:
      let params = {
        company_list = this.currentCompany,
        keywords = this.keyword
      };
       let ret = false;
       try {
         let res = await getLLMQuestion(params);
         console.log(res);
         if (res.title !== "无") {
           this.currentData = {
             result: res.questions,
           };
           ret = true;
           // this.$message("获得面经");
         } else {
           this.$message("暂时还没有该部分的信息哦");
         }
       } catch (error) {
        console.error(error);
    }
    return ret;
    },

从而可以进行正常通信。

综上,我们就实现了前后端交互的数据可视化页面的展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值