目前项目除我以外有四名成员,分别为:
- 青岛龙腾四海
- PKCR
- Alisa Hu
- 留学森
然后我们的任务分为以下几个步骤:
-
设计关键词提取模块:
- 这部分其实可以考虑直接设计提示词来实现,也可以通过采集数据集微调的方式来实现。设计提示词的话其实就是告诉大语言模型按照什么样的格式进行输出,然后测试确保大语言模型能够做到。微调的话其实就是采集关键词提取的数据集,采集数据的方法其实可以通过ChatGPT或者手工实现,然后通过Xtuner微调实现。
-
信息采集:
- 在获取到具体的关键词后,我们就可以考虑api或者搜索或者爬虫的方式来实现相关信息的采集工作。
-
信息筛选:
- 采集到的信息我们还需要将其一条条的分开,并且判断这部分的内容是否合适。判断是否合适也可以考虑使用提示词工程或者是微调一个模型来实现。
-
向量数据库存储:
- 确定了信息是合适的以后,我们可以将这部分信息存入到向量库当中直到完成搜索。
-
信息检索与整合:
- 然后我们可以利用问题在向量数据库中找到最匹配的前n条信息作为信息传入到大语言模型当中作为背景。
-
提示词模板设计:
- 最后我们还需要设计一套提示词,将向量数据库当中的信息、用户的提问、相关的一些案例演示等内容整合在一起,然后传给最终的大语言模型为我们生成一个完整的旅游路线规划。
-
额外项目 - 语气微调:
- 除了上面基础的内容以外,我们其实还可以考虑去微调一个语气很像真正旅游客服的大语言模型,让其为我们进行回复。当然这个也可以通过提示工程完成,但是通过微调的方式或许能够更加真实的进行扮演。
-
模型量化部署:
- 对微调好的模型进行量化部署,检验学习成果。
因此每个人安排的任务如下所示:
- 青岛龙腾四海:负责设计关键词提取部分。
- PKCR:负责信息筛选部分(判定是否和旅游话题相关即可)。
- Alisa Hu:负责语气微调的部分。
- 留学森:负责搭建基于Langchain的信息库系统并设计最终整合的提示词。
-
第一步:在网络上搜索关键词提取的相关数据集,假如有的话直接下载下来。并且查看一下数据集并进行简单处理(包括看看有没有不符合的)。 数据样例如下所示:
- 关键词提取:
- system: 你是一个...的机器人
- input: 北京三日游怎么规划安排
- output: 北京 三日游 旅游规划安排
- 信息筛选:
- system: 你是一个...的机器人
- input: xxx(一段文案)
- output: 0或者1(代表可以的和不可以的)
- 语气样例:
- system: 你是一个旅游客服...
- input: 请问北京三日游怎么走
- output: 亲爱的顾客您好,一般来说,北京三日游应该...(包括规划内容)
- 关键词提取:
-
第二步:假如没有找到数据集的话,就通过手工创建的方式。手工创建的话也不用一条条的手打,就是用ChatGPT又或者说其他能力比较强大的大语言模型让其来按照我们的格式完成数据。一次可能可以给你生成个几十一百条,对话多几轮的话就能够收集一部分的数据集。当然这部分的数据集也是需要二次查看确保数据的话还是好用的。以上所有的数据最终最好都用excel先行保存,后期可以通过脚本再转化为jsonl文件。
-
第三步:利用课程四提供的知识来对InternLM-7B-chat进行QLora或者Lora微调工作。
-
第四步:完成模型微调之后,我们其实还需要进行检验一下模型是否能够用。最好的方法当然是通过“人工”智能的方式实现,就是自己去对话看看效果如何。要是效果很差的话我们可以考虑增加数据量或者调整数据集的方式尝试。要是效果ok的话就进入下一步。
-
第五步:在完成微调过后,其实我们还可以尝试去对比一下设计提示词的方法。比如说我们和大语言模型说:请你作为一名语言学家,从以下句子中提取关键词。这一步其实可以尝试使用langchain并设置prompt_template然后一步步进行实现就ok。
-
第六步:可以尝试通过OpenCompass对模型进行检验(可选尝试步骤)。
-
第七步:使用LMDeploy对模型进行部署并在本地调用。