全新的研究方式|使用LangChain、OpenAI和SerpApi构建MRKL自治代理,让您的研究更加智能!
00 分钟
2023-8-18
2023-8-26
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
notion image
使用 LangChain、OpenAI 和 SerpApi 创建 MRKL 自治代理
MRKL 是模块化推理、知识和语言系统的缩写。它是一种模块化架构,结合了大型语言模型 (LLM)、外部知识源和离散推理。
 
本文介绍了 MRKL 代理的基础知识以及如何使用 LangChain 框架构建 MRKL 代理。
本文中还介绍了为单输入和多输入场景构建 MRKL 代理的 Python 代码。
在本文后面,您将看到我如何将代理输出记录到LangSmith,以深入、顺序地了解 LLM 链如何在代理内执行;填充的提示也可见。
您还会注意到提示模板的使用程度,这些提示也可以通过游乐场手动提交给法学硕士进行检查
notion image
因此,法学硕士实际上是通往知识世界的文本门户,也许应该被称为“语言和知识”模型。

一般来说,默认的 LLM 限制是:

  1. 无法获取当前信息
  1. 无法访问专有信息源
  1. 缺乏推理能力
  1. 轻松微调
这些缺点可以通过及时的工程来解决,而法学硕士可以作为任务和工具驱动的自主代理的支柱。
有人可能会说,当提供高度准确和上下文提示时,LLM 零样本性能可以与微调模型相媲美。因此,与微调相比,快速的工程方法可以提供更多的多功能性。

MRKL 代理由三部分组成:

工具:代理可以使用的工具。
LLMChain:LLMChain 生成文本,该文本以某种方式解析以确定要采取的操作。
代理类:解析 LLMChain 的输出以确定要采取的操作。
创建自定义 LLMChain 的大部分工作都归结为创建良好的提示。提示还指导代理以何种方式将数据呈现给法学硕士。
还有一个输入变量,用于agent_scratchpad存储先前操作和观察的注释。
代理核心的提示可以根据需要进行定制和调整。
下面是可以在 Colab 笔记本中运行的 Python 代码,请注意对搜索工具的描述。这有助于代理了解何时使用该工具。
如果代理可以访问多个工具并且需要区分何时使用什么工具,则此描述尤其重要。
另请注意作为代理核心的提示模板是如何定义的。提示有前缀和后缀,因此这是composition的实现。
提示模板,可以通过运行以下命令查看其中的占位符:
print 命令的输出,可以从其中查看提示。
下面llm_chain定义了,tool_names等等。
使用下面的运行命令执行代理,并插入代理的问题。
运行输出,包括智能体的想法、行动、行动输入、观察、想法和最终答案:

多输入

如果有多个输入会发生什么?下面我们有三个输入变量:输入、语言和代理暂存器。
再次可以看到提示:
以及带有提示模板的输出,带有占位符{language}{input}{agent_scratchpad}
代理以问题作为输入运行,响应语言定义为Afrikaans
代理以正确的语言输出正确的答案。

LangSmith

在 LangSmith 中,我创建了一个从代码中引用的项目。这包含在上面的 Python 代码示例中。
notion image
我运行 MRKL 代理七次,下面是每次运行的延迟和使用的令牌。带有输入、输出和时间戳。
notion image
深入了解代理运行,可以看到完整的跟踪,包括延迟和链中的每个步骤以及使用的令牌。它还清楚地表明了法学硕士在此过程中的作用。
notion image
我真正喜欢的是可以从 LangSmith 检查提示。
notion image
完成的提示是可见的,LangSmith 是检查和优化代理的理想工具。
notion image
 

作者:Cobus Greyling
 

评论