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事件进阶 事件流 什么是事件流 事件流指的是事件完整执行过程中的流动路径 事件流与两个阶段说明 捕获与冒泡 …

简介:基于Web的产品3D

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

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

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

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

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

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

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

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

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

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

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

基于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…

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.扇形 前言 这篇文章主要是应对二重积分出现的一些关于圆的积分域,让大家大概了解一下,不是很详细,因为二重积分对几何…

uniapp请求后端接口

新建文件夹utils const request (config) > {// 拼接完整的接口路径config.url http://mm.test.cn config.url;//这里拼接的是访问后端接口的地址,http://mm.test.cn/prod-api/testconsole.log(config.url)//判断是都携带参数if(!config.data){config.data …

7-26 单词长度

题解&#xff1a; #include <bits/stdc.h> using namespace std; int main() {string s;getline(cin,s); //读取一行字符串char c; //记录字符int cnt 0; //用来记录长度int flag 0; //用来判断是否已经输出了第一个单词的长度for (int i 0;i<s.size(); i)…

阿里云新手用户建站必看攻略,从注册域名到网站上线需完成步骤

无论是个人还是企业新手用户&#xff0c;搭建个人或者企业网站都必须进过注册域名、购买云服务器、搭建网站、ICP备案、解析域名等步骤&#xff0c;本文为大家展示阿里云新手用户建站过程中从注册域名到网站上线需要完成的具体步骤。 1、选购域名 域名是互联网世界的门牌号码&…

什么是HW,企业如何进行HW保障?

文章目录 一、什么是HW二、HW行动具体采取了哪些攻防演练措施三、攻击方一般的攻击流程和方法四、企业HW保障方案1.建意识2.摸家底3.固城池4.配神器5.增值守 一、什么是HW 网络安全形势近年出现新变化&#xff0c;网络安全态势变得越来越复杂&#xff0c;黑客攻击入侵、勒索病…

【JavaWeb】Day37.MySQL概述——数据库设计-DML

数据库操作-DML DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增、删、改操作。 1.增加(insert) insert语法&#xff1a; 向指定字段添加数据 insert into 表名 (字段名1, 字段名2) values (值1, 值2); 全部字段添加数据…

回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测

回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测 目录 回归预测 | MATLAB实现BO-GRNN贝叶斯优化广义回归神经网络多输入单输出预测预测效果基本介绍程序设计参考资料预测效果 基本介绍