当前位置: 首页 > news >正文

吃透LangChain,我的理解像Java的Spring

概念

LangChain‌ 是一个基于 ‌大语言模型(LLMs, Large Language Models)‌ 的开源框架,旨在简化构建复杂语言驱动应用的开发流程。它通过 ‌模块化设计‌ 和 ‌链式调用(Chain)‌ 机制,将自然语言处理任务拆解为可复用、可组合的组件,并支持与外部工具、数据源和记忆系统的集成。其核心目标是 ‌降低开发门槛‌,使开发者能够快速构建可扩展的、上下文感知的 AI 应用。

LangChain框架图

从下至上分别是:

    LangChain 库:Python 和 JavaScript 库,包含接口和集成,用于各种组件的组合,以及现成的链和代理的实现。
    LangChain 模板:易于部署的各种任务的参考架构集合。
    LangServe:将 LangChain 链部署为 REST API 的库。
    LangSmith:开发平台,可用于调试、测试、评估和监控基于任何 LLM 框架构建的链,并与 LangChain 无缝集成。

LangChain 库介绍:

LangChain 的核心组件和能力(六大核心抽象,用于构建复杂的AI应用,同时保持了良好的扩展能力。)

    Models(模型):

    Chat Models(聊天模型): LangChain 提供了一个标准接口,支持聊天模型。这些模型是语言模型的变体,其接口基于消息而不是原始文本。您可以使用不同类型的消息(如 AIMessage、HumanMessage、SystemMessage 和 ChatMessage)与聊天模型进行交互。
    Embeddings(嵌入): 帮助将文本转换为向量表示,以便在应用程序中进行处理。
    LLMs(大型语言模型): LangChain 支持大型语言模型,例如 ChatGPT,用于各种自然语言处理任务。

    Prompts(提示):

    Prompt Templates(提示模板): 提供易于部署的参考架构,适用于不同任务。
    Indexes(索引):
    Vector Databases(向量数据库): 用于存储和检索向量表示,例如文本嵌入。
    Interaction Layer Prompts(交互层提示): 用于构建用户与模型之间的交互。

    Memory(记忆):

    External Knowledge(外部知识): 整合外部知识源,丰富模型的知识库。
    External Tools(外部工具): 与外部环境进行交互,例如通过 API 请求执行操作。

    Chains(链):

    LangChain提供了LCEL(LangChain Expression Language)声明式编程语言,将不同组件组合起来解决特定任务,例如在大量文本中查找信息。

    Agents(代理):

    使得 LLMs 能够与外部环境进行交互,例如通过 API 请求执行操作

总之,LangChain 是一个强大的工具箱,不仅涵盖了基础工具,还为个性化需求提供了自定义组件解决方案。它使开发者能够更专注于创新和优化产品功能,从原型到生产环境的转化变得更加高效。

LangChain工作流程

       如上图,langChain 提供一套提示词模板Iprompt template) 管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果。
    LangChain 对大模型的封装主要包括 LLM 和 Chat Model 两种类型:

  • LLM-问答模型,模型接收一个文本输入,然后返回一个文本结果。
  • Chat Model-对话模型,接收一组对话消息,然后返回对话消息,类似聊天消息一样。 

核心概念:

LLMS

LangChain 封装的基础模型,模型接收一个文本输入,然后返回一个文本结果。

Chat Models

聊天模型(或者成为对话模型),与LLMs不同,这些模型专为对话场景而设计。模型可以接收一组对话消息,然后返回对话消息,类似聊天消息一样。

消息(Message)

指的是聊天模型(Chat Models)的消息内容,消息类型包括包括 HumanMessage、AIMessage.
SystemMessage、FunctionMessage和ToolMessage 等多种类型的消息。

提示(prompts)

LangChain 封装了一组专门用于提示词(prompts)管理的工具类,方便我们格式化提示词(prompts)内容。

输出解析器((Output Parsers)

如上图介绍,Langchain 接受大模型(llm)返回的文本内容之后,可以使用专门的输出解析器对文本内容进行格式化,例如解析 json、或者将 lm 输出的内容转成 python 对象。

Retrievers(RAG知识库)

为方便我们将私有数据导入到大模型(LLM),提高模型回答问题的质量,LangChain 封装了检索框架(Retrievers),方便我们加载文档数据、切割文档数据、存储和检索文档数据。

向量存储(Vector stores)

为支持私有数据的语义相似搜索,langchain 支持多种向量数据库。

Agents

智能体 (Agents),通常指的是以大模型(LLM)作为决策引擎,根据用户输入的任务,自动调用外部系统、硬件设备共同完成用户的任务,是一种以大模型(LLM)为核心的应用设计模式。

应用场景

  • 对话机器人:构建智能的对话助手、客服机器人、聊天机器人等。

  • 知识库问答: 结合知识图谱,进行开放域问题的问答服务。

  • 智能写作: 如文章写作、创意写作、文本摘要等

快速入门

安装LangChain

pip install langchain

# 阿里源
pip install langchain -i https://mirrors.aliyun.com/pypi/simple/

# 清华源
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 如果一直下载不了,请检查pip版本是否太低
python.exe -m pip install --upgrade pip


不要忘记安装
pip install langchain_openai -i https://mirrors.aliyun.com/pypi/simple/

linux服务器上可以使用conda安装

初始化模型

# 引入langchain聊天场景的提示词模版
from langchain.chains.question_answering.map_rerank_prompt import output_parser
from langchain_core.prompts import ChatPromptTemplate
# 对输出进行格式化,自己尝试
from langchain_core.output_parsers import StrOutputParser
# 引入langchain openai sdk
from langchain_openai import ChatOpenAI
# 此处使用我自己的大模型
llm = ChatOpenAI(
    # streaming=True,
    # verbose=True,
    openai_api_key="sk-XXX",
    openai_api_base="http://192.168.10.106:11434/v1",
    model_name="llama3.2"
)

# 根据message生成提示词
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界级的技术专家"),
    ("user", "{input}")
])

output_parser = StrOutputParser()

# 通过langchain的链式调用,生成一个chain
chain = prompt | llm | output_parser

# 通过链路的 invoke 方法,进行链式调用,先生成提示词,在调用大模型
result = chain.invoke({"input": "帮我写一篇关于AI的文章,100字左右"})

print(result)

输出

**人工智能:未来的革命**

人工智能(Artificial Intelligence,简称AI)正在成为我们日常生活中的重要推动力。随着技术进步,AI越来越能够模仿人类的思维和行为,实现各项任务。从自行车驾驶到 intelligent assistants,AI已经变得更加接近人。然而,它仍面临着防御机制的提升以及负面的社会影响。这让我们在探索 AI 未来的局限性方面产生了新的思考。

在未来的发展中,我们要更多关注 AI 的安全性、可持久性和公众价值观。AI 的进步将带来更高效的工作和生活质量。但同时,也需要我们考虑其对人类社会的影响和合适使用方式,以确保它不会成为灾难性的技术。

**AI:未来的革命,前景不定,但也必然存在**

相关文章:

  • 2025最新系统 Git 教程(七)(完结)
  • 零基础上手Python数据分析 (12):DataFrame 数据清洗与预处理 (下) - 类型转换、格式化、文本与日期处理
  • 从0到1构建企业级消息系统服务体系(一):产品架构视角下的高并发设计与动态响应能力建设
  • 猫咪如厕检测与分类识别系统系列【三】融合yolov11目标检测
  • cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析
  • AVUE 搜索 和 表单 标签分开对齐方式
  • Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
  • Linux安装yum和python
  • Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组------元组
  • leetcode刷题日记——螺旋矩阵
  • 运行一次性任务与定时任务
  • Python 质数筛选:从入门到优化的 5 种方法
  • RPA VS AI Agent
  • 如何解决线程安全问题(不涉及分布式情况)
  • MTCNN 人脸识别
  • 对于GAI虚假信息对舆论观察分析
  • 月之暗面开源:多模态推理模型(激活2.8B) Kimi-VL-A3B-Thinking
  • PCDN收益高低的关键因素
  • Python p_tqdm包介绍
  • 2025年土建施工员考试题库及答案
  • 广州市建设委员会网站/关键词如何优化排名
  • bootstrap 门户网站/怎么样推广自己的店铺和产品
  • 北京大兴专业网站建设公司/今日头条网站推广
  • 网站视差怎么做/网站推广软件下载
  • 做平台外卖的网站需要什么资质/网站搭建外贸
  • 做的好的宠物食品网站/最近新闻热点