LangChain 实战课
黄佳
新加坡科研局首席研究员
8120 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 28 讲
结束语 & 结课测试 (2讲)
LangChain 实战课
15
15
1.0x
00:00/17:23
登录|注册

开篇词|带你亲证AI应用开发的“奇点”时刻

讲述:黄佳大小:15.87M时长:17:23
你好,我是黄佳,欢迎来到 LangChain 实战课!
可能你对我并不陌生,这已经是我第三次和极客时间合作课程了,另外我也是书籍《零基础学机器学习》和《数据分析咖哥十话》的作者。现在在新加坡科研局,任职首席研究员,这些年来一直从事 AI 科研,尤其是大语言模型的研究。我的主要任务就是为最新的 AI 技术寻找实际应用场景。想必你应该能理解,学术研究与实际应用是两个完全不同的领域,架设它们之间的桥梁是极具挑战的。
然而,当 ChatGPT 和 GPT-4 横空出世时,全人类都在为之震撼——通用人工智能的奇点,真的即将来临了吗?作为科研人员,我们也惊喜地发现,最前沿的 AI 技术与最实用的落地应用之间的距离,竟然如此之近!
更为关键的是,ChatGPT 不仅是技术革命,它还能为企业提供便捷的服务。在类似 ChatGPT 这样的模型基础上所开发出的应用,可以助力企业优化客户服务、提升客户服务质量、加强市场营销、优化产品设计、改进供应链管理…ChatGPT 所代表的大语言模型落地场景,覆盖千行百业的方方面面。

AI 应用开发——新的历史节点

事实上,没有任何一种突破能够不经历重重失败,不体验一轮轮的痛苦,就能直接展现在人类面前。AI 技术自诞生之初直至今日,其发展之路从未一帆风顺——辉煌与寒冬交替,希望与失望交织。现代 AI 的核心驱动力神经网络,70 年间两落三起;自然语言处理技术亦不例外,在 ChatGPT 和 GPT-4 出现之前,NLP 技术也曾受过质疑,长期经历低谷期。
每一次 AI 新技术突然流行之时,总会有人发问:这次,会不会又是昙花一现?
在我看来,这次大模型领域的突破的的确确是真切的、清晰可见的。“ChatGPT 将引发巨变!” 诸多业界“真大佬”掷地有声地给出了同样肯定的答案。
阿里巴巴集团董事会主席张勇在 2023 年阿里云峰会宣布:“AI 大模型的出现是一个划时代的里程碑,就像工业革命一样,大模型将会被各行各业广泛应用,带来生产力的巨大提升,并深刻改变我们的生活方式。”“面向 AI 时代,所有产品都值得用大模型重新升级。
英伟达的创始人、CEO 黄仁勋也在英伟达 GTC 线上大会上将 ChatGPT 称为 AI 的 “iPhone 时刻”。
更有人认为,“iPhone 时刻”把 ChatGPT 和大模型的技术影响力和未来前景说小了。其实,这并不是 iPhone 时刻,而是互联网时刻。因为很多互联网应用比平台都大,而在人工智能基础功能平台上,会成长出超过平台的企业,也就是说,未来的人工智能应用企业有可能会超过 Apple、微软、谷歌等平台企业。
无论如何,有一点毋庸置疑。我们正站在一个崭新的历史节点上。
在这个节点上,ChatGPT、GPT-4 和其他大语言模型为我们提供了新的视角和新的可能性,在大语言模型的基础上,有可能成长出跨平台的企业,改变未来的科技格局。
在这个节点上,LangChain 这个以大模型为引擎的全新应用开发框架从天而降,几乎和 ChatGPT 一起面世。作为程序设计者的我们,现在可以利用大模型的潜能以及 LangChain 的便捷,开发出令人惊叹的智能应用。LangChain 作为新一代 AI 开发框架,必将受到程序员的追捧,点燃 AI 应用开发的新热潮。
LangChain 的 GitHub Star 数量疯涨中,没有放缓的节奏
这样的预期,正是我们开设这门课程,以及邀请你来学习这门课程的原因。

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

在这门课程中,我们将共同探索如何使用 LangChain。那么如何理解 LangChain 呢?
作为一种专为开发基于语言模型的应用而设计的框架,通过 LangChain,我们不仅可以通过 API 调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还可以实现更高级的功能。
我们相信,真正有潜力且具有创新性的应用,不仅仅在于能通过 API 调用语言模型,更重要的是能够具备以下两个特性:
数据感知:能够将语言模型与其他数据源连接起来,从而实现对更丰富、更多样化数据的理解和利用。
具有代理性:能够让语言模型与其环境进行交互,使得模型能够对其环境有更深入的理解,并能够进行有效的响应。
因此,LangChain 框架的设计目标,是使这种 AI 类型的应用成为可能,并帮助我们最大限度地释放大语言模型的潜能。
LangChain 的 6 大组件
现在你应该已经知道,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 系列模型来完成。)
完成了上面两个步骤,就可以写代码了。
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 的“代理”调用“工具”来完成自己做不到的事情。
鲜花海报图片
我们就用一段简单的代码实现上述功能。这段代码主要包含三个部分:
初始化图像字幕生成模型(HuggingFace 中的 image-caption 模型)。
定义 LangChain 图像字幕生成工具。
初始化并运行 LangChain Agent(代理),这个 Agent 是 OpenAI 的大语言模型,会自动进行分析,调用工具,完成任务。
不过,这段代码需要的包比较多。在运行这段代码之前,你需要先更新 LangChain 到最新版本,安装 HuggingFace 的 Transformers 库(开源大模型工具),并安装 Pillow(Python 图像处理工具包)和 PyTorch(深度学习框架)。
pip install --upgrade langchain
pip install transformers
pip install pillow
pip install torch torchvision torchaudio
#---- Part 0 导入所需要的类
import os
import requests
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
from langchain.tools import BaseTool
from langchain import OpenAI
from langchain.agents import initialize_agent, AgentType
#---- Part I 初始化图像字幕生成模型
# 指定要使用的工具模型(HuggingFace中的image-caption模型)
hf_model = "Salesforce/blip-image-captioning-large"
# 初始化处理器和工具模型
# 预处理器将准备图像供模型使用
processor = BlipProcessor.from_pretrained(hf_model)
# 然后我们初始化工具模型本身
model = BlipForConditionalGeneration.from_pretrained(hf_model)
#---- Part II 定义图像字幕生成工具类
class ImageCapTool(BaseTool):
name = "Image captioner"
description = "为图片创作说明文案."
def _run(self, url: str):
# 下载图像并将其转换为PIL对象
image = Image.open(requests.get(url, stream=True).raw).convert('RGB')
# 预处理图像
inputs = processor(image, return_tensors="pt")
# 生成字幕
out = model.generate(**inputs, max_new_tokens=20)
# 获取字幕
caption = processor.decode(out[0], skip_special_tokens=True)
return caption
def _arun(self, query: str):
raise NotImplementedError("This tool does not support async")
#---- PartIII 初始化并运行LangChain智能代理
# 设置OpenAI的API密钥并初始化大语言模型(OpenAI的Text模型)
os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
llm = OpenAI(temperature=0.2)
# 使用工具初始化智能代理并运行它
tools = [ImageCapTool()]
agent = initialize_agent(
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
tools=tools,
llm=llm,
verbose=True,
)
img_url = 'https://mir-s3-cdn-cf.behance.net/project_modules/hd/eec79e20058499.563190744f903.jpg'
agent.invoke(input=f"{img_url}\n请创作合适的中文推广文案")
根据输入的图片 URL,由 OpenAI 大语言模型驱动的 LangChain Agent,首先利用图像字幕生成工具将图片转化为字幕,然后对字幕做进一步处理,生成中文推广文案。
运行结果 1:
运行结果 2:
运行结果 3:
说明:因为 temperature=0.2 代表模型拥有一定的随机性,所以大模型每次的推理过程生成的文案都不尽相同。
针对上面的鲜花图片,程序进入了 AgentExecutor 链,开始思考推理,并采取行动——调用 Image Cationer 工具,接收该工具给出的结果,并根据其返回的内容,再次进行思考推理,最后给出的文案是:“爱,让每一天充满美丽,让每一个心情都充满甜蜜。” 多么浪漫而又富有创意,大模型懂我!
当然,这个过程中还有很多很多的细节,比如大模型是怎么思考的?LangChain 调用大模型时传入的具体提示文本是什么?代理是什么?AgentExecutor Chain 是什么?它究竟是怎样调度工具的?你现在可能有很多的疑惑。
在后续的课程中,我会带着你手撕 LangChain 内部源代码,把所有这些一点一滴地剖析清楚。
关于 LangChain,我想向你分享的还有太多太多,短短的开篇词已经无法容纳了。那么,就让我最后告诉你:玩 LangChain,真的很有意思,越深入,越发觉大语言模型是一个无尽的宝藏。在这样的系统中,我们并不是生硬的去设计什么固定的逻辑,而是由语言模型通过理解和推理来决定执行什么操作以及执行的顺序
现在你准备好了吗?让我们一同投身到 LangChain 的世界中,解锁 AI 的无限可能!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

LangChain是一个新一代的AI开发框架,旨在释放大语言模型的潜能,为开发者提供便捷的开发工具和接口。该框架包括模型、提示模板、数据检索、记忆、链和代理等六大组件,它们相互协作,形成一个强大而灵活的系统。LangChain的出现有望点燃AI应用开发的新热潮,为未来的科技格局带来改变。文章还展示了LangChain的有趣用例,包括使用大语言模型生成情人节玫瑰宣传语和海报文案,以及如何将LangChain组件应用到实际场景中。这些示例展示了LangChain在实际应用中的灵活性和强大功能。LangChain的代理通过调用大语言模型,利用图像字幕生成工具将图片转化为字幕,并生成中文推广文案。这一过程展示了LangChain的创造性和灵活性,以及大语言模型在实际应用中的潜力。LangChain的设计理念是让语言模型通过理解和推理来决定执行操作以及执行的顺序,这为开发者提供了更多的自由度和创造空间。LangChain的出现将为AI应用开发带来新的可能性,激发开发者的创造力,推动科技的进步。

2023-09-1153人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《LangChain 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • 小渣
    老师,langchain和llamaindex什么区别,如果只做RAG的话,是不是llamaindex就够了

    作者回复: 很好。刚好我两个都用。他俩有重叠之处。也都和大语言模型相关。LangChain应用面广,LlamaIndex更专。 Langchain 是一个更通用的框架,可用于构建各种应用程序。它提供了用于加载、处理和索引数据以及与LLM交互的工具。Langchain 也比 LlamaIndex 更灵活,允许用户自定义其应用程序的行为。里面有链和代理的思想以及实践。 LlamaIndex 专为构建搜索和检索这个功能而设计。LlamaIndex 也比 Langchain 更高效,使其成为需要处理大量数据的应用程序的更好选择。其实就是专注于文档检索——Indexing。这个LangChain里面有一个模块,基本上也覆盖了。 如果你的目标是构建需要灵活和可扩展的通用LLM应用程序,那么 Langchain 。如果你的目标是构建需要高效且简单的搜索和检索应用程序,那么 LlamaIndex 。

    2023-09-12归属地:浙江
    2
    26
  • 在路上
    佳哥好,2021年9月,我跟着您的课程开始认识机器学习,2023年我才有机会实现第一个svm预测模型。今天又是种下一粒种子的好机会,努力并耐心地等待。

    作者回复: AI开发,大模型的开发,今年是元年。我们是先驱者。 我很钦佩你的学习精神,未来属于我们这样的终身学习者。 谢谢你,兄弟。在你给我的机器学习课程留言一直感动着我,也激励着我多学,多创作,多分享。 在这个过程中,我付出了很多,更是收获了好多。

    2023-09-11归属地:广东
    17
  • 阿斯蒂芬
    欲登上LLM大船在AI的海洋中遨游,希望LangChain是那张对的传票🤓

    作者回复: 船票,同学,是船票😻

    2023-09-11归属地:广东
    2
    7
  • Geek_0e2051
    老师,学LangChain需要深度学习方面的理论知识吗?

    作者回复: LangChain是基于大模型的二次开发。其实,更多的是需要工程能力,设计思维,去思索怎么应用大模型的推理能力和代理框架去整合业务场景。深度学习理论知识需求并不多。当然有个概念性的了解那就更清晰了,理论部分你可以看看我的极客时间免费公开课,ChatGPT原理与实战。或者我即将出版的新书《GPT图解——大模型是怎么构建的》。

    2023-09-15归属地:四川
    3
    5
  • 杨松
    老师,请教下,LLM的模型都号称有庞大的参数,这个参数是什么?它和token有什么关系吗?

    作者回复: 它两个不是一回事。参数,是大模型(深度学习神经网络)的节点中可以调节的函数参数,就像我们数学公式中 Y = WX + B里面的W和B。神经网络通过调参,优化,来学习预测,分类,生成文本。 Token,是一个个的数据元素。是数据的一部分。比如我是中国人,可以拆分成我,是,中国人三个Token。训练模型需要大量Token,让模型生成文本,需要传入Token,需要接受Token。 一个是模型里面的组成部分,一个是数据分割成的单元。

    2023-09-13归属地:辽宁
    5
  • dengyu
    第一个例子就把langchain就串起来了。大牛就是大牛!

    作者回复: 嗯,学以致用!

    2023-09-11归属地:广东
    5
  • 晓涛
    老师好,我们公司现在想要搭建大模型的应用,可能会涉及到利用开源模型和微调和精调然后再商用,想问一下具体我需要做什么准备工作,我理解只是利用langchain调用大模型的接口应该达不到这个目标 吧

    作者回复: 达不到。你们公司需要学习的是开源模型的微调和重新训练。 这和LangChain是两个不同的技术栈。你先需要准备GPU,然后看类似于下面的Repo,然后还有看最新的论文。 https://github.com/hiyouga/LLaMA-Efficient-Tuning https://github.com/OpenGVLab/LLaMA-Adapter https://github.com/artidoro/qlora

    2023-10-08归属地:广东
    3
    4
  • Blow
    老师,您好,我们这门课程有没有群聊么

    作者回复: 有群聊,如果首页找不到运营老师的入群方式,也可以加我微信jackyhuang79,我拉你入群。

    2023-10-04归属地:福建
    2
    4
  • huggingface有什么加速方案推荐吗?最近好像被墙了,很不稳定

    作者回复: huggingface在国内不稳定吗?我看很多小伙伴都在用呢,大家可以分享一下自己的策略。https://discuss.huggingface.co/ - HugggingFace有一个自己的讨论区,可以去讨论区提问,或者看看有没有人遇到同样的问题,有没有解决方案。

    2023-09-21归属地:广东
    3
    3
  • 和你一起搬砖的胡大爷
    老哥在astar吗,我也是南洋理工校友

    作者回复: 校友好🤝!

    2023-09-12归属地:江苏
    3
收起评论
大纲
固定大纲
AI 应用开发——新的历史节点
何谓 LangChain?释放大语言模型潜能的利器
打通 LangChain 从原理到应用的最后一公里
LangChain 有趣用例抢先看
应用 1:情人节玫瑰宣传语
应用 2:海报文案生成器
显示
设置
留言
31
收藏
46
沉浸
阅读
分享
手机端
快捷键
回顶部