大家好,这里是粥余
随着大模型技术的飞速发展,**langchain** 的迭代也来到了2.0 时代。
按照Langchain 新的文档结构再结合之前的资料,我们重新来整理一下相关知识。


先来看下官网介绍: 传送门

前言

LangChain 是一个开发由大型语言模型(LLMs)驱动的应用程序的框架。

LangChain 简化了 LLM 应用生命周期的每一个阶段:

  • 开发:使用 LangChain 的开源 构建块组件 构建您的应用程序。利用 第三方集成模板 快速上手。
  • 生产化:使用 LangSmith 来检查、监控和评估您的链,以便您可以持续优化并自信地部署。
  • 部署:使用 LangServe 将任何链转变为 API。

image-20240627095511759

具体来说,该框架包括以下开源库:

  • **langchain-core**:基本抽象和 LangChain 表达式语言。
  • **langchain-community**:第三方集成。
  • **langchain**:构成应用程序认知架构的链、代理和检索策略。
  • **langgraph**:通过将步骤建模为图中的边和节点,使用 LLMs 构建健壮且具有状态的多参与者应用程序。
  • **langserve**:将 LangChain 链作为 REST API 部署。

咱们先简单的概括一下:

构建块

就是LangChain Expression Language (LCEL), 也就是链中的各个组件:

Component Input Type Output Type
Prompt Dictionary PromptValue 提示词
ChatModel Single string, list of chat messages or a PromptValue ChatMessage chat 模型(支持多轮)
LLM Single string, list of chat messages or a PromptValue String completion (单轮)
OutputParser The output of an LLM or ChatModel Depends on the parser 输出解析器
Retriever Single string List of Documents 检索器
Tool Single string or dictionary, depending on the tool Depends on the tool 工具

提示词: 很好理解,给模型的指令,完成某个任务,比如让模型写一首诗。

ChatModel :使用消息序列作为输入并返回聊天消息作为输出(而不是使用纯文本)的语言模型。聊天模型支持为对话消息分配不同的角色,帮助区分来自AI、用户以及系统消息等指令的消息。用户和AI对话,支持聊天历史,AI有记忆。

LLM:以字符串作为输入并返回字符串的语言模型。AI没有记忆,通常是一锤子买卖,用于完成一次性任务。比如翻译一句话。

注意:

ChatModel 类似于 OpenAI Chat

LLM 类似于 OpenAI Completions

Chat vs Completions

OpenAI的ChatCompletion和Completion都是自然语言生成模型的接口,但它们的用途和应用场景略有不同。

Completions

1
2
3
通用的自然语言生成接口,支持生成各种类型的文本,包括段落、摘要、建议、答案等等。

Completion接口的输出更为多样化,可能会更加严谨和专业,适用于各种文本生成场景,例如文章创作、信息提取、机器翻译、自然语言问题回答等等。

Chat

1
2
3
专为生成对话和聊天场景而设计。

ChatCompletion接口生成的文本通常会更具有人类对话的风格和语调,可以用于智能客服、聊天机器人等场景,以及在日常聊天中帮助用户自动生成回复。

输出解析器:处理大模型的输出,可以将输出转化成需要的格式,比如转化成特定的JSON格式,便于后续流程处理。

检索器:在langchain中,检索器通常和向量数据库嵌入模型绑定,用于语义搜索。比如可以在本地向量数据库Chroma 中使用BGE-large的中文模型,对中文数据进行相似度搜索。

工具: 通常是我们自己定义的,能够实现某种功能的方法。工具可以被大模型识别,当用户的需求需要 调用工具时,大模型会自动识别,并让我们调用工具。Langchain 中的Agent 可以自己识别并调用用户定义的工具。


组件

这里的组件,是指langchain 工具包含的各个重要的“包”。主要是下面这个几个包:

langchain-core

这个包包含了不同组件的基础抽象以及如何将它们组合在一起的方法。在这里定义了LLMs、vectorstores、retrievers等核心组件的接口。

langchain

主要的langchain包,包含了构成应用程序认知架构的链、代理和检索策略。这里的所有链、代理和检索策略都不是特定于任何一种集成,而是适用于所有集成的通用类型。

langchain-community

这个包包含了由LangChain社区维护的第三方集成。关键的合作伙伴包已经被分离出去。这个包包含了各种组件(LLMs、vectorstores、retrievers)的所有集成。为了尽可能保持包的轻量级,这个包中的所有依赖关系都是可选的。各个模型厂商、向量数据库厂商的包,都在这里。

LangGraph

langgraph是langchain的一个扩展,旨在通过将步骤建模为图中的边和节点,使用LLMs构建健壮且具有状态的多参与者应用程序。

提供了创建常见类型代理的高级接口,以及用于组合自定义流程的API。

也是在langchain中构建复杂Agent 逻辑的基础。(Langchain 的部分现成的Agent 就是用LangGraph 实现)

langserve

一个用于将LangChain链作为REST APIs部署的包。它使得快速启动并运行一个生产就绪的API变得简单。能够让我们快速搭建AI应用的前后端。

LangSmith

一个开发者平台,可以调试、测试、评估和监控LLM应用程序。


第三方集成

只要不是langchain 自己开发的,包括 大语言模型、嵌入模型、向量数据库、第三方工具等等,都属于第三方集成。

模板

langchain 提供的一些可以开箱体验的功能,类似于脚手架,安装之后可以立即体验。


在正式接触langchain 之前,小伙伴们可以先到国内大厂的网站注册一下,Langchain官方的代码里

国内模型作为例子的情况不多,我们主要使用国内的模型给大家介绍,小伙伴们需要先去注册一下。

国内比较不错的模型(性价比高,部分模型免费):

百度千帆大模型平台传送门

  • ERNIE 4.0 文心一言4
  • ERNIE 3.5 文心一言3.5
  • ERNIE Speed 免费
  • ERNIE Lite 免费
  • ERNIE Tiny 免费

智谱AI传送门

  • GLM-4-0520
  • GLM-4-AirX
  • GLM-4-Air

**通义千问 (**DashScope灵积模型服务**)**: 传送门

  • qwen-turbo
  • qwen-plus
  • qwen-max

字节跳动 豆包模型传送门

  • Doubao-lite-4k
  • Doubao-pro-32k

Moonshot 传送门

  • moonshot-v1-128k
  • moonshot-v1-32k