什么是 JARVIS?

Pasted image 20241202203430 Pasted image 20241202203430

简介

贾维斯(jarvis)它可以帮助钢铁侠完成各种任务和挑战,包括控制和管理托尼的机甲装备,提供实时情报和数据分析,帮助托尼做出决策。 当梦想照进现实,你只需要一块3090。就可以拥有一个“青春版”的微软 JARVIS。

Pasted image 20241202203438 Pasted image 20241202203438
JARVIS 引入了一个协作系统,由 LLM 作为控制器和许多专家模型作为协作执行者(来自HuggingFace Hub) 通过利用 ChatGPT 的强大语言能力和 Hugging Face 中丰富的AI模型,JARVIS 能够处理跨越不同模态和领域的广泛复杂AI任务,并在语言、视觉、语音等其他具有挑战性的任务中取得令人印象深刻的结果。

任务执行流程

官方提供了一个案例: 请生成一个图像,其中一个女孩正在阅读一本书,她的姿势与图像 example.jpg 中的男孩相同。然后用你的声音描述一下新的图片。

Pasted image 20241202203447 Pasted image 20241202203447
从上图中可以看出执行一个任务分为四个阶段:

  1. 任务规划:LLM 将用户请求解析为任务列表,确定任务之间的执行顺序和资源依赖关系;
  2. 模型选择:LLM 根据 Hugging Face 上专家模型的描述,为任务分配合适的模型;
  3. 任务执行:各个模型分别执行分配的任务;
  4. 响应生成:LLM 整合了专家的推理结果,生成工作流日志摘要,对用户进行响应。

任务规划

任务解析模板包括四个槽 task、id、dep和args,用于表示任务名称、唯一标识符、依赖关系和参数

Pasted image 20241202205643 Pasted image 20241202205643

模型选择

首先从机器学习社区收集专家模型的描述,然后采用动态的上下文任务模型分配机制来选择任务模型。 由于最大上下文长度的限制,在一个提示中包含所有相关模型的信息是不可行的。为了缓解此问题,根据模型的任务类型筛选出模型,以选择与当前任务匹配的模型。

任务执行

将特定模型分配给解析后的任务后, 下一步就是执行该任务(即执行模型推理)。在这个阶段, jarvis 会自动将这些任务参数反馈到模型中,执行这些模型来获取推理结果,然后将它们发送回 LLM。现阶段要强调资源依赖问题。 由于先决条件任务的输出是动态生成的,因此 jarvis 还需要在启动任务之前动态指定任务的依赖资源。 资源依赖性 为了解决这个问题,使用唯一符号<resource>来维护资源依赖性。具体来说, jarvis 将先决条件任务生成的资源标识为<resource>-task_id,其中 task_id 是先决条件任务的 ID。在任务规划阶段,如果某些任务依赖于之前执行的任务(例如task_id)的输出, jarvis 会将<resource>-task_id设置为参数中相应的资源子字段。然后在任务执行阶段,jarvis 会动态地将这个符号替换为先决条件任务生成的资源。因此,该策略使 jarvis 能够在任务执行过程中有效地处理资源依赖关系。

响应生成

将前三个阶段(任务规划、模型选择、任务执行)的所有信息整合到一个简明的总结中,包括计划任务列表、任务选择的模型以及模型的推理结果。以友好的人类语言形式生成响应。

实验分析

定量评估

在 jarvis 中,任务规划在整个工作流程中起着举足轻重的作用,因为它决定了哪些任务将在后续管道中执行。因此,任务规划的质量可以用来衡量 LLM 作为 jarvis 中控制器的能力。 为了更好地对任务计划进行评估,将任务分为三个不同的类别,并为它们制定了不同的指标:

  1. 单个任务是指仅涉及一个任务的请求。当且仅当任务名称(即“任务”)和预测标签完全相同时,认为计划是正确的。
  2. 顺序任务表示可以将用户的请求分解为多个子任务的序列,然后判断任务的顺序是否合理。
  3. 使用 GPT-4 作为来评估规划的正确性。准确性是通过评估 GPT-4 的判断来获得的,称为 GPT-4 Score。 Prompt: 作为批评者,您的任务是评估 AI 助手是否根据用户的要求正确规划了任务。 为此,请仔细检查用户的请求和助手的输出,然后使用“是”或“否”(“是”表示准确的计划,“否”表示不准确的计划)提供决策。此外,使用以下结构提供选择的理由:
{'choice': 'yes'/'no', 'reason': 'Your reason for your choice'}.

请遵守以下准则:

  1. 必须从以下选项中选择任务:Available Task List。
  2. 请注意,任务之间存在逻辑关系和顺序。
  3. 只关注任务计划的正确性,而不考虑任务论据。正面示例:Positive Demos 负面示例:Negative Demos 当前用户请求:Input AI助手的输出:Output 您的判断:

为了进行评估,需要收集一些数据作为评估数据集。可以使用 GPT-4 生成任务计划作为伪标签,涵盖单个、顺序和图形任务。 然后人工标记为高质量的数据集。

局限性

  1. 可靠性:无法确保生成的计划始终是可行和最佳的,如何增强 LLM 的规划能力至关重要
  2. 时间:整个工作流程中与 LLM 进行多次交互,从而增加生成响应的时间成本
  3. token 长度:token 长度是使用 LLM 时的另一个常见问题,虽然某些模型已经到了 128k,但 token 过长也会影响时间和生成效果,如何简明扼要地总结模型描述值得探讨
  4. 稳定性:不稳定主要是因为 LLM 通常是不可控的。在设计系统时,应考虑如何减少推理过程中的这些不确定性。 总结 贾维斯以语言为接口将 LLM 与 AI 模型连接起来。 LLM 可以被视为管理 AI 模型的控制器,并且可以利用来自 Hugging Face 等 ML 社区的模型来自动解决用户的不同请求。通过利用 LLM 在理解和推理方面的优势,可以剖析用户的意图,并将其分解为多个子任务。然后,根据模型描述,jarvis 能够为每个任务分配最合适的模型,并整合来自不同模型的结果以生成最终响应。 jarvis 中的任务执行流程和定量评估,可以当作一种范式。 当一个系统接入 AI 去做一些复杂的事情时,这套流程能覆盖大多数场景。 上文中对于 jarvis 的局限性,其中最大的问题就是 LLM 生成计划的可行性,而 jarvis 优化方向更倾向于模型方面。 这里还有一种取巧的做法:缩短任务路径 假设原来 jarvis 解决一个问题,需要调用五次任务,每个任务之间串联的数据都是动态生产的,具有不可靠性,有一步出了问题,后面可能都会收到影响。 我们不妨把后四步封装为抽象为一个程序,这样任务的调用就缩短到了两步。 如果可以用工程化的手段来保证该程序的稳定,那么该任务的可行性就大幅度提高了。 这里程序具体来说就是各个领域的模块,例如:健康模块、任务执行模块(AppAgent)、消息记录模块(rewind)、答疑模块等 年轻人往往喜欢养生,那不妨先抽象出一个健康模块,我们称它为健康小秘。

什么是健康小秘

健康小秘:健康、私密、助手 健康小秘通过分析你的身体指标、运动数据、饮食,让你更加了解你的身体,辅助你提高身体状态。 那么这些数据从何而来呢?

产品分析

我们最常用的设备就是手机和手表,其中储存了大量个人信息。拿 ios 系统举例: Apple 健康中记录了用户健康和健身数据。 Apple 健康(Apple Health): Apple 健康是一个内置于iOS设备的应用程序,它可以追踪用户的健康和健身数据。用户可以在这个应用程序中查看各种健康指标,如步数、心率、睡眠质量等。此外,它还可以记录饮食和营养信息,帮助用户管理体重和健身目标。Apple 健康应用还能集成第三方健康和健身应用的数据,使用户能够在一个地方查看所有相关信息。 主要分几大类:呼吸、活动能力、健身记录、经期跟踪、身体测量、睡眠、听觉、心理健康、心脏、营养摄入、用药、症状、主要体征等

Pasted image 20241202203722 Pasted image 20241202203722
Pasted image 20241202203732 Pasted image 20241202203732
Pasted image 20241202203738 Pasted image 20241202203738
依托于 Apple 健康 诞生了一些健康类的 APP:

  1. Auto sleep: 一款睡眠跟踪应用程序。它可以自动追踪用户的睡眠模式,包括睡眠时间、睡眠质量、深睡和浅睡周期等。用户不需要设置或告诉应用何时去睡觉,AutoSleep能够通过分析用户的活动和心率数据来推断睡眠情况。如果用户佩戴Apple Watch睡觉,这个应用程序可以提供更加详细的睡眠分析。AutoSleep 还能将数据同步到Apple 健康应用中,为用户提供一个全面的健康追踪体验。
  2. Grow: 一款专注于个人成长、健康习惯养成或者身体健康的应用程序。有助于用户跟踪身体指标、设定健康目标、监测进步等。
  3. Hi water: 一款水量跟踪应用程序,旨在帮助用户监控他们的水分摄入量。它允许用户设定每日饮水目标,并在一天中记录饮水量。应用程序可能包括提醒功能,以提醒用户定时饮水,并跟踪他们是否达到了设定的水分摄入目标。 值得一提的是 Auto sleep、Grow 都是付费应用,分别是 ¥35、¥270。 两者只是利用 apple 健康数据做了二次加工,尚且没有接入 LLM。 付费的健康类 APP 还有 Keep 、训记等,用户已经有了付费意识。 LLM 下的健康 APP 目前尚无,仍是增量市场。 上面三种 APP 有些特征可以作为参考:
  4. 自动分析:Auto sleep 通过分析用户的活动和心率来推断睡眠情况;
  5. 运动计划:Grow 上可以指定健身计划,类似 apple watch 的健身环。
  6. 人工反馈数据:Hi water 中用户每次喝水的记录,都会反馈给 App,App 根据你的数据,判定饮水量是否充足。 参考上述特征,结合 LLM 能力,健康小秘 Alpha 原型如下: https://js.design/f/phViRk?p=2VBLmBWHiq&mode=whiteBoard

技术方案

代码仓库: https://github.com/bowling00/health-copilot 技术栈:

  1. react-native
  2. @kingstinct/react-native-healthkit Apple HealthKit 是苹果公司推出的一套健康和健身数据平台,它允许应用程序和健康相关的硬件设备共享数据。HealthKit的主要作用是作为一个中心仓库,存储用户的健康和健身信息,使得不同的应用程序和设备可以访问和使用这些信息来提供更加个性化和全面的健康管理服务。 获取数据 demo

Pasted image 20241202203745 Pasted image 20241202203745

相关资料

  1. JARVIS
  2. AppAgent
  3. rewind