豆包MarsCode AI练中学

112 阅读8分钟

《LangChain 实战课》小册的学习笔记

何谓 LangChain?释放大语言模型潜能的利器

在这门课程中,我们将共同探索如何使用LangChain。那么如何理解 LangChain 呢?

作为一种专为开发基于语言模型的应用而设计的框架,通过LangChain,我们不仅可以通过API调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还可以实现更高级的功能。

我们相信,真正有潜力且具有创新性的应用,不仅仅在于能通过API调用语言模型,更重要的是能够具备以下两个特性:

  1. 数据感知:  能够将语言模型与其他数据源连接起来,从而实现对更丰富、更多样化数据的理解和利用。
  2. 具有代理性:  能够让语言模型与其环境进行交互,使得模型能够对其环境有更深入的理解,并能够进行有效的响应。

因此,LangChain框架的设计目标,是使这种AI类型的应用成为可能,并帮助我们最大限度地释放大语言模型的潜能。

现在你应该已经知道,LangChain是一个基于大语言模型(LLMs)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。LangChain提供了一系列工具、套件和接口,可以简化创建由LLMs和聊天模型提供支持的应用程序的过程。

打通 LangChain 从原理到应用的最后一公里

既然 LangChain 这么棒,又这么新,我们怎么学?谁来指导?

不怕!在这门课程中,我为你精心设计了 4 大模块。带你从各个角度把LangChain的精髓吃透。

启程篇:从 0 到 1

在这个模块中,我会介绍LangChain系统的安装流程,以及如何进行快速的入门操作。同时, 详细指导你如何使用LangChain来构建一个基于“易速鲜花”本地知识库的智能问答系统,让你直接感受LangChain强大的功能。

基础篇:深入 6 大组件

LangChain中的具体组件包括:

  • 模型(Models) ,包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。
  • 提示模板(Prompts) ,使提示工程流线化,进一步激发大语言模型的潜力。
  • 数据检索(Indexes) ,构建并操作文档的方法,接受用户的查询并返回最相关的文档,轻松搭建本地知识库。
  • 记忆(Memory) ,通过短时记忆和长时记忆,在对话过程中存储和检索数据,让ChatBot记住你是谁。
  • 链(Chains) ,是LangChain中的核心机制,以特定方式封装各种功能,并通过一系列的组合,自动而灵活地完成常见用例。
  • 代理(Agents) ,是另一个LangChain中的核心机制,通过“代理”让大模型自主调用外部工具和内部工具,使强大的“智能化”自主Agent成为可能!你的 App 将产生自驱力!

这些组件是LangChain的基石,是赋予其智慧和灵魂的核心要素,它们相互协作,形成一个强大而灵活的系统。在基础篇中,我们将深入探索这些组件的工作原理和使用方法,并给出大量用例,夯实你对这些组件的理解和应用能力。

应用篇:积累场景中的智慧

在这个模块中,我们会展示如何将LangChain组件应用到实际场景中。你将学会如何使用LangChain的工具和接口,进行嵌入式存储,连接数据库,引入异步通信机制,通过智能代理进行各种角色扮演、头脑风暴,并进行自主搜索,制定自动策略,尝试不同方案完成任务。

我们将不仅仅是讲解这些组件的功能,还会通过实际应用场景来展示它们是如何互相配合,共同完成复杂任务的。本模块中的很多机制都来源于最新论文,其中对AI智能代理机制的各种使用方式将令你大开脑洞,或许你会哈哈一笑,或许你会击节赞叹,钦佩设计者思路之清奇。

实战篇:动手!

你将学习如何部署一个鲜花网络电商的人脉工具,并开发一个易速鲜花聊天客服机器人。从模型的调用细节,到数据连接的策略,再到记忆的存储与检索,每一个环节都是为了打造出一个更加智能、更加人性化的系统。

至此,你将能够利用LangChain构建出属于自己的智能问答系统,不论是用于企业的应用开发,还是个人的日常应用,都能够得心应手,游刃有余。

LangChain 有趣用例抢先看

也许,你已经听说过太多大语言模型和LangChain的神奇妙用,迫不及待地想见识见识。那样也好,百闻不如一见,下面我就给你展示两个使用大语言模型和LangChain的具体应用,一起来看看它有多好用。

在我上一个专栏《零基础实战机器学习》中,我创建了一个虚拟的电商平台“易速鲜花”,并围绕着这个电商场景,构建了很多机器学习应用,如销售量预测、渠道优化、A/B测试、推广裂变策略等等。在《LangChain实战课》中,咱们就继续运营“易速鲜花”,看看大语言模型能够帮我们做些什么。当然,这两门课内容上是完全独立的,没看过另一门也不要紧,并不影响你从这里的起步。

应用 1:情人节玫瑰宣传语

情人节到啦,你的花店需要推销红色玫瑰,那么咱们让大语言模型做的第一个应用,就是给咱们生成简短的宣传语。

这个需求极为简单,你直接去ChatGPT网站,或者用文心一言、星火认知等大模型,都做得到。不过,怎样通过LangChain来用程序的方式实现呢?也很容易。

第一步是安装三个包,通过 pip install langchain 来安装LangChain,通过 pip install openai 来安装OpenAI,还需要通过 pip install langchain-openai 以便在 LangChain 中使用 OpenAI 模型。

第二步,你还需要在OpenAI网站注册属于自己的OpenAI Key。(当然,LangChain也支持其他的开源大语言模型,但是推理效果没有GPT那么好,所以我们这个课程里面的大多数示例都是用OpenAI的GPT系列模型来完成。)

完成了上面两个步骤,就可以写代码了。

plain
复制代码
AI练中学
import os
os.environ["OPENAI_API_KEY"] = '你的OpenAI Key'
from langchain_openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct",max_tokens=200)
text = llm.invoke("请给我写一句情人节红玫瑰的中文宣传语")
print(text)

这里,我们先导入了OpenAI的API Key,然后从LangChain中导入OpenAI的Text模型接口,并初始化这个大语言模型,把我们的需求作为提示信息,传递给大语言模型。

运行程序,我得到了好几个漂亮的文案。而且每次运行都会有新的惊喜。

你也许会觉得,这个应用太简单了,直接去大模型的网页上问更方便。的确如此,那下面我们再来一个无法直接在网页上完成的应用。

应用2:海报文案生成器

你已经制作好了一批鲜花的推广海报,想为每一个海报的内容,写一两句话,然后post到社交平台上,以期图文并茂。

这个需求,特别适合让AI帮你批量完成,不过,ChatGPT网页可不能读图。下面,我们就用LangChain的“代理”调用“工具”来完成自己做不到的事情。

我们就用一段简单的代码实现上述功能。这段代码主要包含三个部分:

  1. 初始化图像字幕生成模型(HuggingFace中的image-caption模型)。
  2. 定义LangChain图像字幕生成工具。
  3. 初始化并运行LangChain Agent(代理),这个Agent是OpenAI的大语言模型,会自动进行分析,调用工具,完成任务。

不过,这段代码需要的包比较多。在运行这段代码之前,你需要先更新LangChain到最新版本,安装HuggingFace的Transformers库(开源大模型工具),并安装 Pillow(Python图像处理工具包)和 PyTorch(深度学习框架)。

{59ACF35C-54EF-4AF0-A718-084015F47EBD}.png {8E660EF4-CE98-47CF-A0B8-896B3040F60B}.png 根据输入的图片URL,由OpenAI大语言模型驱动的LangChain Agent,首先利用图像字幕生成工具将图片转化为字幕,然后对字幕做进一步处理,生成中文推广文案。