LangChain是一个开源的Python库,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain,开发者可以轻松地与大型语言模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创意应用。
LangChain是一个基于Python的大模型(LLM)开发框架,可以降低AI应用开发成本,提高开发效率。
LangChain支持PIP、Conda、源码三种方式安装依赖。
语言模型以文本作为输入 - 这个文本通常被称为提示词(prompt)。在开发过程中,对于提示词通常不能直接硬编码,不利于提示词管理,而是通过提示词模板进行维护,类似开发过程中遇到的短信模板、邮件模板等等。
提示词中包含交互样本的作用是为了帮助模型更好地理解用户的意图,从而更好地回答问题或执行任务。小样本提示模板是指使用一组少量的示例来指导模型处理新的输入。这些示例可以用来训练模型,以便模型可以更好地理解和回答类似的问题。
LangChain Expression Language (简称LCEL)是一种声明式的AI工作流编排方式,可以轻松地将多个处理步骤,像链条一样组合在一起,所以LCEL定义的工作流,在LangChain中称为链条(Chain)。
该章节介绍了LCEL(LangChain Expression Language)的基本示例:如何通过LCEL构建一个关于"讲笑话"任务的工作流,包括提示、模型和输出解析器的连接方式。通过代码演示了工作流的创建和每个组件的作用,最终展示了生成笑话的结果。
本章介绍了LCEL的重要性,展示了如何使用LCEL来构建复杂链条,提供统一的接口和组合原语。通过对比展示了使用和不使用LCEL的代码片段,突出了LCEL简化流、批处理操作的便利性。
大语言模型(LLMs)是LangChain的核心组件,LangChain本身不提供大语言模型能力,LangChain封装了各种常见的大语言模型,提供一套操作大语言模型的标准接口,方便开发者。
聊天模型是语言模型的一种变体。虽然聊天模型在底层使用的也是语言模型,但它们所公开的接口有些不同。它们不是通过 "输入文本,输出文本" API 公开接口,而是通过 "聊天消息" 作为输入和输出的接口,聊天模型的整个交互过程类似互相发送聊天消息的过程。
目前AI模型领域百家争鸣,LangChain官方也没有对接好所有模型,有时候你需要自定义模型,接入LangChain框架。
LLM语言模型输出内容是文本格式,但是开发AI应用的时候,我们希望能拿到的是格式化的内容,例如结果转成目标对象,数组等,方便程序处理。这就需要LangChain提供的输出解析器(Output parser)格式化模型返回的内容。
LLM训练出来虽然知道很多信息,但是对于企业私有数据,大语言模型还是不知道的,许多LLM应用程序都需要查询企业私有数据,然后把私有数据作为背景信息拼接到提示词里面,丢给大模型,让大模型根据背景信息回答问题。LangChain提供了加载、转换、存储和查询数据的框架组件
使用文档加载器,可以从各类数据源中加载数据,从数据源加载的数据在langchain使用`Document`对象代表一个文档。`Document`对象包含一段文本和相关元数据。
加载CSV数据,每一行作为一个文档。
这里介绍LangChain如何加载目录中的所有文档。
本文介绍LangChain如何将 `HTML` 文档加载到我们可以在下游使用的文档格式中。
LangChain通过json loader加载器,加载json数据的入门教程。
本文介绍LangChain如何将 Markdown 文档加载到我们可以在下游使用的文档格式中。
LangChain的文档转换器主要作用是分割文本内容,把一个大的文章内容,切割成多个小的内容片段。
LangChain 最简单的文本拆分方法。它基于字符(默认情况下是 "\\n\\n")进行拆分,并通过字符数来测量块的长度。
本章介绍LangChain的代码文本分割器,如果你需要把代码拆分成代码片段,可以仔细学习本章内容。
本章介绍的就是LangChain如何根据markdown标题分割文本内容,这里使用的是 `MarkdownHeaderTextSplitter`文本分割器。
本章介绍LangChain如何使用各种token分词器,根据token拆分文本内容。
LangChain Embeddings类是一种专门与文本嵌入模型进行接口交互的类。有许多嵌入模型提供者(OpenAI、Cohere、Hugging Face等)-这个类的设计是为所有提供者提供一个标准接口。
存储和搜索非结构化数据最常见的方案是将数据的特征向量计算出来,然后在查询时通过向量相识度搜索,查询相似的向量。向量数据库就是负责提供向量存储和查询的数据存储引擎。
检索器(retriever)是LangChain封装的一个接口,它可以根据非结构化查询返回相关文档。它比向量存储更通用。检索器不需要能够存储文档,只需要返回(或检索)即可。向量存储可以用作检索器的底层实现,LangChain支持多种retriever接口的底层实现。
仅使用LLM接口处理简单的应用程序还行,但复杂的应用场景需要将LLM组件、提示词模板、向量存储等多个LangChain组件串联(chain)起来一起使用。
假设您有一些文本文档(PDF、博客、本地私有数据等),想做一个基于本地知识库的AI问答机器人,基于LangChain很容易就实现这个功能。
不同的大语言模型(LLM)对输入提示词长度限制不一样,如果我们需要对一篇上万字的文章进行摘要总结,但文章长度是又超过了模型的最大长度限制,没办法把整篇文章直接投喂给AI模型,针对这种场景LangChain也提供了一些策略和封装,本章节主要介绍LangChain如何解决文本摘要。
对于存储历史对话信息的能力,在LLM领域通常称为“记忆”(Memory),就像人一样有记忆能力。LangChain封装了多种记忆功能组件,这些记忆组件可以单独使用,也可以无缝地集成到链(Chain)中。
VectorStoreRetrieverMemory将记忆存储在向量数据库中,每次查询历史记忆数据的时候返回前K个相似的内容。
介绍LangChain支持的记忆(Memory)组件
LangChain Agent代理的核心思想是使用LLM作为大脑自动思考,自动决策选择执行不同的动作,最终完成我们的目标任务。
大名鼎鼎的AutoGPT项目就是基于ReAct模式实现,就是推理+行动模型,LLM大模型负责推理,控制行动达成目标,对于开发来说行动其实就是开发好的工具或者API,本章介绍LangChain如何实现ReAct模式。
本章介绍了LangServe的概述,包括其作用和功能,以及安装方法。还展示了示例应用程序,如部署OpenAI聊天模型和Anthropic聊天模型。此外,介绍了API文档、端点和Playground的详细内容,帮助用户深入了解LangServe的应用和功能。
Github: nomic-ai / gpt4all 是一个开源聊天机器人生态系统,它是基于大量干净的助手数据集进行训练的,包括代码、故事和对话。 本章介绍如何使用LangChain与”GPT4All”模型进行交互。
本章介绍了如何使用LangChain与ChatGLM2-6B 推理进行文本补全交互。ChatGLM-6B和ChatGLM2-6B具有相同的API规范,因此该示例适用于两者。
企业数据通常存储在SQL数据库中,使用LLMs可以通过自然语言与SQL数据库进行交互,LangChain提供了SQL Chains和Agents来构建和运行基于自然语言提示的SQL查询。
源代码分析是最流行的LLM(语言模型)应用之一,可以问AI代码片段的实现原理、代码有什么改进建议、帮忙写文档等
聊天机器人是LLM的核心用例之一。聊天机器人的核心特点是可以进行长时间的对话,并且可以访问用户想要了解的信息。
通过Langchain,借助LLM大模型的自然语言处理能力,理解用户需求自动调用外部系统的API,可以实现丰富应用场景。
本文介绍基于LangChain如何实现通过LLM大模型实现AI爬虫,通过AI爬虫智能的提取网页内容。
企业数据通常存储在 SQL 数据库中,LLM 使使用自然语言与 SQL 数据库交互成为可能。 LangChain 提供 SQL 链和代理,可根据自然语言提示构建和运行 SQL 查询。