教你用TextGrad在网页优化MedPrompt,一定要摒弃高级代码只能用程序运行的想法
上周我在TextGrad发布的第二天介绍了这个方法,晒衣服的数学题放倒一片SOTA模型,和DSPy互补的TextGrad:让Prompt梯度传播自动迭代优化很多朋友向我咨询这个方法的具体用法,上篇文章我介绍了用TextGrad代码解决数学问题,今天我将带着大家一起用网页交互对Prompt进行优化,Prompt选的是前段时间吴恩达教授推荐的Medprompt。
随着多个大型语言模型(LLMs)和其他复杂组件协同工作取得重大突破,开发合成AI系统的原则化自动优化方法成为当下最重要的新挑战之一。神经网络在早期也面临过类似的挑战,直到反向传播(Backpropagation)和自动微分(Automatic
Differentiation)的出现,彻底改变了这一领域,让优化变得简单易行。从最近的Prompt调查报告看:防骗| 连这些引用量最高的核心Prompt都不知道,还敢打着专家大师旗号蒙人
基于PyTorch等机器学习框架的Prompt会越来越多。受此启发,斯坦福大学的Mert Yuksekgonul等人推出了一个强大的框架TextGrad,通过文本实现自动"微分"。
TextGrad的核心思想是一个自动微分引擎,能够自动地优化包含LLM的复杂AI系统。类似于PyTorch等深度学习框架中的计算图(Computational
Graph),TextGrad将整个AI系统也表示成一个计算图。图中的每个节点代表一个变量,可以是LLM的输入提示、代码片段、分子结构等。节点之间由一系列复杂的函数(如LLM
API调用、模拟器等)连接。
正向计算时,这些函数依次作用于输入变量,最终得到一个损失函数值。反向传播时,梯度信号从损失节点出发,逐层向前传播到各个变量。与数值梯度不同的是,这里使用LLM生成的自然语言"梯度"来指导变量的更新,告诉我们如何修改一个变量才能优化整个系统。这些反馈通过任意函数(如LLM、模拟器等)进行传播。用户只需提供目标函数,无需调整框架的组件或提示,即可开箱即用。
PyTorch的核心特性之一就是自动微分。通过追踪张量(Tensor)的运算过程,Autograd可以自动计算梯度,实现反向传播。这极大地简化了模型优化的过程。
正如论文中所述:"我们使用微分和梯度作为文本反馈的隐喻。在这个框架中,每个AI系统都被转化为一个计算图,其中变量是复杂(不一定可微)函数调用的输入和输出。对变量的反馈(称为'文本梯度')以信息丰富且可解释的自然语言评论的形式提供;描述如何改变一个变量以改进系统。梯度通过任意函数(如LLM API调用、模拟器或外部数值求解器)传播。"
TextGrad在各种应用中展示了其有效性和通用性,从问答、分子优化到放射治疗计划等。例如,在Google-Proof问答中,无需修改框架,TextGrad就将GPT-4o的零样本精度从51%提高到55%;在优化LeetCode竞赛级别编程题的解决方案时,性能提升20%;通过优化提示提高了LLM的推理能力;设计出具有理想体外结合力的类药小分子;并设计出高特异性的放射肿瘤学治疗计划。
吴恩达强烈推荐研究微软的Medprompt,微调VS提示工程究竟哪个更有效
- 使用该向量从知识库中检索与之最相似的前几条问题的答案对。
我问一个{{domain}}=心理咨询的问题是:最近我总是感到焦虑和压力很大,不知道该怎么缓解,我该怎么办?
接下来我们用TextGrade的思想来优化这个提示
第一步:你要按照TextGrade的算法建立LLMcall函数的SYSTEM PROMPT(部分)
"""
您是优化系统的一部分,该系统改进给定的文本(即变量)。你是梯度(反馈)引擎。你唯一的责任是使用Janusian过程给予智能和创造性的反馈和建设性的批评变量,给定一个目标中指定的,思考替代答案是否为真------
"""
Janusian过程是一种创造性思维的方法,由心理学家Albert
Rothenberg提出。这个概念基于罗马神话中的双面神Janus,代表着对立面或相反事物的共存与整合。Janusian Process强调同时考虑相反或矛盾的观点,通过这种方式激发创新和创造性思维。您如果经常读我的文章,应该很容易发现这种流程。
第二步:把你需要优化的Prompt和大模型生成等内容再发给它,并让其生成改善后的变量IMPROVED_VARIBALE,注意这个过程就包含了作者提出的逆向传播。
第三步:根据FEEDBACK输出改进后的Prompt,以上两个过程可以不断迭代。以下是优化过的Prompt的运行结果。
即便是吴恩达推荐的MedPrompt也都可以有优化空间,这个TextGrad在自动化生成优质Prompt方面是有优势的,您需要特别考虑的是:针对不同模型的prompt优化的作用是什么?整个优化过程的Prompt截图在群里,等你来探讨。