Octopus:2B 参数语言模型即可媲美 GPT-4 的函数调用性能

近年来,大语言模型在 PC、智能手机和可穿戴设备的操作系统中应用逐渐成为趋势。 例如,MultiOn (Garg, 2024) 和 Adept AI (Luan, 2024) 等 AI 助理工具,以及 Rabbit R1 (Lyu, 2024) 和 Humane AI Pin (Chaudhri, 2024) 等 AI 消费产品在消费者市场正获得关注。这些产品利用语言模型将人类自然语言转换为可操作的命令,为用户提供便捷的操作体验。然而,现有的基于云端大模型的解决方案存在隐私泄露风险、推理成本高、网络连接要求高等问题。虽然一些研究者提出基于开源模型的函数调用方法。 然而,这些方法在推理任务和能耗方面表现不佳,无法满足实际应用的需求。

为此斯坦福大学采用了一种独特的功能性标记策略,基于谷歌Gemini 2B模型开发了Octopus-V2模型,专为Android API的功能调用定制,超越了基于RAG的方法,特别适用于边缘计算设备。比Llama7B + RAG方案快36倍,性能优于 GPT-4,延迟时间小于 1 秒。它能够在移动设备上直接运行,支持广泛的应用场景,从而推动Android系统管理和设备间协同工作的新方式。其快速和高效的推理能力,特别适合需要高性能和精确功能调用的场景,如智能家居控制、移动应用开发等。

这篇论文的核心在于,传统实现AI 代理的方法是先从所有可用函数中检索与用户查询最匹配的函数,然后再生成函数参数。这种方法的缺点是需要处理大量的文本信息,计算量比较大。本文提出了一种新的方法,将函数选择问题转化为一个分类问题。将所有可用函数都映射为一个唯一的标记,然后使用语言模型来预测用户查询对应的函数标记。这种方法的优点是计算量更小,并且可以更好地处理嵌套函数调用等复杂情况。

具体点说就是,传统的方法就像是一个字典,里面包含了所有可用函数的定义和描述。当用户输入一个指令要求时,系统会先查找字典中与查询最匹配的函数,然后根据函数的定义和描述来生成函数参数。

而论文提出的新方法则就像是一个翻译系统,它可以将用户查询翻译成一个特定的函数标记。翻译的能力是通过对模型的训练来提高的。训练数据通常包含大量用户查询与函数之间的对应关系。训练数据越多,语言模型的学习能力就越强。论文团队使用了一个大型的训练数据集,该数据集包含了大量用户查询与函数之间的对应关系。这使得我们的语言模型能够准确地预测用户查询对应的函数标记。

Octopus-V2 开发的重要步骤如下:

1. API 收集

首先从收集 API 开始,重点关注以下方面的 API:

·易用性: 开发人员易于使用。

·使用频率: 安卓应用程序开发中常用。

·技术复杂性: 具有复杂的的技术实现。

论文团队总共收集了 204 个 Android API,并将其分为三类:

1. Android 系统 API: 用于基本系统级功能的 API,例如拨打电话、发短信、设置闹钟、调整屏幕亮度、创建日历条目、管理蓝牙、启用请勿打扰模式和拍照。我们排除了诸如访问系统状态信息或更改辅助功能设置等高度敏感的任务的 API。

2. Android 应用程式 API: 来自安卓设备上预装的谷歌应用(例如 YouTube、Chrome、Gmail 和地图)的 API。我们关注的功能包括获取热门新闻、获取天气更新、搜索 YouTube 内容和地图导航。

3. Android 智能设备管理 API: 用于管理 Google Home ekosystem(生态系统)中的智能家居设备的 API,例如调整 Nest 恒温器、控制 Google Nest 设备上的媒体播放以及使用 Google Home 应用控制门锁。

2. 数据集生成

创建数据集的过程主要分为三个关键步骤:

1. 生成相关查询和函数调用: 这涉及创建定义良好的查询(用户请求)和相应的函数调用(执行 API 所需的参数)。专注于生成可由单个 API 解决的正向查询。使用 Google Gemini API 调用来生成基于查询和 API 描述的函数调用参数。

2. 负样本: 为了提高模型区分有效和无效请求的能力,将负面示例包含在数据集中,这对于实验效果至关重要。

3. 数据集验证: 即使像 OpenAI 的 GPT-4 和 Google 的 Gemini 这样的大型语言模型也可能出错,尤其是在生成函数调用参数时。这些错误可能是缺少参数、参数类型错误或对查询的误解。为了解决这个问题,实施了验证过程。该系统允许 Google Gemini 检查生成的函数调用是否完整准确。如果没有,它会要求 Gemini 重新生成。

通过遵循这些步骤,确保收集高质量的数据集,以帮助模型良好地运行。

这项研究的潜在影响是巨大的,为大模型为手机端等针对应用程序特定场景的训练铺平了道路,开发人员可以精确定位其用户最常用的 API,将它们转换为模型的函数标记,然后继续部署。该策略能够完全自动化应用程序工作流程,模拟类似于 Apple 的 Siri 的功能,但响应速度和准确率大大提高。此外,该模型在 PC、智能手机和可穿戴设备的操作系统中的应用也呈现出另一个令人兴奋的前景。软件开发人员可以针对操作系统训练小型 LoRA。通过积累多个 LoRA,该模型可以促进跨不同系统组件的有效函数调用。例如,将此模型纳入 Android 生态系统将使 Yelp 和 DoorDash 开发人员能够训练不同的 LoRA,从而使该模型在移动平台上也能够运行。

展望未来,开发一个专注于设备推理的模型将实现云部署速度的显著提升,在本地部署时,为注重隐私或运营成本的用户提供有价值的解决方案。这种双重部署策略不仅扩展了模型在云环境和本地环境中的实用性,而且还迎合了用户对速度和效率或隐私和成本节约的偏好。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 交通信号 2022研究生组

问题: Dijstra算法变形题,有向边分正行和逆行方向,注意逆行的绿灯时间是正行的红灯时间。 这题的关键是理清从当前节点出发,到下一个节点是哪一时刻,理清这一点后,再跑Dijstra算法求最短路。 假设curr_t时…

JavaScript(三)-Web APIS

文章目录 DOM事件进阶事件流事件流与两个阶段说明事件捕获事件冒泡阻止冒泡解绑事件 事件委托其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 DOM事件进阶 事件流 什么是事件流 事件流指的是事件完整执行过程中的流动路径 事件流与两个阶段说明 捕获与冒泡 …

从零开始精通RTSP之初识实时流协议

概述 在数字化浪潮席卷全球的今天,实时音视频通信已经成为人们日常生活、工作以及娱乐中不可或缺的一部分。无论是直播平台、在线会议、远程教育,还是安防监控系统,都离不开高效可靠的实时流传输技术。其中,RTSP作为一种广泛应用的…

Leetcode 539. 最小时间差

给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。 示例 1: 输入:timePoints [“23:59”,“00:00”] 输出:1 示例 2: 输入&#xff…

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品,例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中,随着 3D 建模和渲染软件的出现,3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

政安晨:【Keras机器学习实践要点】(二十一)—— MobileViT:基于变换器的移动友好图像分类模型

目录 简介 导入 超参数 MobileViT 实用程序 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! …

<网络安全>《72 微课堂<什么是靶场?>》

1 简介 网络安全靶场是一种模拟真实网络环境的技术或平台。 网络安全靶场基于虚拟化技术,能够模拟网络架构、系统设备、业务流程的运行状态及运行环境,用于支持网络安全相关的学习、研究、检验、竞赛和演习等活动,旨在提高人员及机构的网络…

AI 创业指难(一) :Stable Diffusion AI 绘画怎么用

一. 前言 一年不到,AI对生活和工作的影响已经逐步体现。所以千万别掉队了,也许 AI 不能成为我们的主要工作,但是如何借助 AI 实现副业的扩展同样值得思考。 这一篇就来讲一个 AI 绘画工具,这个工具我也是才上手不久,…

冻干可以长期给猫咪吃吗?五款顶尖生骨肉冻干盘点推荐

近年来,冻干猫粮因其高品质而备受喜爱,吸引了无数猫主人的目光,像我这样的养猫老手早已开始冻干喂养。但对于新手养猫的人来说,他们可能会对冻干猫粮感到陌生,并产生疑问:这到底是什么?冻干可以…

.NET 设计模式—装饰器模式(Decorator Pattern)

简介 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来…

看看你的身体出现了哪些症状,要当心了!

身体出现以下五个症状,你要小心了。 夜间尿频,不要以为晚上喝水喝多了,很有可能是你的血糖升高了,血糖过高的人,口腔很容易受到刺激,而感到非常的干燥,所以会通过补充水分的方式来缓解&#xff…

算法练习第四十六天|多重背包、139. 单词拆分

题目描述 你是一名宇航员,即将前往一个遥远的行星。在这个行星上,有许多不同类型的矿石资源,每种矿石都有不同的重要性和价值。你需要选择哪些矿石带回地球,但你的宇航舱有一定的容量限制。 给定一个宇航舱,最大容量为…

基于java+springboot+vue实现的农产品销售系统(文末源码+Lw)23-231

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统乐乐农产品销售系统信息管理难度大,容错率低…

Springboot-redis整合

Springboot-redis命令行封装 前言 Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis也是现…

CSS导读 (Emmet语法)

(大家好,今天我们将继续来学习CSS的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 续:七、Chrome调试工具 一、Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 &…

LangChain-10 Agents langchainhub 共享的提示词Prompt

LangChainHub 的思路真的很好,通过Hub的方式将Prompt 共享起来,大家可以通过很方便的手段,短短的几行代码就可以使用共享的Prompt。 我个人非常看好这个项目。 官方推荐使用LangChainHub,但是它在GitHub已经一年没有更新了&#x…

如何实现在线程池中执行远程调用可以获取到主线程的请求上下文

public class ThreadPoolConfig {/*** 异步任务执行线程池** return*/Bean("taskExecutor")public TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new CustomThreadPoolExecutor();// 设置核心线程数executor.setCorePoolSize(5);// 设置最大线程数…

PyCharm安装教程:详细步骤解析

目录 1. 下载 PyCharm 安装包 2. 运行安装程序 3. 选择安装类型 4. 确认安装选项 5. 安装过程中 6. 安装完成 7. 启动 PyCharm 8. 选择版本 9. 登录或注册 10. 激活许可证 11. 激活成功 PyCharm 是一款功能强大的 Python IDE(集成开发环境)&a…

flutter多入口点entrypoint

native中引擎对象本身消耗内存(每个引擎对象约莫消耗42MB内存) 多引擎:native多引擎>启动>flutter多入口点entrypoint>多main函数>多子包元素集>多(子)程序 单引擎(复用):native单引擎>复用启动>flutter多入口点entrypoint>多m…

高等数学基础篇之关于圆,椭圆,圆环的应用

文章目录 前言 1.圆 1.1标准方程 1.2偏心圆 1.3参数方程 2.椭圆 2.1标准方程 2.2参数方程 2.3极坐标 3.圆环 4.扇形 前言 这篇文章主要是应对二重积分出现的一些关于圆的积分域,让大家大概了解一下,不是很详细,因为二重积分对几何…