发布时间:2024 年 05 月 13 日
Agent应用
AgentClinic: a multimodal agent benchmark to evaluate AI in simulated clinical environments
诊断与治疗患者是一个复杂且连续的决策过程,医生需获取信息并据此行动。AI 和 LLMs 的进步是临床护理的福音,但现有评估多依赖静态问答,未能模拟实际的互动决策。为此,我们推出了 AgentClinic,一个多模态评估平台,让 LLMs 在模拟临床环境中扮演医生角色,通过对话和数据收集揭示病情。我们提供了两个环境:AgentClinic-NEJM 结合图像与对话,而 AgentClinic-MedQA 仅含对话。我们模拟了偏见,发现这不仅降低了诊断准确性,还影响了患者的合作意愿和信心。在评估顶级 LLMs 时,我们注意到在传统基准上表现优异的模型在 AgentClinic 中却表现不佳。我们发现,患者代理使用的 LLM 对性能有显著影响,且互动的次数需适度,过多或过少都会影响诊断准确性。所有相关代码和数据均已公开,网址为https://AgentClinic.github.io。
这篇论文值得大家关注,论文作者全部是来自斯坦福和约翰霍普金斯两所名校。
为什么要打造 AgentClinic
近几年AI,特别是大语言模型的发展突飞猛进,在短短的几年内就在美国的医学执照考试(USMLE)上超越了人类平均分,从2021年9月的38.1%飙升至2023年11月的90.2%(人类及格线为60%,专家分数为87%)。虽然这些模型的目的不是要取代专业医疗人士,但是他们却有望提升全球超过40%医疗资源匮乏人口的医疗水平,环节全球医疗系统压力。
尽管如此,这些基于LLM的系统在现实临床环境中的应用仍面临限制。最近,LLMs已证明能够编码临床知识、检索相关医学文献,以及进行精确的单轮医疗问答。然而,临床工作是一项涉及连续决策的复合任务,医生需要在信息有限、资源有限的情况下处理不确定性,同时还要同情地照顾患者并从他们那里获取相关信息。
这种能力在当前流行的静态多项选择评估中并未得到体现,这些评估通常以病例小故事的形式呈现所有必要信息,要求LLMs回答问题或选择最可能的答案。
所以在本篇论文中,作者推出了AgentClinic,一个开源的多模态代理基准测试平台,用于模拟临床环境。通过引入语言代理以及患者和医生代理,对先前工作进行了改进。通过与测量代理的互动,医生代理能够执行模拟的医疗检查(如体温、血压、心电图)并订购医学影像资料(如MRI、X光)。还支持代理展示临床环境中已知的24种不同偏见。此外,评估指标不仅关注诊断准确性,还特别强调患者代理,如患者遵从性和咨询评级。
什么是 AgentClinic?
AgentClinic是一个开源的多模态代理基准测试平台,用于模拟临床环境。
上图展示了如何构建与启动 AgentClinic 中的语言代理。
- • 左侧:代理由以下几部分构成:大语言模型、上下文、角色以及可能的偏见。这些元素的任意组合能够创造出无数独特的语言代理,在模拟诊所中扮演着各式各样的角色。-右侧:展示了 AgentClinic 基准测试中代理间的互动示例。
安装和使用
下载代码
git clone https://github.com/samuelschmidgall/agentclinic
安装
pip install -r requirements.txt
使用
parser.add_argument('--openai_api_key', type=str, required=True, help='OpenAI API Key')
parser.add_argument('--replicate_api_key', type=str, required=False, help='Replicate API Key')
parser.add_argument('--inf_type', type=str, choices=['llm', 'human_doctor', 'human_patient'], default='llm')
parser.add_argument('--doctor_bias', type=str, help='Doctor bias type', default='None', choices=["recency", "frequency", "false_consensus", "confirmation", "status_quo", "gender", "race", "sexual_orientation", "cultural", "education", "religion", "socioeconomic"])
parser.add_argument('--patient_bias', type=str, help='Patient bias type', default='None', choices=["recency", "frequency", "false_consensus", "self_diagnosis", "gender", "race", "sexual_orientation", "cultural", "education", "religion", "socioeconomic"])
parser.add_argument('--doctor_llm', type=str, default='gpt4', choices=['gpt4', 'gpt3.5', 'llama-2-70b-chat', 'mixtral-8x7b', 'gpt4o'])
parser.add_argument('--patient_llm', type=str, default='gpt4', choices=['gpt4', 'gpt3.5', 'mixtral-8x7b', 'gpt4o'])
parser.add_argument('--measurement_llm', type=str, default='gpt4', choices=['gpt4'])
parser.add_argument('--moderator_llm', type=str, default='gpt4', choices=['gpt4'])parser.add_argument('--num_scenarios', type=int, default=1, required=False, help='Number of scenarios to simulate')
语言代理
在 AgentClinic 包括了四个语言代理:患者代理、医生代理、测量代理和主持人代理。每位代理都拥有专属的指令和信息。医生代理是整个评估系统的主要对象,而其他三位代理则负责提供评估。
患者代理
患者代理掌握了一组症状和医疗历史信息,但对确切诊断一无所知。其角色是通过向医生代理提供症状信息并模仿真实患者的经历来与之互动。
测量代理
测量代理的职责是为患者提供基于其特定病情的真实医疗数据。允许医生代理请求对患者进行特定检查。测量代理根据情景模板中预期的特定病情患者的广泛检查结果进行配置。例如,急性心肌梗死患者可能在请求时提供如下检查结果:“心电图显示II、III和aVF导联ST段抬高,心脏标志物显示肌钙蛋白I和肌酸激酶MB均升高,胸部X光显示无肺充血,心脏大小正常”。又如,患有霍奇金淋巴瘤的患者可能展现出一系列异常的实验室参数(如血红蛋白、血小板、白细胞等)。
医生代理
医生代理是评估的主要对象。该代理最初只了解关于患者的基本信息以及一个简单目标(例如:“评估主诉胸痛、心悸和呼吸急促的患者”)。随后,他们被指示通过对话和数据收集来调查患者的症状,以得出诊断。为了模拟现实的限制,医生代理只能提出有限数量的问题。此外,医生代理还可以向测量代理请求检查结果,指定需要进行的检查项目(如胸部X光、心电图、血压)。当请求检查结果时,这也会计入剩余问题的数量。
主持人代理
主持人的职责是在会话结束时确定医生代理是否正确诊断了患者。这个代理至关重要,因为医生代理产生的诊断文本可能结构松散,需要适当解析以确定是否得出了正确结论 。例如,对于“2型糖尿病”的正确诊断,医生可能会以非结构化的对话形式回应:“综合考虑你的症状、血糖水平升高、尿液中葡萄糖和酮体的存在以及非自愿的体重减轻,我认为2型糖尿病的诊断,可能伴有胰岛素抵抗,是恰当的”,主持人必须判断这一诊断是否准确。这种评估在某些情况下可能更加复杂,比如在以下示例诊断中:“鉴于您的CT和血液检查结果,我认为肺栓塞是最合理的结论”,其中PE(肺栓塞)代表正确的诊断缩写。
效果测评
为了创建紧密结合医学实际情境的代理,精选了美国医学执照考试(USMLE)和新英格兰医学杂志(NEJM)案例挑战中的问题。在AgentClinic-MedQA中,首先从MedQA数据集中随机抽取107个问题,接着创建一个包含案例研究信息(如检查结果、患者病史)的结构化JSON格式文件,该文件作为输入提供给代理。
先利用大语言模型Agent应用(GPT-4)来生成这个结构化的JSON文件,然后手动校验每个案例场景。对于AgentClinic-NEJM,从NEJM案例挑战中精选了15个问题,并采用与AgentClinic-MedQA相同的模板格式进行处理。
模型对比
作者总共评估了四种模型:GPT-4、Mixtral-8x7B、GPT-3.5和Llama 2 70B-chat,这四个模型分别作为医生代理来进行与病人代理进行对话和诊断。为了保持一致性,作者使用了GPT-4作为病人Agent。在作出诊断前,医生代理和患者、测量Agent等之间进行20次交互。如下图所示,模型的准确率分别为:GPT-4为52%,GPT-3.5为38%,Mixtral-8x7B为37%,Llama 2 70B-chat为9%。
病人代理使用的模型是否影响诊断的准确性?
在AgentClinic-MedQA中比较了使用GPT-4、Mixtral和GPT-3.5作为患者代理模型时的差异。
当GPT-4作为医生Agent时,将患者代理由GPT-4替换为GPT-3.5时,诊断准确率会由52%下降到48%。如果患者代理替换为Mixtral,准确率会下降为46%。
对对话内容进行分析后,GPT-3.5患者代理更倾向于重复医生的问题。例如,在以下对话片段中:“医生:您是否经历过任何肌肉抽搐或痉挛?患者:不,我没有经历过任何肌肉抽搐或痉挛。”
相比之下,GPT-4患者代理在对话中会提供更多症状信息,如:“医生:在这些症状开始之前,您是否有过任何近期的感染,比如感冒或流感?患者:是的,在过去几个月里,我连续感冒了几次,还有一次胃病。”我们发现,GPT-4患者代理不仅会配合医生的询问,还更可能透露额外的症状信息,这可能有助于提高基于GPT-4的患者代理所展现的准确性。
当GPT-3.5作为医生Agent,患者代理由GPT-4替换为GPT3.5时,准确率由38%下降为37%。这可能与语言模型能以高准确度识别自己的文本,并倾向于偏好这些文本有关,意味着当医生代理和患者代理为同一大语言模型Agent应用时,会存在优势。
医生与患者Agent互动次数是否有影响?
AgentClinic-MedQA评估中可变的变量之一是医生代理的互动步数。在其他实验中,设定患者代理和医生代理之间的互动次数为N=20。在此设置下,医生和患者代理各有20次回应机会,总共产生40行对话。通过改变此数字,可以测试医生代理在面临时间限制(或时间充裕)时正确诊断患者代理的能力。
测试了将时间减少至N=10和N=15,以及增加至N=25和N=30。发现当N=20时准确率为52%,而当N=10时准确率大幅下降至25%,当N=15时为38%。这种准确性的大幅下降部分是因为医生代理可能由于信息不足而未能提供诊断。当N值增大至N=25和N=30时,准确率实际上从52%轻微下降至48%和43%。这可能是由于输入尺寸的增加,对语言模型来说可能较难处理。
在现实医疗环境中,有研究显示家庭医生平均会提出3.2个问题,并在不到2分钟内得出结论。值得注意的是,由于医生供应相对不足而需求较高(在美国),互动时间可能非常有限。
与此相反,部署的语言代理在与患者互动时,并不会受到时间的限制。因此,虽然限制互动时间为评估语言模型提供了一个有趣的场景,但探索当N值非常大时大语言模型Agent应用的准确性同样具有研究价值。
人类对话评价
AgentClinic 为大语言模型在医疗诊断应用领域提供了一种新的评估方式。然而,对话内容的真实性也是需要评估的,作者邀请了三位拥有医学学位的临床医师对 AgentClinic-MedQA 上的代理对话进行了评分,评分范围是1到10分,主要从四个维度进行考量:
- • 医生角色的真实性:医生在处理特定案例时的表现是否逼真。
- • 患者角色的真实性:患者对案例的演绎是否贴近实际。
- • 量准确性:测量阅读器所呈现的案例结果的精确度与真实度。
- • 同理心表现:医生代理在与患者代理交流时所展现的同理心。
评估结果显示,各维度的平均得分分别为:医生6.2分,患者6.7分,测量6.3分,同理心5.8分。
医生代理得分较低的原因包括开场陈述不佳、基础错误、过分关注某一诊断或缺乏勤勉。
对于患者代理,评论认为其过于啰嗦,并不必要地重复问题。
测量代理有时会遗漏某些测试的必要值(例如,“测量仅返回CBC的Hct和Lc,未返回因子VIII或IX水平/检测”)。
在同理心方面,医生代理采用中性语气,并未以开放性问题开始对话,而是直接切入主题,关注患者的症状和医疗史。
多模态环境中的诊断精确度
许多类型的诊断需要医生通过视觉检查患者,例如识别感染和皮疹。此外,像X光、CT和MRI这样的影像工具为医生提供了深入了解患者病情的途径,住院患者平均每次住院会接受1.42次诊断性影像检查。然而,本研究中之前的实验以及先前的研究仅通过文本提供测量结果,并未探索模型理解视觉上下文的能力。
在本实验中,我们评估了两种多模态大语言模型,GPT-4-turbo和GPT-4-vision-preview,在需要通过对话和理解图像阅读进行互动的诊断环境中的表现。
当图像最初提供给医生代理时,在15个多模态患者设置中,发现GPT-4-turbo和GPT-4-vision-preview的准确率达到27%(见上图)。还发现,GPT-4-turbo提供的不正确答案中,有60%实际上已包含在多项选择选项中。尽管准确率相同,GPT-4-vision-preview相较于GPT-4-turbo在提供错误答案时显得更为谨慎——意味着GPT-4-vision-preview在错误回答时显得不那么自信。
当图像根据仪器代理的请求提供时,发现GPT-4-turbo的准确率降至20%,而GPT-4-vision-preview降至13%。在46%的互动中,图像仅在仪器阅读器的请求下被获取,这可能是导致准确率下降的主要因素之一。
-
• 论文原文: https://arxiv.org/abs/2405.07960
-
• 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!
-
• 加入社群,+v: iamxxn886
-
• 公众号回复关键词获取论文原文:2405.07960