【项目实训】用大模型实现信息抽取

前面我都是使用的传统方法从简历中抽取信息,我转念一想,反正都要使用大模型,我干脆直接用大模型来做信息抽取

在后端编写接口,因为我们的大模型是部署在云服务器上的,所以需要在后端向云服务器发送请求。

整体流程如下:

  1. 根据前端传来的文件,用前文的方法提取所有的文字。
  2. 利用文本构建Prompt,让大模型从文本中提取出我们想要的部分(比如这里是建立中的项目经历部分)。
  3. 然后再用提取到的信息,重新构建Prompt,让大模型针对性提出面试问题。
@app.route('/upload_file', methods=['POST'])
def upload_file():
    job = request.form.get('job')
    company = request.form.get('company')
    interview = request.form.get('interview')
    f = request.files.get('file')
    # 如果文件不存在
    if f is None or f.filename == '':
        return jsonify({'code': 400, 'message': 'No file part in the request'}), 400
    # 保存文件
    fname = secure_filename(f.filename)  # 使用secure_filename来避免安全问题
    file_path = fname  # 这不是一个完整的路径,只是一个文件名
    try:
        f.save(file_path)  # 使用f.save而不是手动打开和写入文件
    except Exception as e:
        return jsonify({'code': 500, 'message': f'Failed to save file: {str(e)}'}), 500
        # 项目经历
    text = pyMuPDF_fitz(file_path, './img_tmp')
    if interview == "技术面":
        prompt = f"这是我的简历{text},请提取出我的软件项目经历"
    else:
        prompt = f"这是我的简历{text},请提取出我的荣誉奖项,校园经历,个人评价"
    extracted = Turing2(prompt)
    question = f"你是{company}公司的面试官,我要面试{job}岗位,现在要进行{interview},这是我的简历相关信息{extracted},请你现在问5个面试问题,每个问题以问号结尾,确保每个问题一行"
    result = Turing(question)
    return jsonify({
        'code': 200,
        'result': result
    })

结果如下:

改进Prompt

上面的Prompt比较粗糙,不够规范,改进如下:

    text = pyMuPDF_fitz(file_path, './img_tmp')
    if interview == "技术面":
        prompt = f"从上文{text}中,提取"信息"(keyword,content),包括:"项目经历"类型的实体,输出json格式内容,字数不超过600字"
    else:
        prompt = f"从上文{text}中,提取"信息"(keyword,content),包括:"荣誉奖项"、"校园经历"、"个人评价"等类型的实体,输出json格式内容,字数不超过600字"
    extracted = Turing2(prompt)

这样改进之后,使用引号明确了需要输出的内容,大模型的输出更加明确,而且限制了输出格式和输出字数,输出结果更加规范工整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值