当前位置: 首页 > news >正文

LLMs Python解释器程序辅助语言模型(PAL)Program-aided language models (PAL)

正如您在本课程早期看到的,LLM执行算术和其他数学运算的能力是有限的。虽然您可以尝试使用链式思维提示来克服这一问题,但它只能帮助您走得更远。即使模型正确地通过了问题的推理,对于较大的数字或复杂的运算,它仍可能在个别数学操作上出错。这是您早些时候看到的一个示例,其中LLM试图像计算器一样工作,但得到了错误的答案。
在这里插入图片描述

请记住,这个模型实际上没有进行任何真正的数学运算。它只是尝试预测完成提示的最有可能的标记。模型在数学上出错可能会对您的用例产生许多负面影响,具体取决于您的用例,例如向客户收取错误的总额或获取食谱中的测量值不正确。

您可以通过允许您的模型与擅长数学的外部应用程序(例如Python解释器)进行交互来克服这一限制。一种有趣的增强LLM的框架是称为“辅助编程语言模型Program-aided language models ”(PAL)的程序。这项工作首次由卡内基梅隆大学的Luyu Gao和合作者于2022年提出,将LLM与外部代码解释器配对以执行计算。该方法利用链式思维提示来生成可执行的Python脚本。模型生成的脚本将传递给解释器以执行。右侧的图像来自论文,显示了一些示例提示和完成。
在这里插入图片描述

您稍后将在示例中了解这些示例,所以现在不必担心阅读所有细节。

PAL背后的策略是使LLM生成包含计算机代码的推理步骤的完成。然后将此代码传递给解释器以执行解决问题所需的计算。您可以通过在提示中包含一些单个或少量推理的示例来指定模型的输出格式。

让我们更详细地看一下这些示例提示的结构。

您将继续使用Roger购买网球的故事作为单次示例。此设置现在应该看起来很熟悉。这是一个链式思维示例。
您可以在突出显示为蓝色的行上以文字形式看到推理步骤。
在这里插入图片描述

与您之前看到的提示不同之处在于,粉红色显示的Python代码行包含了将涉及计算的推理步骤转化为代码的行。
在这里插入图片描述

基于每个推理步骤中的文本声明变量。它们的值可以直接分配,就像这里的第一行代码一样,
在这里插入图片描述

或者使用推理文本中的数字进行计算,正如您在第二行Python代码中看到的那样。
在这里插入图片描述

模型还可以使用它在其他步骤中创建的变量,就像您在第三行中看到的那样。
在这里插入图片描述

请注意,每个推理步骤的文本以井号(#)开始,以便Python解释器可以将其跳过作为注释。
在这里插入图片描述

这个提示以要解决的新问题结束。在这种情况下,目标是确定一个面包店在一天的销售后和从一家杂货店合作伙伴那里退回一些面包后剩下多少面包。
在这里插入图片描述

在右侧,您可以看到LLM生成的完成。再次,链式思维的推理步骤显示为蓝色,Python代码显示为粉红色。正如您所看到的,模型创建了多个变量来跟踪烘焙的面包、一天中各个时间段销售的面包
在这里插入图片描述

以及杂货店退回的面包。

在这里插入图片描述

然后通过在这些变量上执行算术运算来计算答案。
在这里插入图片描述

模型正确地确定了应该添加或减去哪些术语以获得正确的总数。

现在您知道如何构建示例,以告诉LLM根据其推理步骤编写Python脚本,让我们来看看PAL框架如何使LLM能够与外部解释器进行交互。
在这里插入图片描述

  1. 为了准备使用PAL进行推理,您将格式化提示以包含一个或多个示例。
  2. 每个示例应包含一个问题,后面是解决问题的Python代码行的推理步骤。
  3. 接下来,您将附加您希望回答的新问题到提示模板中。
  4. 您生成的PAL格式提示现在包含示例和要解决的问题。
  5. 接下来,您将传递此组合提示给您的LLM,
  6. 然后LLM将生成一个以示例中的提示为基础的Python脚本形式的完成。
    现在,您可以将脚本交给Python解释器,用于运行代码并生成答案。

在这里插入图片描述

对于前一幻灯片上看到的面包店示例脚本,答案是74。您现在将附加包含答案的文本,因为您知道答案是正确的,因为计算是在PAL格式的提示中进行的。到此为止,您的提示包含了上下文中的正确答案。
在这里插入图片描述

现在,当您将更新后的提示传递给LLM时,它将生成包含正确答案的完成。鉴于面包店面包问题中的数学相对简单,模型可能已经使用链式思维提示正确地得出了答案。

但是对于更复杂的数学问题,包括大数的算术、三角学或微积分,PAL是一种强大的技术,允许您确保您的应用程序执行的任何计算都是准确可靠的。

您可能想知道如何自动化此过程,以便不必手动在LLM和解释器之间传递信息。这就是您之前看到的编排器的用处。
在这里插入图片描述

所示的编排器作为黄色框是一个技术组件,可以管理信息流和对外部数据源或应用程序的调用的启动。它还可以根据LLM输出中包含的信息来决定采取什么行动。
在这里插入图片描述

请记住,LLM是您的应用程序的推理引擎。最终,它会创建编排器将解释和执行的计划。

在PAL中,只有一个要执行的操作,即执行Python代码。LLM实际上不必决定运行代码,它只需要编写脚本,然后编排器将其传递给外部解释器以运行。
在这里插入图片描述

但是,大多数现实世界的应用程序可能会比简单的PAL架构复杂得多。
在这里插入图片描述

您的用例可能需要与多个外部数据源进行交互。正如您在商店示例中看到的,您可能需要处理多个决策点、验证操作和对外部应用程序的调用。您如何使用LLM来支持更复杂的应用程序?让我们在下一个视频中探讨一种策略。

Reference

https://www.coursera.org/learn/generative-ai-with-llms/lecture/6jh5Z/program-aided-language-models-pal

相关文章:

LLMs Python解释器程序辅助语言模型(PAL)Program-aided language models (PAL)

正如您在本课程早期看到的,LLM执行算术和其他数学运算的能力是有限的。虽然您可以尝试使用链式思维提示来克服这一问题,但它只能帮助您走得更远。即使模型正确地通过了问题的推理,对于较大的数字或复杂的运算,它仍可能在个别数学操…...

【12】c++设计模式——>单例模式练习(任务队列)

属性: (1)存储任务的容器,这个容器可以选择使用STL中的队列(queue) (2)互斥锁,多线程访问的时候用于保护任务队列中的数据 方法:主要是对任务队列中的任务进行操作 &…...

Python之函数、模块、包库

函数、模块、包库基础概念和作用 A、函数 减少代码重复 将复杂问题代码分解成简单模块 提高代码可读性 复用老代码 """ 函数 """# 定义一个函数 def my_fuvtion():# 函数执行部分print(这是一个函数)# 定义带有参数的函数 def say_hello(n…...

SQL创建与删除索引

索引创建、删除与使用: 1.1 create方式创建索引:CREATE [UNIQUE – 唯一索引 | FULLTEXT – 全文索引 ] INDEX index_name ON table_name – 不指定唯一或全文时默认普通索引 (column1[(length) [DESC|ASC]] [,column2,…]) – 可以对多列建立组合索引 …...

网络协议--链路层

2.1 引言 从图1-4中可以看出,在TCP/IP协议族中,链路层主要有三个目的: (1)为IP模块发送和接收IP数据报; (2)为ARP模块发送ARP请求和接收ARP应答; (3&#xf…...

HDLbits: Count clock

目前写过最长的verilog代码,用了将近三个小时,编写12h显示的时钟,改来改去,估计只有我自己看得懂(吐血) module top_module(input clk,input reset,input ena,output pm,output [7:0] hh,output [7:0] mm,…...

【1day】用友移动管理系统任意文件上传漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

【c++】向webrtc学习容器操作

std::map的key为std::pair 时的查找 std::map<RemoteAndLocalNetworkId, size_t> in_flight_bytes_RTC_GUARDED_BY(&lock_);private:using RemoteAndLocalNetworkId = std::pair<uint16_t, uint16_t...

SpringBoot+Vue3外卖项目构思

SpringBoot的学习&#xff1a; SpringBoot的学习_明里灰的博客-CSDN博客 实现功能 前台 用户注册&#xff0c;邮箱登录&#xff0c;地址管理&#xff0c;历史订单&#xff0c;菜品规格&#xff0c;购物车&#xff0c;下单&#xff0c;菜品浏览&#xff0c;评价&#xff0c;…...

【AI视野·今日NLP 自然语言处理论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 4 Oct 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Contrastive Post-training Large Language Models on Data Curriculum Authors Canwen Xu, Corby Rosset, Luc…...

c++的lambda表达式

文章目录 1 lambda表达式2 捕捉列表 vs 参数列表3 lambda表达式的传递3.1 函数作为形参3.2 场景1&#xff1a;条件表达式3.3 场景2&#xff1a;线程的运行表达式 1 lambda表达式 lambda表达式可以理解为匿名函数&#xff0c;也就是没有名字的函数&#xff0c;既然是函数&#…...

电梯安全监测丨S271W无线水浸传感器用于电梯机房/电梯基坑水浸监测

城市化进程中&#xff0c;电梯与我们的生活息息相关。高层住宅、医院、商场、学校、车站等各种商业体建筑、公共建筑中电梯为我们生活工作提供了诸多便利。 保障电梯系统的安全至关重要&#xff01;特别是电梯机房和电梯基坑可通过智能化改造提高其安全性和稳定性。例如在暴风…...

Java异常:基本概念、分类和处理

Java异常&#xff1a;基本概念、分类和处理 在Java编程中&#xff0c;异常处理是一个非常重要的部分。了解如何识别、处理和避免异常对于编写健壮、可维护的代码至关重要。本文将介绍Java异常的基本概念、分类和处理方法&#xff0c;并通过简单的代码示例进行说明。 一、什么…...

小谈设计模式(19)—备忘录模式

小谈设计模式&#xff08;19&#xff09;—备忘录模式 专栏介绍专栏地址专栏介绍 备忘录模式主要角色发起人&#xff08;Originator&#xff09;备忘录&#xff08;Memento&#xff09;管理者&#xff08;Caretaker&#xff09; 应用场景结构实现步骤Java程序实现首先&#xff…...

《数据库系统概论》王珊版课后习题

第一章 绪论 1.数据、数据库、数据库管理系统、数据库系统的概念 &#xff08;1&#xff09;数据&#xff08;Data&#xff09;&#xff1a;数据是数据库中存储的基本对象&#xff0c;是描述事物的符号记录。数据有多种表现形式&#xff0c;它们都可以经过数字化后存入计算机…...

MariaDB 修改用户远程登录

今天修改MariaDB数据库用户的Host时出现错误&#xff1a; ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them 我的步骤如下&#xff1a; 1.登陆 2.use mysql; 3.执行…...

Elasticsearch使用mapping映射定义以及基本的数据类型

1、说明 Elasticsearch的映射相当于数据库的数据字典&#xff0c;它定义了每个字段的名称和能够保存的数据类型&#xff0c;并且内置了20多种字段类型用于支持多种多样的结构化数据&#xff0c;这里仅介绍几种常用的字段类型&#xff0c;如需要了解全部的类型&#xff0c;请参…...

【unity】制作一个角色的初始状态(左右跳二段跳)【2D横板动作游戏】

前言 hi~ 大家好&#xff01;欢迎大家来到我的全新unity学习记录系列。现在我想在2d横板游戏中&#xff0c;实现一个角色的初始状态-闲置状态、移动状态、空中状态。并且是利用状态机进行实现的。 本系列是跟着视频教程走的&#xff0c;所写也是作者个人的学习记录笔记。如有错…...

不死马的利用与克制(基于条件竞争)及变种不死马

不死马即内存马&#xff0c;它会写进进程里&#xff0c;并且无限地在指定目录中生成木马文件 这里以PHP不死马为例 测试代码&#xff1a; <?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file .test.php;$code <?php if(md5($_GET["pass…...

计算机竞赛 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域&#xff0c;在无人驾驶领域中机器学习的各种算法随处可见&#xff0c;今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂&#xff0c;看上去无从下手。那么面对这样极其…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...