![](https://img-blog.csdnimg.cn/eec7649b6166419b85b46dbc6054d2ef.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大模型从入门到应用
文章平均质量分 91
《大模型从入门到应用》系列以大语言模型的基础知识为起点,介绍了大模型的框架和常见的训练方法。除此之外,本系列还介绍了当今较为流行的大模型如:GPT、LLaMA、ChatGLM等。本系列由浅入深,全面介绍了大模型尤其是大语言模型的各类知识。初学者可以与《深入理解深度学习》系列和《深入理解强化学习》系列
von Neumann
技术日新月异,人类生活方式正在快速转变,这一切给人类历史带来了一系列不可思议的奇点。我们曾经熟悉的一切,都开始变得陌生。
展开
-
大模型从入门到应用——LangChain:提示(Prompts)-[基础知识]
提示是传递给语言模型的值,这个值可以是字符串(用于语言模型)或消息列表(用于对话模型)系列文章为特定类型的字符串提示、特定类型的聊天提示、示例选择器和输出解析器提供了深入的文档。[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/[1] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/原创 2023-07-28 21:01:49 · 2645 阅读 · 0 评论 -
大模型从入门到应用——LangChain:代理(Agents)-[带有ChatModel的LLM聊天自定义代理和自定义多操作代理(Custom MultiAction Agent)]
本部分将介绍如何基于聊天模型创建自己的自定义代理。PromptTemplate:这是用于指示语言模型该做什么的提示模板ChatModel:这是驱动代理的语言模型Stop序列:指示LLM在找到此字符串时停止生成OutputParser:确定如何将LLM输出解析为或对象。LLMAgent用于代理执行器。将用户输入和任何先前的步骤传递给代理(在这种情况下是LLMAgent)如果代理返回,则将其直接返回给用户本教程介绍如何创建您自己的自定义代理。工具:代理可以使用的工具。原创 2023-07-17 20:16:14 · 12590 阅读 · 0 评论 -
大模型从入门到应用——LangChain:代理(Agents)-[自定义MRKL代理]
本部分将介绍如何基于聊天模型创建自己的自定义代理。PromptTemplate:这是用于指示语言模型该做什么的提示模板ChatModel:这是驱动代理的语言模型Stop序列:指示LLM在找到此字符串时停止生成OutputParser:确定如何将LLM输出解析为或对象。LLMAgent用于代理执行器。将用户输入和任何先前的步骤传递给代理(在这种情况下是LLMAgent)如果代理返回,则将其直接返回给用户本部分将介绍如何创建自己的自定义MRKL Agent。工具:代理可用的工具。原创 2023-07-17 19:41:11 · 12548 阅读 · 0 评论 -
大模型从入门到应用——LangChain:代理(Agents)-[自定义代理(Custom Agent)]
本节介绍的是使用检索来选择要用于回答代理查询的工具集。当你有很多工具可供选择时,带工具检索的自定义代理将非常有用。你不能在提示中放置所有工具的描述(由于上下文长度问题),因此你动态选择你想要在运行时考虑使用的多个工具。在下面的例子中,我们将一个合适的工具(搜索),和99个假工具。然后,我们将在提示模板中添加一个步骤,该步骤接受用户输入并检索与查询相关的工具。原创 2023-07-16 14:36:22 · 12163 阅读 · 0 评论 -
大模型从入门到应用——LangChain:代理(Agents)-[代理类型]
这个代理使用一个被命名为Intermediate Answer的工具。工具应该查找最近找到的文档中的一个术语。这个代理相当于最初的ReAct论文《REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS》,特别是维基百科的例子。它使用ReAct框架来决定使用哪个工具,并使用内存来记忆先前的对话交互。此代理使用ReAct框架,仅基于工具的描述来确定要使用的工具。可以提供任意数量的工具,但此代理需要为每个工具提供描述。工具,且它们必须被命名为这样。原创 2023-07-11 18:53:03 · 11931 阅读 · 0 评论 -
大模型从入门到应用——LangChain:代理(Agents)-[基础知识]
有些应用程序不仅需要预先确定的LLM或其他工具调用链,而且可能需要根据用户输入的不同而产生不同的链条。在这些类型的链条中,有一个“代理”可以访问一套工具。根据用户输入,代理可以决定是否调用其中任何一个工具。在本文中,我们首先“快速入门”代理,介绍如何以端到端的方式使用与代理相关的所有内容。一个动作可以是使用工具并观察其输出,或返回给用户。本文的目的是向您展示如何通过最简单、最高级别的API轻松使用代理。首先,让我们加载我们要使用的语言模型来控制代理。接下来,我们加载一些要使用的工具。原创 2023-07-10 20:26:19 · 12973 阅读 · 0 评论 -
大模型从入门到应用——LangChain:链(Chains)-[通用功能:链的保存(序列化)与加载(反序列化)]
本文介绍了如何将链保存(序列化)到磁盘和从磁盘加载(反序列化)。我们使用的序列化格式是json或yaml。目前,只有一些链支持这种类型的序列化。随着时间的推移,我们将增加支持的链条数量。原创 2023-08-22 21:39:45 · 2355 阅读 · 0 评论 -
大模型从入门到应用——LangChain:链(Chains)-[通用功能:SequentialChain和TransformationChain]
在调用语言模型之后,下一步是对语言模型进行一系列的调用。若可以将一个调用的输出作为另一个调用的输入时则特别有用。在本节中,我们将介绍如何使用顺序链来实现这一点。顺序链被定义为一系列按确定顺序调用的链条。在这个中,每个单独的链都有一个单一的输入和输出,一个步骤的输出被用作下一个步骤的输入。我们通过一个玩具例子来演示这个过程,其中第一个链接受一个虚构的剧本标题,然后生成该标题的简介,第二个链条接受该剧本的简介并生成一个虚构的评论。原创 2023-08-22 21:18:15 · 2877 阅读 · 2 评论 -
大模型从入门到应用——LangChain:链(Chains)-[通用功能:LLMChain和RouterChain]
它使用提供的输入键值(如果有的话,还包括内存键值)格式化提示模板,将格式化的字符串传递给LLM,并返回LLM的输出。[3] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/如果你想在LLM输出上应用输出解析器,可以使用。中的应用,创建一个问题回答链条,根据给定的问题选择最相关的提示,然后使用该提示回答问题。[1] LangChain官方网站:https://www.langchain.com/原创 2023-08-21 21:10:35 · 2016 阅读 · 0 评论 -
大模型从入门到应用——LangChain:链(Chains)-[通用功能:自定义Chain和Chain的异步API]
要实现自己的自定义链式连接,我们可以子类化Chain""""""@property"""@property"""def _call(self,# 在这里编写你的自定义链逻辑# 下面的示例仅模仿了 LLMChain# 当调用语言模型或其他链时,应该将回调管理器传递给它。# 这样可以让内部运行受到外部运行注册的任何回调的跟踪。# 你可以通过调用 `run_manager.get_child()` 获取回调管理器,如下所示。原创 2023-08-21 20:25:13 · 2791 阅读 · 0 评论 -
大模型从入门到应用——LangChain:链(Chains)-[基础知识]
LangChain提供了许多现成的链式连接,但有时我们可能希望为特定的用例创建自定义链式连接。在这个例子中,我们将创建一个自定义链式连接,它将两个LLMChain的输出连接起来。创建一个Chain类的子类填写input_keys和属性添加_call方法,展示如何执行链式连接@property@property",",参考文献:[1] LangChain官方网站:https://www.langchain.com/原创 2023-08-21 19:59:26 · 3277 阅读 · 0 评论 -
大模型从入门到应用——LangChain:索引(Indexes)-[检索器(Retrievers)]
检索器(Retrievers)是一个通用的接口,方便地将文档与语言模型结合在一起。该接口公开了一个`get_relevant_documents`方法,接受一个查询(字符串)并返回一组相关文档。以下是支持的所有检索器列表:原创 2023-08-21 19:03:16 · 3459 阅读 · 0 评论 -
大模型从入门到应用——LangChain:索引(Indexes)-[向量存储器(Vectorstores)]
Vectorstores是构建索引的最重要组件之一。本文展示了与VectorStores相关的基本功能。在使用VectorStores时,创建要放入其中的向量是一个关键部分,通常通过嵌入来创建。原创 2023-08-21 18:55:31 · 2575 阅读 · 0 评论 -
大模型入门到应用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]
理想情况下,我们希望将语义相关的文本块保持在一起,但什么是"语义相关"可能取决于文本的类型。它尝试根据第一个字符进行分块,但如果有任何分块过大,它将继续尝试下一个字符,依此类推。[3] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/[2] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/默认推荐的文本分割器是。原创 2023-08-21 18:45:29 · 4176 阅读 · 0 评论 -
大模型从入门到应用——LangChain:索引(Indexes)-[文档加载器(Document Loaders)]
合并语言模型和我们自己的文本数据是区分它们的一种强大方式,这样做的第一步是将数据加载到“文档”中,文档加载器的作用就是使这个过程变得简单。原创 2023-08-21 18:19:03 · 2741 阅读 · 0 评论 -
大模型从入门到应用——LangChain:索引(Indexes)-[基础知识]
索引(Indexes)是指为了使LLM与文档更好地进行交互而对其进行结构化的方式。因此,我们有一个称为Retriever的接口概念,这是大多数链所使用的接口。当我们谈论索引和检索时,通常是指索引和检索非结构化数据(如文本文档)。对于与结构化数据(例如SQL表等)或API的交互,请参阅相应的用例部分以获取相关功能的链接。LangChain 主要关注于构建索引,目标是使用它们作为检索器。为了更好地理解这意味着什么,有必要突出显示基本检索器接口是什么。LangChain 的上述代码中的。原创 2023-08-17 21:45:19 · 4181 阅读 · 1 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[记忆的存储与应用]
Zep 是一个存储、摘要、嵌入、索引和丰富对话式人工智能聊天历史记录的工具,并通过简单、低延迟的API进行访问。[3] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/[2] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/[1] LangChain官方网站:https://www.langchain.com/原创 2023-08-15 21:28:38 · 5624 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[聊天消息记录]
有时候在连接到AWS端点时指定URL非常有用,比如在本地使用Localstack进行开发。对于这种情况,我们可以通过构造函数中的参数来指定URL。原创 2023-08-15 21:11:17 · 4178 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[自定义对话记忆与自定义记忆类]
尽管在LangChain中有几种预定义的记忆类型,但我们很可能希望添加自己的记忆类型,以使其适用于我们的应用程序。在本节中,我们将向添加一个自定义的记忆类型。为了添加自定义的记忆类,我们需要导入基本的记忆类并对其进行子类化。在这个示例中,我们将编写一个自定义的记忆类,使用spacy提取实体并将有关它们的信息保存在一个简单的哈希表中。然后,在对话过程中,我们将查看输入文本,提取任何实体,并将关于它们的任何信息放入上下文中。需要注意的是,这种实现相当简单且脆弱,可能在生产环境中不太有用。原创 2023-08-14 21:11:31 · 2601 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[将记忆添加到LangChain组件中]
在本节中,我们将介绍如何将记忆添加到具有多个输入的链中。[3] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/我们可以看到代理记住了先前的问题是关于加拿大的,并正确询问了谷歌搜索加拿大的国歌是什么,让我们再将其与没有记忆的代理进行比较。在本示例中,我们将创建一个简单的自定义代理,该代理可以访问搜索工具,并使用。的记忆能力,我们可以提出一个跟前面交流有关的后续问题,以便正确回答。中,为了将记忆添加到。原创 2023-08-14 19:08:15 · 1802 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[记忆的类型:对话令牌缓冲存储器和基于向量存储的记忆]
对话令牌缓冲存储器`ConversationTokenBufferMemory`原创 2023-08-13 13:21:33 · 3737 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[记忆的类型:对话知识图谱记忆、对话摘要记忆和会话摘要缓冲记忆]
现在让我们来看一下使用稍微复杂的记忆类型。这种类型的记忆会随着时间的推移创建对话的摘要。这对于从对话中压缩信息非常有用。我们还可以直接使用将和的概念结合起来。它在内存中保留了最近的一些对话交互,并将它们编译成一个摘要。与先前的实现不同,它使用标记长度来确定何时刷新交互,而不是交互数量。我们还可以直接利用。原创 2023-08-10 21:05:39 · 2705 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[记忆的类型:会话缓存记忆、会话缓存窗口记忆和实体记忆]
本节将介绍如何使用对话缓存记忆`ConversationBufferMemory`。这种记忆方式允许存储消息,并将消息提取到一个变量中,我们首先将其提取为字符串:原创 2023-08-07 19:31:02 · 3438 阅读 · 0 评论 -
大模型从入门到应用——LangChain:记忆(Memory)-[基础知识]
默认情况下,链(Chains)和代理(Agents)是无状态的,这意味着它们将每个传入的查询视为独立的(底层的LLM和聊天模型也是如此)。在某些应用程序中(如:聊天机器人),记住先前的交互则非常重要。记忆(Memory)正是为此而设计的。LangChain提供两种形式的记忆组件。首先,LangChain提供了用于管理和操作先前聊天消息的辅助工具,这些工具都被设计为模块化的使用方式。其次,LangChain提供了将这些工具轻松整合到链中的方法。记忆涉及了在用户与语言模型的交互过程中保持状态的概念。原创 2023-08-06 13:23:16 · 13657 阅读 · 1 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[输出解析器(Output Parsers)]
语言模型输出的是文本,但很多时候,我们可能希望获取比纯文本更结构化的信息,输出解析器(Output Parsers)就可以帮助我们获取结构化信息。原创 2023-08-06 12:34:00 · 15216 阅读 · 1 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[示例选择器(Example Selectors)]
自定义示例选择器从给定的示例的列表中选择固定个示例。一个一个方法,它接受一个示例并将其添加到中一个方法,它接受输入变量(用户输入),并返回要在few-shot提示中使用的示例列表让我们实现一个简单的自定义,它只随机选择两个示例。"foo" : "3" } ] # 初始化示例选择器example_selector = CustomExampleSelector(examples) # 选择示例'foo' : '3' } ] # 向示例集合添加新示例# - > [ {原创 2023-08-03 21:44:45 · 15649 阅读 · 1 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[提示模板:序列化提示信息]
将提示信息存储为文件而不是Python代码通常更好。这样可以方便共享、存储和版本控制提示信息。本文介绍了如何在LangChain中进行提示信息的序列化,包括不同类型的提示信息和不同的序列化选项。LangChain还提供了一个单一的入口点,用于从磁盘加载提示信息,从而轻松加载任何类型的提示信息。原创 2023-07-31 20:14:46 · 13892 阅读 · 2 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[提示模板:部分填充的提示模板和提示合成]
另一个常见的用例是使用函数进行部分填充,这种情况下的用例主要针对当我们知道我们总是以相同方式获取某个变量时。方法的类,它接受一个键值映射并返回一个字符串(一个提示),以传递给语言模型。例如,传入所需值的子集,以创建一个新的提示模板,只需要剩余的子集值。这两种不同的方式支持不同的用例。在下面的文章中,我们将介绍这两种用例的动机以及在LangChain中如何实现它。部分填充提示模板的一个常见用例是,如果我们先获得某些变量,然后再获得其他变量。值部分填充提示模板,然后将部分填充的提示模板传递下去并直接使用它。原创 2023-07-31 19:32:17 · 13404 阅读 · 0 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[提示模板:创建自定义提示模板和含有Few-Shot示例的提示模板]
假设我们希望LLM根据函数名称生成该函数的英文语言解释。为了实现这个任务,我们将创建一个自定义的提示模板,以函数名称作为输入,并格式化提示模板以提供函数的源代码。LangChain提供了一组默认的提示模板,可用于生成各种任务的提示。但是,在某些情况下,默认的提示模板可能无法满足我们的需求。例如,我们可能希望创建一个具有特定动态指令的提示模板,以适应我们的语言模型。在这种情况下,我们可以创建自定义的提示模板。字符串提示模板:提供一个简单的字符串格式提示。原创 2023-07-31 18:50:40 · 13347 阅读 · 0 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[提示模板:连接到特征存储]
我们将使用Tecton教程中的Feature View作为Feature Service的一部分。为简单起见,我们只使用了一个Feature View;然而,更复杂的应用可能需要更多的Feature View来检索其提示所需的特征。上述Feature Service预计将被应用到实时工作空间中。在本示例中,我们将使用prod工作空间。原创 2023-07-30 20:30:37 · 12752 阅读 · 0 评论 -
大模型从入门到应用——LangChain:提示(Prompts)-[提示模板:基础知识]
语言模型以文本作为输入,这段文本通常被称为提示(Prompt)。通常情况下,这不仅仅是一个硬编码的字符串,而是模板、示例和用户输入的组合。LangChain提供了多个类和函数,以便轻松构建和处理提示。原创 2023-07-28 21:47:58 · 13197 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[文本嵌入模型:Embaas、Fake Embeddings、Google Vertex AI PaLM等]
本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商,如:OpenAI、Cohere、Hugging Face等,这个类旨在为所有这些提供一个标准接口。嵌入创建文本的向量表示会很有用,因为这意味着我们可以在向量空间中表示文本,并执行类似语义搜索这样的操作。原创 2023-07-26 21:14:53 · 12748 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[文本嵌入模型:Aleph Alpha、Amazon Bedrock、Azure OpenAI、Cohere等]
本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商,如:OpenAI、Cohere、Hugging Face等,这个类旨在为所有这些提供一个标准接口。嵌入创建文本的向量表示会很有用,因为这意味着我们可以在向量空间中表示文本,并执行类似语义搜索这样的操作。原创 2023-07-25 21:43:44 · 12331 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[聊天模型(Chat Models):使用少量示例和响应流式传输]
本部分的内容介绍了如何在聊天模型(Chat Models)中使用少量示例。因此,我们尚未固定任何关于此的抽象概念,而是使用现有的抽象概念。[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/[1] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/进行少量示例提示的第一种方式是使用交替的人工智能/人类消息。原创 2023-07-25 20:10:16 · 12564 阅读 · 2 评论 -
大模型从入门到应用——LangChain:模型(Models)-[聊天模型(Chat Models):基础知识]
聊天模型是语言模型的一种变体。虽然聊天模型在内部使用语言模型,但它们公开的接口略有不同。它们不是提供一个“输入文本,输出文本”的API,而是提供一个以“聊天消息”作为输入和输出的接口。聊天模型的API还比较新,因此我们仍在确定正确的抽象层次。通过向聊天模型传递一个或多个消息,可以获取聊天完成的结果。响应将是一个消息。LangChain目前支持的消息类型有AIMessage和,其中ChatMessage接受一个任意的角色参数。大多数情况下,我们只需要处理AIMessage和。原创 2023-07-25 19:57:54 · 12800 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs): 加载与保存LLM类、流式传输LLM与Chat Model响应和跟踪tokens使用情况]
目前,LangChain支持OpenAI、ChatOpenAI和ChatAnthropic实现的流媒体,但是学习LangChain的路线图上还有其他LLM实现的流媒体支持。[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/[1] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/在下面的例子中,我们使用了。原创 2023-07-25 19:34:00 · 13277 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):缓存LLM的调用结果]
大型语言模型(LLMs):缓存LLM的调用结果原创 2023-07-24 21:27:58 · 8567 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(Human Input LLM)]
本部分介绍如何创建自定义的LLM包装器,这部分的内容使我们可以使用自己的LLM或与LangChain支持的包装器不同的包装器。一个_call方法,它接受一个字符串、一些可选的停止词,并返回一个字符串。一个属性,用于帮助打印这个类。应该返回一个字典。让我们实现一个非常简单的自定义LLM,它只返回输入的前NNNprint(llm)'n' : 10 }原创 2023-07-24 20:03:42 · 25356 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):基础知识]
LLM类是专为与LLM接口设计的类。这很有用,因为模型有一个上下文长度,并且对于更多tokens的成本更高,这意味着我们需要知道传入的文本有多长。[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/》系列文章中,我们将专注于通用的LLM功能,而有关使用特定LLM包装器的详细信息,请参见具体的示例。在本文中,我们将使用OpenAI LLM包装器,其功能对于所有LLM类型都是通用的。原创 2023-07-20 21:20:06 · 8899 阅读 · 0 评论 -
大模型从入门到应用——LangChain:模型(Models)-[基础知识]
这两者之间有一个微妙的区别,但LangChain的主张提供了跨越这些的统一接口,因为虽然底层的 API 实际上是非常不同的,但我们会经常想要交替使用它们。》部分的文章介绍了LangChain中使用的不同类型的模型。在本文中,我们将阐述模型(Models)类型及模型的基础知识。[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/LangChain的核心价值提案之一是提供了一个标准接口来管理模型。原创 2023-07-20 20:38:04 · 12675 阅读 · 0 评论