前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
NLP自然语言处理_基础版,每接口每天50万次
简介: 本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。

今天就遇到有点儿dt的问题,利用大模型顺利通了自定义的工具调用(并没有用到tools功能,而是通过prompt强制输出),单个单个的没问题哈,但是多个一起就出现问题了

我说“关闭电脑PC1, 打开第2台电脑” 它看不懂了,但我反过来说“打开第2台电脑,关闭电脑PC1”,它倒是很机智,顺利找到了对应的主机id并调用了正确的工具,反正我是一脸懵逼,这到底是个什么鬼?毕竟是个黑盒,找到原因可能难但问题必须解决撒,只能另辟蹊径(PS这个不是恶作剧,而是一个云桌面的运维后台,我正研究如何利用AI提升效率)

1 问题背景:自然语言指令处理中的困境

在多任务处理的场景下,用户可能会提出一些包含多个动作的指令,比如:

  • “关闭电脑PC1,打开第2台电脑。”
  • “打开第四台电脑,关闭电脑PC1。”

通过实际测试,发现模型在面对这些复杂指令时,有时无法正确理解和执行所有任务。例如:

  • 当用户要求“关闭电脑PC1,打开第2台电脑”时,模型可能无法正确调用两个工具来分别执行这两个操作。
  • 但当指令顺序被调整为“打开第四台电脑,关闭电脑PC1”时,模型能够正确地按顺序调用工具,并且完成了用户的需求。

17368ae4857b4cb78c3cb91c02bd853c.png

image.gif 编辑

这种现象提示我们,模型在解析和执行指令时受到指令语序和结构的影响。因此,我们需要一种方法来更好地解析用户的复杂指令,并将其转换为具体的可执行操作。

2 解决方案:通过 LLM 解析层进行指令分解

为了让 LLM 更好地处理这些复杂的自然语言指令,建议增加一个专门的解析层,用于将原始的自然语言需求转换为多个明确的、可执行的步骤。该解析层可以通过 LLM 来实现,具体功能如下:

1. 分解复杂指令为多个步骤

用户的自然语言指令往往包含多个动作,这些动作有时是并行的,有时是按顺序执行的。通过 LLM 解析层,我们可以将复杂的指令进行拆解。例如:

  • 用户输入:“关闭电脑PC1,打开第2台电脑。”
  • 解析层输出:
  • Step 1: 关闭电脑PC1
  • Step 2: 打开第2台电脑

通过这种方式,每一个步骤都变得更加明确,可以独立执行,并且避免了模型对多个并列任务的混淆。

2. 明确操作类型与对象识别

解析层可以帮助模型更好地理解每个指令中的动词(如“关闭”或“打开”)及其作用对象(如“电脑PC1”或“第2台电脑”)。例如:

  • 用户输入:“打开第四台电脑,关闭电脑PC1。”
  • 解析层输出:
  • Action 1: 打开 -> 电脑PC4
  • Action 2: 关闭 -> 电脑PC1

通过这种明确的操作类型和对象识别,模型可以清晰地理解每个操作需要作用的目标,并根据目标生成正确的操作命令。

3. 处理任务的依赖关系

在复杂的任务环境中,某些操作之间存在依赖关系。例如,可能需要先关闭一台电脑再打开另一台。这时,解析层可以识别这些依赖关系,并为模型生成有序的执行步骤。对于顺序不明的任务,解析层可以判断是否需要并行执行任务,或者是否需要调整任务的顺序。

4. 自然语言转为工具命令

通过解析层,模型可以将复杂的自然语言指令转化为系统所需的结构化工具命令。以关闭和打开电脑为例,经过解析的步骤最终可以生成具体的 API 调用或命令行操作,如:

  • Command 1: 关闭(PC1)
  • Command 2: 打开(PC2)

这种方法将自然语言需求转化为明确的系统命令,使得多任务处理更加高效且可控。

3 实践示例

假设用户发出了如下复杂指令:

  • 用户输入:“请先关闭PC3,然后开启PC1和PC4,最后关掉PC2。”

通过 LLM 解析层,这个复杂的需求可以被拆解为多个明确的任务步骤:

  1. Step 1: 关闭 PC3
  2. Step 2: 开启 PC1
  3. Step 3: 开启 PC4
  4. Step 4: 关闭 PC2

模型再根据这些步骤依次执行任务,或者将并行任务(如开启PC1和PC4)同时处理,最终确保任务按预期完成。

4 如何设计解析层

要设计一个高效的 LLM 解析层,需要注意以下几个关键点:

  1. 鲁棒的指令拆解能力:解析层需要能够理解复杂的自然语言指令,并准确提取出任务的关键动词和作用对象。比如,“关闭”“打开”等动词以及“PC1”“PC4”等对象的识别必须准确无误。
  2. 任务依赖关系的识别:解析层必须能够处理任务之间的依赖关系,确保前后顺序的合理性。在需要时,能够区分并行任务与串行任务。
  3. 应对模糊指令的能力:用户的自然语言可能包含模糊表达,如“打开所有电脑”,解析层需要能够处理这种模糊需求,推理出上下文中的具体执行对象。
  4. 灵活性与适应性:解析层还需要能够应对不同领域的任务需求,具有足够的灵活性来解析不同语境下的指令。

5 总结

通过增加一个 LLM 解析层,可以极大提高多任务处理场景中指令解析的准确性和执行效率。它不仅可以将复杂的自然语言指令拆解为多个明确的操作步骤,还能够根据任务间的依赖关系调整顺序,生成具体的工具命令,确保任务的正确执行。


目录
相关文章
|
6天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
8天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1563 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
11天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
738 27
|
8天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
225 3
|
15天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
787 5
|
2天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
108 60
|
1天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
115 1
|
3天前
|
Java 开发者
【编程进阶知识】《Java 文件复制魔法:FileReader/FileWriter 的奇妙之旅》
本文深入探讨了如何使用 Java 中的 FileReader 和 FileWriter 进行文件复制操作,包括按字符和字符数组复制。通过详细讲解、代码示例和流程图,帮助读者掌握这一重要技能,提升 Java 编程能力。适合初学者和进阶开发者阅读。
104 61
|
14天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】