TaskWeaver:代码优先的代理框架
  bQRZHYftxMZv 2023年12月23日 114 0


大型语言模型 (LLM) 在自然语言理解和生成方面表现出了令人印象深刻的能力,导致它们在聊天机器人和虚拟助理等应用中得到使用。然而,现有的法学硕士框架在处理具有丰富数据结构的特定领域数据分析任务时面临局限性。此外,他们还难以灵活地满足不同的用户需求。为了解决这些问题,TaskWeaver 被提议作为构建 LLM 支持的自主代理的代码优先框架。
它将用户请求转换为可执行代码,并将用户定义的插件视为可调用函数。TaskWeaver 提供丰富的数据结构、灵活的插件使用和动态插件选择的支持,并利用 LLM 编码能力来实现复杂的逻辑。它还通过示例结合了特定领域的知识,并确保生成的代码的安全执行。 TaskWeaver 提供了一个强大而灵活的框架,用于创建智能会话代理,可以处理复杂的任务并适应特定领域的场景。该代码在 https://github.com/microsoft/TaskWeaver/ 上开源。

1.介绍

大型语言模型(LLM),例如 GPT [18, 12]、Claude [11]、Palm [10] 和 Llama [19],在自然语言理解和生成方面表现出了卓越的能力。这些模型已广泛应用于各种应用,包括聊天机器人、虚拟助理和内容生成系统。人机交互有越来越大的潜力来彻底改变人类与机器交互的方式,提供更自然和直观的体验。

代理,特别是那些利用大型语言模型(LLM)或其他人工智能技术的代理,被视为一个自主实体,具有规划任务、观察周围环境并相应执行适当操作的能力[20, 22]。一些现有的框架,包括 Langchain [6]、Semantic Kernel [8]、Transformers Agent [9]、Agents [25]、AutoGen [1] 和 JARVIS [5],都在努力利用 LLM 进行面向任务的对话。

这些框架使用户能够通过发出自然语言请求并接收响应来与 LLM 支持的代理进行交互。然而,这些框架具有局限性,限制了它们处理特定领域场景和数据分析任务的效率。

一个主要限制是大多数现有框架缺乏处理丰富数据结构的本机支持。 LLM 支持的代理通常需要处理复杂的数据结构,例如嵌套列表、字典或数据框架,用于数据分析应用程序和许多其他业务场景。然而,许多现有框架很难有效地处理这些结构,特别是在聊天轮之间或不同插件之间传输信息时。在这种情况下,这些框架要么将数据保存到磁盘,要么将复杂结构编码为提示中的字符串或 JSON 对象。尽管这些方法很实用,但它们可能会导致不切实际并增加错误率,特别是在处理大型数据集时。

现有方法的另一个限制是缺乏合并领域知识的配置。虽然这些框架为快速工程提供了工具和示例,但它们未能提供系统的方法来将特定领域的知识嵌入到规划和代码生成过程中。因此,这种限制使得根据特定领域要求控制规划和代码生成过程变得具有挑战性。

许多现有框架遇到的另一个问题是缺乏灵活性,这阻碍了满足用户多样化需求的能力。尽管插件可以满足常见需求,但在处理临时查询时它们可能会有所不足。为每个临时查询编写单独的插件是不切实际的。在这些情况下,代理有必要能够编写自定义代码来执行用户的查询。因此,需要一种将插件执行与自定义代码执行无缝集成的解决方案来解决这个问题

为了解决这些限制,我们提出了 TaskWeaver,一个用于构建 LLM 支持的自主代理的代码优先框架。 TaskWeaver 的突出特点是能够将每个用户请求转换为可执行代码,将用户定义的插件视为可调用函数。 TaskWeaver 通过提供丰富的数据结构支持、灵活的插件使用和动态插件选择来克服现有框架的局限性。它利用人机交互的编码能力来实现复杂的逻辑,并通过示例融入特定领域的知识。此外,TaskWeaver 在生成代码的安全执行方面做出了相当大的努力,并为开发人员提供了易于使用的界面。

在本文中,我们介绍了 TaskWeaver 的设计和实现,以及几个证明其在处理各种任务方面的有效性的案例研究。总的来说,TaskWeaver 提供了一个强大而灵活的框架,用于构建智能会话代理,可以处理复杂的任务并适应特定领域的场景。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月23日 0

暂无评论

bQRZHYftxMZv