第01章:LangChain使用概述

在这里插入图片描述

一、介绍LangChain

1.1 什么是LangChain

  • LangChain 是 2022 年 10 月由哈佛大学 Harrison Chase 发起研发的开源框架,专注于开发大语言模型(LLMs)驱动的应用。它核心功能是串联 LLM、外部数据与工具,大幅降低开发门槛,可快速搭建智能体(Agent)、问答系统、对话机器人、文档搜索、企业私有知识库等应用,还支持集成 GPT、Claude 等主流 LLM,是当前 LLM 应用开发领域的热门工具之一;
  • LangChain中的“Lang”是指 Language,即⼤语⾔模型,“Chain”即“链”,也就
    是将⼤模型与外部数据&各种组件连接成链;

📌LangChain在Github上的热度变化
在这里插入图片描述
📌LangChain在Github上的star

在这里插入图片描述

📌Github:https://github.com/langchain-ai/langchain

1.2 大模型应用开发框架

在这里插入图片描述

  • LangChain:这些工具里出现最早、最成熟的,适合复杂任务分解和单智能体应用。其生态完善、插件丰富,支持多工具链整合,在prompt工程、智能体调度上积累深厚,是复杂场景落地的首选;

  • LlamaIndex:专注于高效的索引和检索,适合 RAG 场景(注意不是Meta开发的)。核心聚焦非结构化数据的向量索引优化,支持多数据源接入和上下文精准关联,检索效率和召回率表现突出,是RAG场景的核心工具之一;

  • LangChain4J:LangChain还出了Java、JavaScript(LangChain.js)两个语言的版本,LangChain4j的功能略少于LangChain,但是主要的核心功能都是有的。适配Java/JavaScript技术栈,虽插件生态和高级功能稍逊Python版,但覆盖智能体、链、工具调用等核心能力,满足后端开发者需求;

  • SpringAI/SpringAI Alibaba:有待进一步成熟,此外只是简单的对于一些接口进行了封装。基于Spring生态构建,主打轻量化集成,但在复杂智能体设计、多工具协同上仍需完善,更适合简单场景快速调用,成熟度待提升;

  • SemanticKernel:也称为sk,微软推出的,对于C#同学来说,那就是5颗星。深度融合微软生态(Azure、Office等),支持多语言开发,插件化设计、意图理解能力突出,对C#开发者友好,是.NET生态大模型应用的核心选型

1.3 LangChain资料介绍

📌官网地址:https://www.langchain.com/langchain

  • 在这里插入图片描述

📌官网文档:https://docs.langchain.com/oss/python/langchain/overview

  • 在这里插入图片描述

📌API文档: https://reference.langchain.com/v0.3/python/

  • 在这里插入图片描述

1.4 总体架构图

  • V0.1 版本
    在这里插入图片描述
  • V0.2 / V0.3 版本
    在这里插入图片描述
结构1:LangChain
  • langchain:构成AI应用程序认知架构的核心组件集合,包括:
    • Chains:将LLM调用、工具执行等步骤串联成自动化工作流;
    • Agents:让AI自主决策调用工具、规划步骤,完成复杂任务;
    • Retrieval strategies:实现“检索增强生成(RAG)”的知识检索逻辑。
      简单说就是AI应用的“基础功能积木”,能快速搭建从问答到任务执行的流程。
  • langchain-community:第三方生态集成层,提供各类外部能力对接:
    • 核心能力:Model I/O(适配不同大模型的输入输出格式)、Retrieval(对接各类知识库)、Tool&Toolkit(集成搜索引擎、数据库等工具集);
    • 合作组件包:比如langchain-openai(对接OpenAI模型)、langchain-anthropic(对接Anthropic Claude模型)等;
  • langchain-core:LangChain的基础抽象层,定义了核心组件的统一接口,同时包含LangChain表达式语言(LCL)——用简洁语法就能组合Chains、Agents等组件
结构2:LangGraph
  • LangGraph是基于LangChain API的进阶封装,核心能力是多组件协作与工作流编排——能协调多个Chains、Agents、Tools,完成单组件无法处理的复杂任务(比如多智能体分工对话、跨工具的长流程任务),实现更高级的AI应用逻辑(如多角色协作的客服系统、复杂任务规划工具)
结构3:LangSmith

(官方文档:https://docs.smith.langchain.com/
LangSmith是LangChain的“生产级工具链”,提供6大核心功能,覆盖AI应用从开发到运维的全链路:

  • Debugging(调试):追踪Chains/Agents的执行流程、中间结果,定位逻辑或性能问题;
  • Playground(沙盒):在线调试组件组合、测试prompt效果的可视化环境;
  • Prompt Management(提示管理):统一存储、版本管理不同场景的prompt;
  • Annotation(注释):给数据打标签,用于优化RAG知识库或微调模型;
  • Testing(测试):批量测试AI应用的准确性、响应速度等指标;
  • Monitoring(监控):生产环境中实时监控应用的运行状态(错误率、响应延迟等)
结构4:LangServe
  • LangServe的核心作用是将LangChain组件服务化:把LangChain的可运行项(Chains、Agents等)部署为REST API,实现跨语言、跨系统的网络调用。
    比如Java项目无法直接调用LangChain(Python生态),就可以通过LangServe将LangChain应用打包为REST API,对外提供服务;同时LangServe还支持高并发、高稳定性,适合大规模部署场景
📌总结

LangChain生态中,LangGraph和LangSmith是最有前途的两个模块

  • 目前LlamaIndex等框架也能实现RAG,LangChain要在智能体(Agent)领域形成优势,需要LangGraph的多组件协作能力;
  • LangSmith解决了AI应用的运维、监控、调试痛点,是LangChain落地生产的关键工具。
    二者共同支撑LangChain从“快速搭建工具”向“实用生产级框架”升级

二、 如何下载安装包

📌安装langchain包

方法1: 使用pip命令
基础指令
1 # 安装包(默认最新版)
2 
3 pip install langchain
4 
5 # 指定版本
6 
7 pip install langchain==0.37
8 
9 # 批量安装(有些分组)
10 
11 pip install langchain requests numpy
12 
13 # 升级包
14 
15 pip install --upgrade langchain
16 
17 # 卸载包
18 
19 pip uninstall langchain
20 
21 # 查看已安装包
22 
23 pip list
高级操作
1 # 国内镜像加速(解决下载慢):-i 切换镜像源
2 
3 pip install -i https://mirrors.aliyun.com/pypi/simple/ langchain
4 
5 # 从本地文件安装:
6 
7 pip install ./local_package.whl
8 
9 pip install http://github.com/user/repo/archive/main.zip
方法2: 使用conda命令
1 # 安装包(默认仓库)
2 
3 conda install langchain
4 
5 # 指定通道(限conda-forge)
6 
7 conda install -c conda-forge langchain==0.37
8 
9 # 升级包
10 
11 conda update langchain
12 
13 # 卸载包
14 
15 conda uninstall langchain
16 
17 # 查看已安装包
18 
19 conda list

三、LangChain 的 helloworld

3.1 获取大模型
#导入dotenv库的load_dotenv函数,用于加载环境变量文件(.env)中的配置
import dotenv
from langchain_openai import ChatOpenAI
import os

dotenv.load_dotenv() #加载当前目录下的.env文件
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")

os.environ["OPENAI_BASE_URL"] = os.getenv("OPENAI_BASE_URL")

# 创建大模型实例
llm = ChatOpenAI(model="gpt-4o-mini") #默认使用gpt-3.5-turbo

#直接提供问题,并调用llm
response = llm.invoke("什么是大模型?")
print(response)
  • 在当前工程下提供 .env 文件,文件中提供如下信息:
OPENAI_API_KEY1 = "    " #你自己的密钥
OPENAI_BASE_URL = "https://api.openai-proxy.org/v1"             #url是固定值, 统一写成这样
3.2 使用提示词模板
  • 创建prompt template,并引入一些变量到prompt template中,这样在应用的时候更加灵活。
from langchain_core.prompts import ChatPromptTemplate

#需要注意的一点是,这里需要指明具体的role,在这里是system和用户
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界级的技术文档编写者"),
    ("user", "{input}") # {input}为变量
])

#我们可以把prompt和具体llm的调用和在一起。
chain = prompt | llm
message = chain.invoke({"input": "大模型中的LangChain是什么?"})
print(message)

# print(type(message))
3.3 使用输出解析器
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser,JsonOutputParser

# 初始化模型
llm = ChatOpenAI(model="gpt-4o-mini")

# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界级的技术文档编写者。 "),
    ("user", "{input}")
])

# 使用输出解析器
# output_parser = StrOutputParser()
output_parser = JsonOutputParser()

# 将其添加到上一个链中
# chain = prompt | llm
chain = prompt | llm | output_parser

# 调用它并提出同样的问题。答案是一个字符串,而不是ChatMessage
# chain.invoke({"input": "LangChain是什么?"})
chain.invoke({"input": "LangChain是什么?用JSON格式回复,问题用question,回答用answer"})
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐