最全面又最浅显易懂的Langchain快速上手教程(上)

2024-8-21 23:31| 发布者: 姜更生| 查看: 171| 评论: 0

本文原创,著作权归 WGrape(https://wgrape.github.io/) 所有,未经授权,严禁转载
一. 前言

随着GPT模型的问世,大语言模型(LLM)时代已经来临。LLM的出现,使得人工智能在语言处理方面的能力得到了极大的提升。Langchain作为一个面向后端开发者的框架,旨在帮助开发者快速上手并利用LLM开发出强大的应用程序。本教程将为您提供一份全面的指南,帮助您快速掌握Langchain的使用方法!
二. 基础介绍

1. 什么是Langchain

Langchain是一个基于大语言模型的应用开发框架,随着社区的快速长大,它现在已不仅仅是一个开发框架,更多的是一个LLM应用的基建工程,提供从开发到上线整个闭环流程的全程支持。

最全面又最浅显易懂的Langchain快速上手教程(上)-1.jpg

所以当提到Langchain的时候,需要知道它起初只是一个比较简单的LLM应用开发框架,只是后来社区长大后,出现了一系列Langchain命名的项目,它们共同组成了现在的Langchain社区。
2. Langchain的核心组成

(1) 四大部分

Langchain作为一个LLM应用的基建工程,整体是非常庞大的,从底向上主要分为四个部分

  • LangChain Lib 库 :主要包括core/community/experimental等Python库,源码位置 langchain-ai/langchain/libs/
  • LangChain Template 模板库 :主要包括各种可参考和借鉴的LLM生产级别应用,源码位置 langchain-ai/langchain/templates
  • LangServe REST服务支持 :主要用于将LLM应用部署为REST服务,源码位置 langchain-ai/langserve
  • LangSmith 开发者平台 :主要包括LL应用从开发、测试、部署、运维于一体的Devops平台

最全面又最浅显易懂的Langchain快速上手教程(上)-2.jpg

(2) LangChain Lib结构

LangChain Lib从底向上主要包括LangChain-Core/LangChain-Community/LangChain(本身)三大部分

  • LangChain-Core :LangChain-Core是整个LangChain生态的抽象,比如LangChain Expression Language(LCEL)language models, document loaders, embedding models, vectorstores, retrievers等模块的抽象,源码位置 langchain-ai/langchain/libs/core
  • LangChain-Community :LangChain-Community是对Core层抽象的实现,比如对LangChain Expression Language(LCEL)language models, document loaders, embedding models, vectorstores, retrievers等模块抽象的实现,源码位置 langchain-ai/langchain/libs/community
  • LangChain :对LangChain-Community部分进行整合和适配,就构成了LangChain这个单一项目。只通过这一个LangChain项目就可以快速构建LLM应用了,它主要由LLMs and Prompts, Chains, Data Augmented Generation, Agents, Memory组成。源码位置 langchain-ai/langchain/libs/langchain

最全面又最浅显易懂的Langchain快速上手教程(上)-3.jpg

(3) 其他部分

这里会简单概述下LangChain Template、LangServe和LangSmith模块的应用场景。

  • LangSmith :当一个LLM应用越来越复杂的同时,伴随着的底层实现也越来越复杂。比如越来越多的Chain、Agent等模块之间的调用也更加复杂化,这时Debug的关键性就会显现出来,这就是LangSmith出现的原因。它虽然不是必须使用的产品,但是绝对会帮助并提高工作的效率。
3. Langchain Lib中的Langchain

在上文的《LangChain Lib结构》中已介绍了Langchain Lib主要由三层组成,所以了解这个架构设计会对后面的理解非常有帮助。无论官方提供的功能操作有多少,多”混乱“,我们也可以时刻找到正确的方向。

最全面又最浅显易懂的Langchain快速上手教程(上)-4.jpg

本文会主要讲解Langchain Lib部分,所以后面提到的Langchain单词,需要明确知道它不是指一个庞大的Langchain体系,而是特指Langchain Lib中的Langchain,或者代指整个Langchain Lib部分。
为了更简单的理解,甚至可以把Langchain和Langchain Lib作等同的理解,二者在理解上其实没有太大的区别。
4. 关于安装

可以选择使用一键式多环境管理sparrow服务中已经集成的Langchain环境
(1) 安装Langchain

使用如下命令即可快速安装Langchain。通过python -m site命令查看langchain的安装目录,就会发现它就是上面提到Langchain源码 langchain-ai/langchain/libs/langchain。
pip install langchain
最全面又最浅显易懂的Langchain快速上手教程(上)-5.jpg

所以在官网中可以看到,使用下面源码安装的方式也可以同样成功安装Langchain。

最全面又最浅显易懂的Langchain快速上手教程(上)-6.jpg

(2) 安装Langchain-Community

从上文《LangChain Lib结构》可知Langchain是对Langchain-Community的整合和适配。所以在安装完Langchain后,会自动安装langchain-community,如果需要单独安装,使用下面命令即可
pip install langchain-community(3) 安装Langchain-Core

从上文《LangChain Lib结构》可知Langchain-Community是对Langchain-Core中抽象的具体实现。所以在安装完Langchain后,会自动安装langchain-core,如果需要单独安装,使用下面命令即可
pip install langchain-core(4) 安装Langchain Lib的其他部分

截止2024年2月份,可以看到在Lib中有新增的一些模块

  • experimental :实验模块,使用pip install langchain-experimental命令安装
  • cli :命令行模块,使用pip install langchain-cli命令安装

最全面又最浅显易懂的Langchain快速上手教程(上)-7.jpg

(5) 安装LangServe和LangSmith

LangSmith SDK模块在安装完Langchain后也会自动安装,如果需要单独安装,请使用如下命令
pip install langsmithLangServe模块只有在安装完Langchain CLI后才会自动安装(注意不是Langchain),如果需要单独安装,请使用如下命令
# 同时安装客户端和服务端pip install "langserve[all]"# 仅安装客户端pip install "langserve[client]"# 仅安装服务端pip install "langserve[server]"(6) 安装其他依赖

建议根据如下提示进行安装
# 必须安装pip install langchain-openai # LLM大语言模型必须使用5. 入门例子

在下面这个例子中,主要分为几个简单的入门例子

  • 创建LLM :使用langchain_openai包中的ChatOpenAI()创建一个LLM大语言模型对象
  • 创建Prompt :使用langchain_core包中的ChatPromptTemplate创建一个Prompt对象
  • 创建Output_parser :使用langchain_core包中的StrOutputParser()创建一个输出处理器
  • 使用LCEL语进行链式调用 :使用或运算符|即可自动实现链式调用(基于ror魔法函数实现),如prompt | llm | output_parser
# ==================== 创建LLM并调用 ====================from langchain_openai import ChatOpenAI# 1. 使用系统配置的OPENAI_API_KEY环境变量llm = ChatOpenAI()# 2. 传递openai_api_key参数# llm = ChatOpenAI(openai_api_key="")print(llm.invoke("1+1=?"))# ==================== 创建一个复杂的Prompt并使用Chain链式调用 ====================from langchain_core.prompts import ChatPromptTemplateprompt = ChatPromptTemplate.from_messages([    ("system", "You are good at math."),    ("user", "{input}")])chain = prompt | llmprint(chain.invoke({"input": "1+1=?"}))# ==================== 创建一个StrOutputParser输出处理器并加入到Chain中 ====================from langchain_core.output_parsers import StrOutputParseroutput_parser = StrOutputParser()chain = prompt | llm | output_parserprint(chain.invoke({"input": "1+1=?"}))暂时未完...

由于文章篇幅的限制,先告一段落。相信经过上面简单的介绍之后,相信已经可以对Langchain有了初步的理解,下面会着重用最简单的描述、最容易理解的图、最直观的代码来深入讲解Langchain。
暂时未完,请期待下篇文章 《最全面又最浅显易懂的Langchain快速上手教程(下)》
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一篇:CAD快速入门教程(一):软件界面布局初学指南

下一篇:干货 | R语言基础快速入门教程,从菜鸟到高手只需这一套!

交流热线
17501437970 周一至周日:09:00 - 21:00

创赢网-致力于帮助普通人在创业之路上披荆斩棘、走向成功的专业网站,汇聚创新智慧与成功机遇的网络天地,是创业者开启赢之征程的首选之地。

Powered by Discuz! X3.5 © 2023-2050 CHUANYING Team.

QQ|Archiver|手机版|小黑屋|创赢网 ( 湘ICP备17022177号-3 )

GMT+8, 2024-11-14 09:49 , Processed in 0.111680 second(s), 28 queries .

快速回复 返回顶部 返回列表