分享

解锁大模型智能体核心技术,10行代码轻松构建专属AI助手!

 西北望msm66g9f 2023-10-18 发布于湖南

随着 GPT-3.5 和 GPT-4 的问世,我们体验到了大语言模型能力的强大,对大语言模型也产生了很多的关注和期待。在使用大语言模型的过程中,我们也发现 LLM 并不是无所不能的。例如,当前的大语言模型并不能很好地处理大数计算、难以及时了解最新的信息资讯、也难以凭借自身能力作出完全准确的长回复。在这种情况下,以插件等形式对大语言模型进行能力拓展逐渐成为了一种有效形式。工具/插件的使用极大地拓宽了大语言模型的能力和应用边界,此时我们也开始将 LLM 和工具的组合系统称为“智能体”(又称 Language Agents)。

最近一段时间,社区涌现出了一批以 ReAct 为代表的智能体的研究工作,也涌现出一批以 Langchain 为代表的工具箱来将外部工具和 GPT-3.5/4 链接到一起,构建以 LLM 为核心的应用。然而,在实际使用过程中,Langchain 因为其代码框架的复杂度高,难以 debug 等缺点也引起了不少社区用户的吐槽。整个社区也缺乏一个简洁易拓展的智能体代码库用于上手和学习。为了简化大语言模型接入智能体系统的流程,提升智能体系统的易用性和拓展性,上海人工智能实验室研发了 Lagent 智能体框架,以助力社区用户高效地研发和拓展 Language Agents

接下来,本文将介绍书生·浦语 智能体框架 Lagent,并通过代码直观感受基于 Lagent 快速构建大语言模型智能体的简洁流程。最后,我们会以 ReAct 为例揭秘 Language Agent 的实现原理。

https://github.com/InternLM/lagent

(欢迎使用,文末点击阅读原文可直达)

Lagent:简洁的智能体框架

特性

Lagent 的命名来源于 Language Agents (L-Agent)的缩写,主要目标是为了高效构建和拓展基于大语言模型的智能体。它有如下三个特点:

支持丰富、高度可配置的智能体

Lagent 目前支持了常见的 3 种类型的智能体,如下图所示,包括了 ReAct、ReWoo 和 AutoGPT。这三种智能体实现了不同的推理、规划、执行流程与用户进行交互。在实现过程中,每一个智能体的 prompt 等都是高度可配置的,同时也支持接入各种 Action,因而非常灵活。用户可以实现一个中文版的 ReAct,也可以针对特定场景去优化prompt,或者接入自己开发的工具。

图片

灵活支持多种大语言模型

Lagent 支持了闭源模型的 API,例如 GPT-3.5 和 GPT-4。同时接入了 Huggingface Transformers,因此可以使用 Transformers 中的所有开源大语言模型,例如 InternLM,Llama 2 和 Baichuan-chat 等。

为了提升接入的 LLM 推理效率,Lagent 还支持了 LMDeploy,因此,Lagent 可以借助 LMDeploy 对支持的各类 LLM (例如 InternLM 和 Llama 2)进行高效推理。

P.S. LMDeploy 也是一个功能丰富的宝藏库,后续也会有专门的介绍,敬请关注!

支持丰富的工具类型

Lagent 可以支持丰富的工具类型,包括目前已经支持的搜索和 Code Interpreter。用户需要支持新的工具,只需要基于 BaseAction 实现传参调用的逻辑,同时对这个工具进行命名和说明即可。

小彩蛋:我们在内部也支持了丰富的 AI 工具和 API,敬请大家关注后续的发布内容。

设计

目前,Lagent 中实现的智能体采用了如下图所示的设计。LLM 会接受外界的输入,基于 Agent 实现的某种机制进行推理、规划和行动,在行动阶段调用 Action Executor(动作执行器)去执行具体的 action,并返回行动结果。

图片

因此,在实际代码库的实现过程中,也有和上图一一对应的模块化设计。如下图所示,在智能体抽象中,我们会实现如 ReAct 等智能体,并在里面实现具体的规划-执行逻辑。LLM 的调用由语言模型接口提供,支持了 OpenAI、Huggingface Transformers,和 LMdeploy。动作库除了执行器之外,还有一系列action/工具实现。后续 Lagent 会进一步支持 memory 的使用,如向量数据库。

图片

如何快速创建一个智能体

10 行代码构建 ReAct Agent

得益于设计的简洁性,我们只需要不到 10 行代码,就可以在 Lagent 中基于 Huggingface Transformer 构建一个 ReAct 智能体。

如下面的代码所示,前三行代码分别从 agents/actions/llms 的包中导入需要的智能体/插件/LLM模块。在这个例子里我们使用 InternLM-Chat 20B 模型,这个模型针对工具调用和 code interpreter 都有一些强化,在 ToolBench 上也有不俗的表现。我们只初始化了 PythonInterpreter ,用来验证代码解题的效果。在对每个模块初始化以后,就可以把他们组合起来初始化 ReAct Agent 并对话。值得注意的是,不管是使用什么 agent,或者使用何种插件,在 lagent 中构建他们的流程和思路都是一致且简单的,这和 langchain 相比有显著的优势。

图片


一键启动 Web Demo

使用如下代码即可启动 ReAct 的 Web Demo 并和它对话,如下便是一个用代码解决数学题的例子:

图片
图片

ReAct 黑箱揭秘

看了上面的例子,小伙伴们肯定会想了解背后的实现原理,那我们接下来就看一看 ReAct Agent 是如何实现的。下面的例子里,我们也还是使用 InternLM 模型的真实输出来介绍。

Language Agent 本质上是以语言的形式,通过约定好的格式不断地和模型对话,最终完成用户的需求。在 Lagent 实现的 ReAct 中,有如下三个主要角色:

  • <System>: 一个整体驱动器,提供全局的流程设定和函数列表,并且可以根据请求调用函数。

  • <Human>: 代表用户,提供用户输入。

  • <Bot>: 经过指令微调的语言模型,它具备预训练时形成的各方面基础能力,在指令微调阶段后能够根据用户输入推理并“执行计划”,并根据用户输入与函数调用结果进行结果整合。

系统设定

在和 ReAct Agent 启动对话的初始阶段, 我们基于 ReAct 的逻辑规则将可调用的函数/工具以及函数的信息和使用方式放入系统指令中,让语言模型在每段对话的开始阶段都接收到系统指令,如下所示:

图片

用户输入

然后用户可以和模型对话,例如,用户输入:

图片

模型思考

根据用户输入,语言模型会进行推理,并遵循系统指定的格式一次性产生回复,如下所示,语言模型会见到 <Human> 部分以及前面 <System> 的内容,然后产生回复(即<Bot> 产生的内容)。这里 InternLM-20B 模型按照约定的格式进行了输出,利用 sympy 写了一段代码,直接调用了 summation 函数完成了数列求和(amazing,一开始小编都不知道还有这个函数,以为要直接写 for loop 了)。

图片

执行代码

基于规则,我们会从 <Bot> 的回复中提取 ThoughtAction和 Argument,基于 Action 字段调用 PythonExecutor 并执行 Argument 中的代码,计算得到 255。

整合结果

此时会将计算结果和约定格式的文本拼接起来向模型提供调用结果,并将之前的对话历史都拼接起来送给模型,然后模型会基于完整信息给出回复:

图片

总结

在这篇文章中,我们了解了 Lagent 的简洁设计以及如何基于 Lagent 快速构建一个智能体,也了解了以 ReAct 为代表的大语言模型智能体的技术奥秘。最近社区里也涌现出了一批新的智能体的相关工作,小编已经深感学不动啦~

最后,也欢迎大家关注 InternLM 的系列开源库,包括:

  • InternLM 书生·浦语大模型,包含面向实用场景的 70 亿参数基础模型与对话模型 (InternLM-7B)和 200 亿参数基础模型与对话模型 (InternLM-20B)

    https://github.com/InternLM/InternLM

  • LMDeploy 面向大模型部署的推理工具链,支持十亿到千亿参数语言模型的高效推理。推理性能领先开源社区。

    https://github.com/InternLM/lmdeploy

  • OpenCompass 面向大模型评测的一站式、全方位评测平台,包含超过 70 个评测集、40 万评测题目。通过全自动分布式评测,保障开源模型性能可高效复现。

    https://github.com/open-compass/opencompass

  • XTuner 大模型轻量级微调框架,支持在消费级显卡上微调大语言模型,支持多种大语言模型、数据集、和微调算法,支撑用户根据自身具体需求选择合适的解决方案。

    https://github.com/InternLM/xtuner

欢迎扫码加入 Lagent 微信交流群)

多模态,原来竟有这么多花样?

2023-10-17

图片

大模型时代通用检测趋势解读及MMDetection未来展望

2023-10-16

图片

上海人工智能实验室大模型方向招聘 | 《offer来了》第3期

2023-10-13

图片

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多