智能旅行规划的未来:大模型与形式化验证的融合

我们在做旅行规划时面对众多的目的地选择、复杂的交通连接、预算限制以及个人偏好等多重因素,即使是最有经验的旅行者也可能会陷入选择困境。传统的旅行规划方法往往依赖于人工操作,这不仅耗时耗力,而且难以保证计划的最优性和可执行性。

本文将探讨一个革命性的解决方案——将大型语言模型(LLMs)与形式化验证工具相结合,以解决传统旅行规划中存在的问题。这种方法不仅能够处理复杂的约束条件,还能够提供经过严格验证的旅行计划,确保每一项旅行安排都符合用户的具体要求。通过这一创新框架,我们能够实现更高效、更准确、更个性化的旅行规划,让每个人都能享受到定制化的旅行体验。

方法

究者们提出了一个框架,该框架利用LLMs来形式化地表述和解决旅行规划问题,将其视为一个可满足性模理论(SMT)问题。这一方法的核心在于,通过多次调用LLMs,完成从自然语言查询到JSON格式描述的转换、问题的公式化步骤生成,以及基于步骤的代码生成。当输入的查询不可满足时,LLMs还能够基于当前情况提出建议,并根据建议修改现有代码。

框架的概览

Figure 1框架是一个协作系统,涉及人类用户、大型语言模型(LLM)、SMT求解器以及生成的旅行计划。工作流程如下:

  1. 人类用户提出查询:以自然语言的形式,用户提出他们的旅行计划需求。

  2. LLM翻译:LLM将用户的自然语言查询转换为JSON格式,这是一种结构化的数据处理格式,便于计算机解析和处理。

  3. 生成SMT问题步骤:LLM根据JSON格式的描述,生成解决问题所需的步骤,这些步骤将指导如何将旅行计划问题表述为一个SMT问题。

  4. 代码生成:LLM根据生成的步骤,创建相应的代码。这些代码将作为SMT求解器的输入,用于编码问题。

  5. SMT求解器调用:执行LLM生成的代码,以调用SMT求解器。SMT求解器是一个能够处理复杂逻辑和数学问题的算法工具,它尝试找到满足所有约束条件的解决方案。

  6. 交互式查询修改:如果SMT求解器无法找到解决方案,表明当前的查询不可满足。此时,LLM将收集信息,分析当前情况,并与用户进行交互,提出修改查询的建议。

  7. 代码更新与重新求解:根据用户的反馈和建议,LLM更新代码,并再次调用SMT求解器,以寻找可行的旅行计划。

  8. 生成旅行计划:一旦找到满足所有约束条件的解决方案,SMT求解器将生成一个经过形式化验证的旅行计划,该计划以绿色区域表示。

研究者们定义了旅行规划问题:给定人类旅行计划的个人约束C的自然语言描述,系统应输出满足C的计划。这涉及到从起始城市出发,访问k个目的地城市,跨越n天的旅行,并采用k+1种交通方式。输出的计划应明确指定每天要访问的城市、交通方式、景点、餐厅和住宿。

然后研究者们对旅行规划问题进行了明确的定义。他们指出系统的目标是:基于用户提供的自然语言描述的个人约束C,生成一个满足这些约束条件的旅行计划。这包括从起始城市出发,访问若干目的地城市,整个旅程持续一定的天数,并涉及多种交通方式。

旅行规划问题中考虑的各种约束条件的描述。这些约束包括目的地城市、交通日期、交通方式、航班信息、驾车信息、餐厅选择、景点选择、住宿条件和预算

接下来LLMs的任务是将用户的自然语言输入转换成结构化的JSON格式。这一步是整个框架的基础,它确保了后续步骤能够准确理解用户的需求。

代码生成阶段是框架的关键部分,LLMs根据转换后的JSON描述和预先提供的示例,生成解决问题所需的具体步骤。这些步骤将指导如何将问题分解并逐步解决。LLMs进一步将这些步骤转化为可执行的代码。这些代码将被用来调用SMT求解器,是连接问题描述和求解器的桥梁。

 LLM 如何根据给定的步骤生成解决特定约束的 Python 代码的示例

最后框架执行生成的代码,将旅行规划问题编码为SMT问题,并提交给SMT求解器。求解器将尝试找到满足所有约束条件的解决方案。如果存在可行的计划,求解器将提供一个经过形式化验证的旅行计划。

当提出的查询不可满足时,LLMs利用其推理能力和常识知识来分析当前情况,并提出修改建议。这允许与人类用户进行交互式设置,用户可以同意、反对或对LLMs提出的建议提供反馈。LLMs然后根据不同的人类偏好输出个性化计划。

通过这种方法,研究者们展示了他们的框架如何有效地处理多样化的人类输入,提供经过形式化验证的计划,并在输入查询不可满足时与人类交互式地修改查询。

实验

为了测试框架的泛化能力和处理不可满足查询的交互式计划修复能力,研究者们提出了一个名为UnsatChristmas的数据集。这是专门为了评估他们提出的框架而设计的。该数据集包含39个在2023年圣诞节周制定的国际旅行计划的不可满足查询,覆盖了全球十大城市目的地,并从Metabase获取了景点信息,以及使用Google Flights收集了相关航班信息。UnsatChristmas数据集的独特之处在于它引入了与TravelPlanner不同的新约束,例如直飞规则、航空公司偏好和景点类别要求。这个数据集旨在测试框架对于未见过的约束类型是否具有良好的泛化能力,并通过交互式计划修复来适应用户的不同偏好。

研究者们在TravelPlanner和UnsatChristmas数据集上测试了他们的框架。他们使用GPT-4作为默认的LLM,并将其性能与其他两种LLM模型Claude 3 Opus和Mixtral-Large进行了比较。所有实验都使用了Z3求解器作为SMT求解器。

研究者们使用TravelPlanner数据集中的训练集来设计示例指令步骤和相应的代码,并使用这些训练查询来调整提示。然后在验证集(180个可满足的查询)和测试集(1000个可满足的查询)上评估了他们的方法。

评估指标:包括交付率(是否在限定时间内生成最终计划)、常识约束通过率、硬约束通过率和最终通过率。

基线比较:与研究者们(2024年)评估的传统基于规则的策略和各种LLM规划方法进行了比较。

结果分析

  • GPT-4的交付率在验证集上为99.4%,在测试集上为97.2%。
  • 在最终通过率方面,GPT-4在验证集上达到了98.9%,在测试集上达到了97.0%,显示出框架在解决旅行规划问题上的强大能力。
不同方法在可满足查询上的旅行计划解决性能比较。列出了不同基线模型和本文提出的框架在交付率、常识约束通过率、硬约束通过率和最终通过率等方面的性能

研究者们还评估了框架在交互式计划修复方面的能力。他们修改了TravelPlanner的查询,使其不可满足,并使用UnsatChristmas数据集来测试框架的交互式计划修复性能。

评估指标:基于LLM最终是否能够修改约束条件以成功交付可行计划的成功率。

实现细节:定义了四种不可满足模式,并使用了模拟用户来测试框架。

结果分析

  • 框架在处理不同类型模拟用户时,平均成功率为78.6%至85.0%。
  • 通过增加迭代次数,成功率可以进一步提高。
表格 3  在 39 个来自 UnsatChristmas 数据集的不可满足查询上,框架交互式计划修复的性能。这些查询设计用来测试圣诞节期间的国际旅行计划,并包含了新的约束条件
表格 4  在修改自 TravelPlanner 数据集的 12 个不可满足查询上,框架交互式计划修复的性能。这些修改是为了测试框架处理交互式计划修复的能力

在框架对未见过的约束类型的泛化能力测试中。研究者们展示了通过在JSON-Step Generation提示中添加几行任务描述,LLM能够为UnsatChristmas中的新查询生成指令步骤,而无需添加新示例。

结论

  • 实验结果表明,提出的框架能够可靠地处理多样化的人类输入,提供经过形式化验证的计划,并能够根据不同的人类偏好交互式地修改不可满足的查询。
LLM 如何根据 JSON 步骤提示生成新的指令步骤,以编码未见过的约束的示例,展示了框架如何对未见过的约束类型进行泛化处理

实验证明框架不仅在理论上是可行的,而且在实际应用中也是有效的。这些实验结果为LLMs在旅行规划领域的应用提供了有力的证据。然而,这项工作也存在一些局限性:框架的有效性依赖于精心设计的指令步骤和相应的代码,这可能需要大量的时间和专业知识来从零开始制定问题;对于包含大量目的地城市选择、多样化约束类型和只有少数可行计划的查询,求解器的运行时间可能会很长;框架目前还不能区分来自数据库的不安全或不正确信息,这可能带来基于不准确数据生成风险计划的潜在风险。

尽管存在这些挑战,研究者们的工作无疑为LLMs在旅行规划领域的应用开辟了新的道路。未来的工作可能会集中在简化问题制定过程、提高求解器效率以及增强对不安全信息的识别能力上。

论文链接:https://arxiv.org/abs/2404.11891

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/760827.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++学习笔记---POCO库

在Windows系统中安装POCO 1)安装OpenSSL POCO编译安装依赖OpenSSL,如果未安装OpenSSL则应该先安装OpenSSL。 假设将OpenSSL安装在C:\OpenSSL-Win64,将C:\OpenSSL-Win64、C:\OpenSSL-Win64\lib添加到PATH环境变量中2)安装POCO 将p…

Java代码生成器(开源版本)

一、在线地址 Java在线代码生成器:在线访问 二、页面截图 三、核心功能 支持Mybatis、MybatisPlus、Jpa代码生成使用 antlr4 解析SQL语句,保证了SQL解析的成功率支持自定义包名、作者名信息支持自定义方法名、接口地址支持自定义选择是否生成某个方法…

前端面试题(基础篇十四)

一、DOMContentLoaded 事件和 Load 事件的区别? 当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的加载完成。 Load 事件是当所有资源加载完成后触发的。 二、简述一下你对 HTML 语…

解析桥式整流电路

下面这个桥式整流电路出场率很高,看着一定眼熟。 事实证明,强行灌输的东西总是难以下咽。记得读书那会,第一次看到这个电路时被吓到了,以至于直到这门课结束了也没搞清楚。 本文就来分析一下此电路中电流的走向,进而理…

【初阶数据结构】深入解析队列:探索底层逻辑

🔥引言 本篇将深入解析队列:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 &#…

Android经典面试题之Glide的缓存大揭秘

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Glide缓存 关联类:Engine、LruResourceCache、LruCache、ActiveResources ActiveResources:弱引用缓存池 VisibleForTe…

Chapter8 透明效果——Shader入门精要学习笔记

一、基本概念 在Unity中通常使用两种方法来实现透明效果 透明度测试(无法达到真正的半透明效果)透明度混合(关闭了深度写入) 透明度测试 基本原理:设置一个阈值,只要片元的透明度小于阈值,就…

VMware--创建Ubuntu虚拟机

原文网址:VMware--创建Ubuntu虚拟机-CSDN博客 简介 本文介绍VMware创建Ubuntu虚拟机的方法。 VMware是最好用的虚拟机软件,安装方法见: 本文安装当前最新的Ubuntu的LTS镜像:ubuntu2022.04.4LTS。 1.下载Ubuntu镜像 下载地址…

电脑技巧:告别卡顿,迎接流畅——Wintune系统优化软件功能详解

目录 一、Wintune介绍 二、Wintune核心功能介绍 2.1 系统优化 2.2 隐私功能 2.3 文件管理模块 2.4 可选选项 2.5 UWP app服务 2.6 startup Manager 2.7、主机编辑 三、总结 电脑是大家目前日常办公娱乐必不可小的工具,软件市场上的系统优化软件层出不穷&a…

一二三应用开发平台应用开发示例(5)——列表视图、树视图、树表视图、树参照视图配置

列表视图 接下来进入列表视图配置,创建的操作方式跟前面相同,如下图所示: 保存后回到列表,点击行记录的配置按钮,进入如下配置页面 可以看到该配置界面相比新增、修改、查看那三个视图要复杂得多,配置项…

帕金森患者的福音,这些食物竟有神奇疗效!

在忙碌的现代生活中,健康问题越来越受到大家的关注。而帕金森病作为一种常见的老年神经系统疾病,更是让许多患者和家庭倍感压力。但是,你知道吗?除了药物治疗和手术干预,日常饮食也能对帕金森病产生积极的影响。今天&a…

开源分享:一套完整的直播购物系统源码

直播购物已经成为一种炙手可热的电商模式,吸引了无数商家和消费者的目光。对于开发者来说,构建一个功能齐全、用户体验优良的直播购物系统是一项复杂的任务。本文将分享一套完整的直播购物系统源码,帮助开发者快速搭建自己的直播购物平台。 …

基于springboot+vue+uniapp的语言课学习系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

在Centos上安装Lua不要用什么curl指令,这样获取到的压缩包不是gzip格式的

Lua 环境安装 | 菜鸟教程 (runoob.com) 在这一篇里,把这一行 换成 wget http://www.lua.org/ftp/lua-5.3.0.tar.gz 再去解压编译安装就对了。

ue5导航网格设置

AI使用导航网格进行移动,所以,先设置导航网格边界体积 2,使导航网格边界体积覆盖AI所需要的场景(绿色区域),x,y,z在这里都扩大到原来的10倍 3,打开actor的“启用tick并开始” 4&…

No module named ‘MySQLdb‘

python 运行代码的时候遇到No module named ‘MySQLdb’报错如何解决? 解决办法 如果没有安装可以先安装以下依赖库 pip install PyMySQL如果已经安装了PyMySQL,仍然报MySQLdb模块找不到,可以尝试安装以下依赖库。 pip install mysqlclient

二轴机器人装箱机:重塑物流效率,精准灵活,引领未来装箱新潮流

在现代化物流领域,高效、精准与灵活性无疑是各大企业追求的核心目标。而在这个日益追求自动化的时代,二轴机器人装箱机凭借其较佳的性能和出色的表现,正逐渐成为装箱作业的得力助手,引领着未来装箱新潮流。 一、高效:重…

【12】交易-“未花费交易输出”

1. 未花费交易输出 1.1 概念 未花费交易输出(unspent transactions output, UTXO)。未花费(unspent)指的是这个输出还没有被包含在任何交易的输入中,或者说没有被任何输入引用。 在交易结构示意图中,未花费的输出是:tx1, output 1;tx3, output 0;tx4, output 0。 1…

JavaScript原型对象和对象原型、原型继承、原型链

目录 1. 原型对象和对象原型2. 原型继承3. 原型链 1. 原型对象和对象原型 作用: 以前通过构造函数实例化的对象,每个实例化的对象的属性和方法都是独立的,会造成内存浪费。通过prototype对象原型能实现不同实例化对象共享公用的属性和方法,减…

Android 10.0 关于定制自适应AdaptiveIconDrawable类型的动态日历图标的功能实现系列一

1.前言 在10.0的系统rom定制化开发中,在关于定制动态时钟图标中,原系统是不支持动态日历图标的功能,所以就需要从新 定制动态时钟图标关于自适应AdaptiveIconDrawable类型的样式,就是可以支持当改变系统图标样式变化时,动态日历 图标的背景图形也跟着改变,所以接下来就来…