大语言模型实战


本节主要调用ChatGPT模型和Qwen-1.8B模型进行对话要素抽取实战,通过修改提示信息内容,从医疗对话数据中抽取药品名称、药物类别、医疗检查、医疗操作、现病史、辅助检查、诊断结果和医疗建议等关键内容。


1. 基于GPT-3.5 API进行对话要素抽取官方调用文档:


https://platform.openai.com/docs/guides/text-

generation/chat-completions-api。

基于OpenAI的API官方调用文档 进行对话要素抽取,主要涉及如下步骤。

步骤1:设置OpenAI的API调用密钥。

步骤2:实例化OpenAI类,用于接口调用。

步骤3:输入提示词内容和对话内容。

步骤4:利用gpt-3.5-turbo-1106接口进行对话要素抽取。

 

其中,API调用密钥需要在官方文档中单击API keys按钮进入创建页面,再单击Create new secret key按钮生成一个API密钥,如图7-1所示。

 

调用GPT-3.5 API进行对话要素抽取命令如下,运行后如图7-2所示。

 

 

如图7-3所示,当输入提示词内容为“请针对下面对话内容抽取出药品名称、药物类别、医疗检查、医疗操作、现病史、辅助检查、诊断结果和医疗建议等内容,并且以JSON格式返回。”时,GPT-3.5的抽取效果并不理想。虽然抽取结果按照JSON格式返回,但是抽取内容存在错误内容,并对药品名称、医疗检查、医疗操作等内容抽取不完整。

根据提示词工程要求,从模型角色、任务、详细要求三个方面修改提示内容,设置提示词内容为“你现在是一个医疗对话要素抽取专家。\n请针对下面对话内容抽取出药品名称、药物类别、医疗检查、医疗操作、现病史、辅助检查、诊断结果和医疗建议等内容,并且以JSON格式返回,Key为上述待抽取的字段名称,Value为抽取出的文本内容。\n注意事项:(1)药品名称、药物类别、医疗检查和医疗操作的内容会在对话中存在多个,因此Value内容以List形式存放;若抽取内容为空,则为一个空的List;\n(2)抽取出的药品名称、药物类别、医疗检查和医疗操作对应内容,需要完全来自于原文,不可进行修改,内容不重复;\n(3)现病史、辅助检查、诊断结果和医疗建议的内容需要根据整个对话内容进行总结抽取,Value内容以Text形式存放。\n对话文本:\n”,抽取结果如图7-4所示。可以发现药品名称、医疗操作等内容抽取更加完整,且生成内容更加准确。

 

 

 

2. 基于Qwen-1.8B模型进行对话要素抽取


虽然GPT-3.5模型能够在仅微调提示词的情况下,有效地从医疗对话中提取关键要素,但是GPT-3.5模型在中国无法直接使用,也不支持本地部署,使用API调用的方式也会导致数据泄露风险。因此,可以采用开源模型来进行对话的要素抽取。本节将采用开源的Qwen-1.8B模型对医疗对话进行要素抽取实验。

基于Qwen-1.8B模型进行对话要素抽取,主要涉及如下步骤。

步骤1:实例化Qwen-1.8B模型以及Tokenizer。

步骤2:输入提示词内容和对话内容。

步骤3:利用Qwen-1.8B模型进行对话要素抽取。

 

调用Qwen-1.8B模型进行对话要素抽取命令如下,运行后如图7-5所示。

如图7-6所示,当输入提示词内容较为简单时,抽取结果可以按照JSON格式返回,但是抽取内容存在错误,且抽取结果存在一定的幻觉。

 

 

将提示词进行完善后,抽取结果如图7-7所示。可以发现Qwen-1.8B的模型并没有充分理解提示词内容,抽取结果依然不满足要求。