LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

导读:这篇博文介绍了 Lares,一个由简单的 AI 代理驱动的智能家居助手模拟器,它展现出令人惊讶的解决问题能力。

>> 背景痛点:每天都有新的 AI 代理被开发出来,但许多复杂的代理需要大量的代码。作者的目标是展示一个使用相对较少代码就能构建出具有令人惊讶的复杂涌现特性的基本代理的可行性。 现有的智能家居系统缺乏能够进行自主推理和解决问题的智能代理。

>> 具体的解决方案:Lares 使用 OpenAI 的函数调用功能和 GPT-4 模型,通过一个简单的 AI 代理与智能家居模拟器进行交互。该代理通过 Web UI 接收指令,并通过一系列函数调用来完成任务。 这些函数包括:toggleLight(切换灯光)、moveRobot(移动机器人)、lookWithRobot(用机器人查看房间)、askUser(询问用户)、halt(停止操作)和 decideBestFunction(决定下一个要调用的函数)。

>> 核心思路步骤:Lares 的代理循环包含以下步骤:

● 设置:准备包含用户指令、代理的当前世界知识(已知哪些灯是开着的,但不知道可移动物体的具体位置)、历史函数调用和返回值的记录。

● 意图:代理调用 decideBestFunction 函数来选择下一个要调用的函数。 这部分引入了“分离意图和行动”的策略,通过中间推理步骤来提高可靠性。

● 行动:代理调用所选函数并执行相应的操作。

● 循环:如果所选函数不是 halt,则重复步骤 2 和 3,直到代理决定停止。

>> 优势

● 代码简洁:Lares 使用相对较少的代码实现了复杂的智能家居控制和问题解决能力。

● 涌现行为:Lares 展示了基本的解决问题能力,例如,为了找到狗,它会先打开灯,再用机器人查看房间。 这种行为并非预先编程,而是 AI 模型根据环境和任务自主产生的。

● 函数调用机制:利用 OpenAI 的函数调用功能,使代理能够以结构化的方式与环境交互,提高了可靠性和可解释性。

● 分离意图和行动:提高了代理的可靠性。

● 动态世界知识管理:将代理的世界知识与隐藏的世界状态分开管理,提高了可靠性。

>> 结论和观点

● 即使是简单的代理也能表现出涌现行为,例如基本的解决问题能力。

● Lares 的代码量很少,这表明可以开发出更多类似的简单而强大的 AI 代理。

● 未来将会出现大量的 AI 代理,这将对用户体验、标准化、底层技术平台和商业产生影响。

● Lares 的涌现能力源于大型语言模型本身,这引发了关于问题解决能力是否固有于语言结构、涌现能力是否可以量化等研究问题。

● 作者提出了关于代理面向 API 设计、代理运行时抽象、嵌入式模型、用户界面设计、安全性和多代理协调等方面的未来研究方向。

总而言之,这篇博文展示了一个简单的 AI 代理如何通过巧妙的设计和大型语言模型的能力,展现出超出预期能力的涌现行为,并对未来 AI 代理的发展方向进行了展望。

目录

Lares的简介

1、未来发展

Lares的安装和使用方法

1、安装

2、代码结构:

3、函数调用循环:

Lares的案例应用


Lares的简介

2024年5月,Lares是一个模拟智能家居系统的项目,核心是一个简单的AI代理。该代理接收用户的指令,并通过OpenAI的函数调用功能与模拟器交互,最终实现用户目标。

模拟器包含五个房间,每个房间都有一个可以开关的灯,以及一些可移动的物品(例如狗和人)。 代理可以通过机器人来查看房间内隐藏的物品,但机器人只能在光线充足的房间内工作。 项目旨在展示一个简单的AI代理如何通过相对较少的代码展现出令人惊讶的解决问题能力,例如自主决定打开灯光以便机器人能够查看房间。 项目的代码已开源,并提供Web UI用于用户交互,用户可以在UI的左侧看到模拟家居的实时状态(包括代理无法访问的信息,如宠物和人的位置),在右侧输入指令并查看代理的行动记录。

lares 项目提供了一个简洁而有效的 AI 代理实现,展示了简单的 AI 如何通过函数调用和大型语言模型展现出复杂的涌现行为

GitHub地址:GitHub - genmon/lares: A simple AI agent controlling a simulation of a smart home

文章地址:Lares smart home assistant: A toy AI agent exhibiting emergent behavior (Matt Webb)

1、未来发展

项目计划将模拟器与真实世界集成,例如使用 HomeKit 调用来控制真实的智能家居设备。

Lares的安装和使用方法

1、安装

>> 准备工作:复制 .env.template 文件并重命名为 .env,然后在 .env 文件中填写 OPENAI_API_KEY (OpenAI API 密钥)。

>> 安装依赖:运行 npm install 命令安装项目所需的 Node.js 包。

>> 启动项目:运行 npm run dev 命令启动开发服务器。 这将会启动一个Web界面,用户可以通过该界面与Lares交互。

2、代码结构:

项目主要包含以下几个部分:

app/:用户界面 (UI),使用 React 构建。

party/:包含两个主要文件:

server.ts:模拟智能家居环境,维护隐藏的世界状态,并提供 HTTP API 供代理进行交互。 它还包含一个同步 WebSocket 消息,以便调试视图可以看到世界状态。

assistant.ts:AI 代理,接收指令,包含函数调用逻辑。

party/functions.ts:定义了AI代理可用的函数,包括一个 intentFunction 用于决定调用哪个实际函数。

party/openai.ts:负责与 OpenAI API 通信,将响应限制为单个工具调用(工具 == 函数)。

party/world.ts 和 party/messages.ts:类型和常量定义。

3、函数调用循环:

Lares 的 AI 代理通过一个循环来处理用户的指令:

获取最新的世界状态。

调用 intentFunction (OpenAI) 来决定下一个要调用的函数。

调用 OpenAI 来获取所选函数的参数。

将函数调用添加到消息记录中。

使用函数名称和参数向 server.ts 中的模拟器发送 HTTP 请求,修改世界状态并获取结果。

将函数调用的结果添加到代理的记录中。

重复上述步骤,直到收到 halt 函数调用或达到最大函数调用次数(默认为 10)。

Lares的案例应用

项目提供了几个演示案例,展现了Lares的解决问题能力:

简单的指令遵循:用户指令 "turn on the light in the kitchen",Lares 会调用 toggleLight 函数并传入 "kitchen-light" 作为参数,成功后会输出 "The light in the kitchen is now on"。

问题解决:用户指令 "turn on the light for my dog",Lares 由于不知道狗的位置,会先使用 lookWithRobot 函数查看各个房间,发现房间太暗无法查看时,会自主调用 toggleLight 函数打开灯光,然后继续寻找狗。找到狗后,会打开狗所在房间的灯,并输出 "The bedroom light is now on for your dog, Bruno."。 这展现了Lares的自主决策和问题解决能力。

代理主动与用户交互:用户指令 "set the light in the office depending on if it's daytime",Lares 由于不知道是否白天,会调用 askUser 函数询问用户 "Is it currently daytime?",根据用户的回答(例如 "yes"),决定是否关闭办公室的灯,并输出相应的反馈信息。

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

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

相关文章

Halcon 轮廓检测常用算子、原理及应用场景

一、引言 在机器视觉领域,轮廓检测是一项关键技术,它能够提取物体的边缘信息,从而实现物体的定位、识别、测量等多种功能。Halcon 作为一款强大的机器视觉软件库,提供了丰富的轮廓检测算子。本文将详细介绍 Halcon 中轮廓检测的常…

11.23[大数据]

PRO1:LSTM模型预测输出都是同一个值? 画出来的图像就是一条横线 这个搜了搜,原因可能有很多,但感觉最主要的原因极可能是激活函数选择不当,以及层的搭建不合适 原模型是 REF https://zhuanlan.zhihu.com/p/654325094 https:/…

TEA系列例题

解析 TEA 加密算法(C语言、python):_tea加密-CSDN博客 CTF-RE 从0到N: TEA_tea加密原理-CSDN博客 1 字节 8 位 牢记密文的64位和密钥的128位,最好可以自己独立的写出tea解密代码 相当于密文是传入8个字符类型数据或者是2个整型数据, 密钥是16个字符数据或者4个…

[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板

目录 X-CMD 发布 v0.4.15📃Changelog📦 env|pkg🪞 mirror📑 pb🎨 theme|starship|ohmyposh🤖 chat📝 man✅ 升级指南 X-CMD 发布 v0.4.15 📃Changelog 📦 env|pkg 新增…

SpringBoot【一】零基础入门 springboot 及 idea 搭建

一、前言 springboot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解&#xff0…

【kotlin 】内联类(value class / inline class)

官方文档:https://kotlinlang.org/docs/inline-classes.html 注:inline class 关键字已经被废弃,取而代之的是value class。现在使用内联类需要定义类为value class,并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…

3D 生成重建023-DMV3D用扩散模型做3D生成大模型

3D 生成重建023-DMV3D用扩散模型做3D生成大模型 文章目录 0 论文工作1 论文方法2 实验效果 0 论文工作 这个论文提出了一种新的三维生成方法DMV3D,它利用基于Transformer 的大型三维重建模型对多视图扩散进行去噪处理。重建模型包含三平面NeRF表示,并能…

Linux - 进程等待和进程替换

进程等待 前面我们了解了如果父进程没有回收子进程, 那么当子进程接收后, 就会一直处于僵尸状态, 导致内存泄漏, 那么我们如何让父进程来回收子进程的资源. waitpid 我们可以通过 Linux 提供的系统调用函数 wait 系列函数来等待子进程死亡, 并回收资源. #include <sys/t…

【Redis】壹 —— Redis 介绍

文章目录&#xff1a; 前言 一、认识Redis 1. Redis 用途 作为数据库 作为流引擎 二、服务端高并发分布式结构演变 1. 单机架构 2. 应用数据分离架构 3. 应用服务集群架构 4. 读写分离 / 主从分离架构 5. 冷热分离 —— 引入缓存 6. 分库分表 7. 微服务架构 8. …

D88【python 接口自动化学习】- pytest基础用法

day88 pytest运行参数-q -s -v 学习日期&#xff1a;20241203 学习目标&#xff1a;pytest基础用法 -- pytest运行参数-q -s -v&pytest使用ini配置指定运行参数 学习笔记&#xff1a; pytest -q 说明&#xff1a;简化控制台的输出 pytest -q .\testcases\test_reques…

22 网络编程:Go 语言如何通过 RPC 实现跨平台服务

在上一讲中&#xff0c;我为你讲解了 RESTful API 的规范以及实现&#xff0c;并且留了两个作业&#xff0c;它们分别是删除和修改用户&#xff0c;现在我为你讲解这两个作业。 删除一个用户比较简单&#xff0c;它的 API 格式和获取一个用户一样&#xff0c;但是 HTTP 方法换…

java八股-流量封控系统

文章目录 请求后台管理的频率-流量限制流量限制的业务代码UserFlowRiskControlFilter 短链接中台的流量限制CustomBlockHandler 对指定接口限流UserFlowRiskControlConfigurationSentinelRuleConfig 请求后台管理的频率-流量限制 根据登录用户做出控制&#xff0c;比如 x 秒请…

AI给我们生活带来了哪些便利?

在21世纪的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;如同一股不可阻挡的力量&#xff0c;正深刻地改变着我们的生活方式&#xff0c;从日常琐事到复杂决策&#xff0c;无一不渗透着AI的智慧之光。它不仅极大地提升了生活效率&#xff0c;还为我们开启了前所未…

在vue3里使用scss实现简单的换肤功能

实现的换肤功能&#xff1a;主题色切换、亮色模式和暗黑模式切换、背景图切换 主题色就是网站主色&#xff0c;可以配置到组件库上面&#xff1b;亮色模式又分为两种风格&#xff1a;纯白风格和背景图风格&#xff0c;不需要背景图的话可以删掉这部分逻辑和相关定义&#xff1b…

css实现圆周运动效果

在CSS中可以通过 keyframes 动画 和 transform 属性实现元素的圆周运动。以下是一个示例代码&#xff1a; 示例代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content…

Python subprocess.run 使用注意事项,避免出现list index out of range

在执行iOS UI 自动化专项测试的时候&#xff0c;在运行第一遍的时候遇到了这样的错误&#xff1a; 2024-12-04 20:22:27 ERROR conftest pytest_runtest_makereport 106 Test test_open_stream.py::TestOpenStream::test_xxx_open_stream[iPhoneX-xxx-1-250] failed with err…

不一样的CSS(4)--icon图标系列之svg

序言 上一节内容我们讲解了如何利用css去画一个五角星&#xff0c;其中包括了使用svg的方法&#xff0c;有些小伙伴们对svg的使用不是很了解&#xff0c;那么本节内容我们主要来讲一下&#xff0c;关于svg标签的的使用。 目录 序言一、svg的介绍二、安装SVG扩展插件三、SVG基…

springSecurity认证流程

Spring Security 是spring家族中的一个安全管理框架。相比于另一个安全框架Shiro&#xff0c;它提供更丰富的功能和社区资源&#xff0c;但也较难上手。所以一般大项目用spring Security&#xff0c;小项目用Shiro。 一般web应用需要认证和授权&#xff0c;这也是spring Secur…

FastAPI解决跨域报错net::ERR_FAILED 200 (OK)

目录 一、跨域问题的本质 二、FastAPI中的CORS处理 1. 安装FastAPI和CORS中间件 2. 配置CORS中间件 3. 运行FastAPI应用 三、解决跨域报错的步骤 四、案例:解决Vue.js与FastAPI的跨域问题 1. Vue.js前端应用 2. FastAPI后端API 3. 配置CORS中间件 4. 运行和测试 五…

react跳转传参的方法

传参 首先下载命令行 npm react-router-dom 然后引入此代码 前面跳转的是页面 后面传的是你需要传的参数接参 引入此方法 useLocation()&#xff1a;这是 react-router-dom 提供的一个钩子&#xff0c;用于获取当前路由的位置对象location.state&#xff1a;这是从其他页面传…