此笔记为逻辑推理task2 打卡笔记,本期task2主要任务是搞清楚baseline讲了些啥,为什么这样用。在此基础上优化代码,进一步上分。😎😎
大模型
大模型,也就是Large Language Model,缩写LLM,是我们这次比赛的关键法宝。它在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出来执行任务。
本次大模型推理采用的方法是提示工程(Prompt Engineering),它可以通过结构化文本等方式来完善提示词,引导LLM输出我们期望的结果。而我们这次使用了尚未微调的开源模型Qwen2-1.5b-instruct的api来完成赛题任务。
流程
我们的整体代码主要包括答案生成和纠错与结果文件生成两个大模块。
答案生成模块流程:
一.环境配置,我们需要配置相关环境来跑通代码。其中包括了安装需要的库;配置API;导入需要的环境。
二.大模型部分
使用call_qwen_api函数通过输入模型名称、prompt,完成大模型api调用。
使用api_retry函数保证每个问题都被大模型处理过,预防大模型调用api时可能会导致出错中断的问题。其中我们设定# 最大尝试次数5次 # 再次尝试等待时间 60秒。
使用get_prompt函数通过字符串处理的方式拼接完整的prompt。
三.抽取函数,通过抽取函数可以将大语言模型生成的结果抽取成答案对应的选项,这里的匹配原则和prompt呼应。
四.多线程处理
五.启动函数
图示为答案抽取和多线程处理过程
第二大部分主要是纠错与文件生成部分,对于一些空缺的问题,我们将统一填写A为答案。
图示为本次缺失的问题
可以发现task2过程中任有不少为回答的问题,大大影响了最后的得分。下一步我们会选择更优的模型,优化参数,达到更高的分数。
总结
相比task1,我们了解了baseline的基本原理和流程,同时给我们提供了接下来的上分方向。
个人感觉task2操作起来更熟练了,因为了解了相关的原理,不过相比task1,task2的代码运行时间明显更长了,我觉得可以适当精简优化