所有文章 > AI驱动 > LLM之LangChain(一)| LangChain六大核心模块简要汇总
LLM之LangChain(一)| LangChain六大核心模块简要汇总

LLM之LangChain(一)| LangChain六大核心模块简要汇总

2023年是LLM(大语言模型)的元年,在这一年底座大模型,微调大模型,部署大模型并驾齐驱,发展的如火如荼。然而,目前的大模型并非完美,上下文窗口有限,幻觉问题等等问题,而各大厂商的大模型的API接口、数据格式和工具难以统一,而像LangChainLlamaIndex这样的大模型应用框架解决了大模型“最后1公里”。

       之前我对LangChain比较零散的使用过,本文将对LangChain的六大核心模块中重要概念进行罗列,希望可以给读者一个更清晰更全面的应用指导。六大核心模块,如下图所示:

PS:由于LangChain社区发展快,所以此思维导图持续更新中……

LangChain六大模块

一、Model I/O

1.1 模型包装器

       LLM主要分为续写(Completion)聊天(Chat Completion)两种模式,LangChain也同样适配。

– 01 LLM模型包装器

       LangChain已经实现了50种不同大语言模型的Completion类型API的包装器,包括OpenAI、Llama.cpp、CohereAnthropic等。OpenAI的Text Completion类型API在2023年7月进行最后一次更新,2020-2022年的模型text-davinci-003、text-davinci-002、Davinci、Curie、Babbage、Ada等只能通过Completion接口访问,而像GPT-3.5-Turbo、GPT-4等模型的访问可以通过Chat Completion来访问。

– 02 聊天模型包装器

– 01 ChatOpenAI:用于包装OpenAI Chat大语言模型(如GPT-4GPT-3.5-Turbo)

– 02 AzureChatOpenAI:用于包装Azure平台上的OpenAI模型

– 03 PromptLayerChatOpenAI:用于包装PromptLayer平台上的OpenAI模型

– 04 ChatAnthropic:用于包装Anthropic平台上的大语言模型

– 05 ChatGooglePalm:用于包装Google Palm平台上的大语言模型

– 06 Chat Vertex AI:用于包装Vertex AI平台上的大语言模型,如Vertex AI的PaLM API中包含了Google的PaLM2的端点

1.2 提示词模板管理

       Prompt对于LLM来说非常重要,而LangChain为复杂的Prompt预置了很多模板,常见的如下所示:

– 01 PromptTemplate包装器

– 02 ChatPromptTemplate包装器

– 03 FewShotPrompt Template模板

– 04 多功能提示词模板

1.3 输出解析器

        LLM的输出经常会被应用于下游任务,比如在Prompt中添加“请输出JSON格式”,但模型返回的字符串形式JSON还需要进行转换为JSON对象,但在实际使用中,常常会遇到异常,因此LangChain退出了输出解析器来解决上述问题,常见的输出解析器如下所示:

– 01 BooleanOutputParser:用于解析布尔值类型的输出

– 02 CommaSeparatedList OutputParser:用于解析以逗号分隔的列表类型的输出

– 03 DatetimeOutputParser:用于解析日期时间类型的输出

– 04 EnumOutputParser:用于解析枚举类型的输出

– 05 ListOutputParser:用于解析列表类型的输出

– 06 PydanticOutputParser:用于解析符合Pydantic大语言模型需求的输出

– 07 StructuredOutputParser:用于解析具有特定结构的输出

二、Retrieval

2.1 数据加载器

       LLM并不完美,比如训练数据是有时间限制的,GPT-4训练数据日期截止到2023年4月,也就是说GPT-4并不能回答2023年4月之后世界发生的事情。LangChain通过支持RAG功能来添加辅助数据来缓减LLM知识更新的问题,一定程度上可以缓减幻觉。LangChain支持的数据源格式,如下所示:

– 01 CSV:CSVLoader

– 02 文件目录:DirectoryLoader

– 03 HTML:HTMLLoader

– 04 JSON:JSONLoader

– 05 Markdown:MarkdownLoader

– 06 PDF文档加载:

  • PyPDF文档加载器
  • 在线PDF文档加载器
  • PyPDFium2文档加载器
  • PDFMiner文档加载器
  • PyMuPDF文档加载器
  • PyPDFDirectoryLoader文档加载器
  • PDFlumberLoader文档加载器

2.2 嵌入模型包装器

– 01 自然语言模型嵌入

  • OpenAIEmbeddings
  • HuggingFaceEmbeddings
  • HuggingFaceHubEmbeddings
  • HuggingFaceInstructEmbeddings
  • SelfHostedHuggingFaceEmbeddings
  • SelfHostedHuggingFaceInstructEmbeddings

– 02 AI平台或云服务嵌入

  • Elasticsearch
  • SagemakerEndpoint
  • DeepInfra

– 03 专门的嵌入模型

  • AsymmetricSemanticEmbedding
  • SymmetricSemanticEmbedding

– 04 子托管嵌入

  • SelfHostedEmbeddings

– 05 仿真或测试嵌入

  • FakeEmbeddings

– 06 其他类型

  • Cohere
  • LlamaCpp
  • ModelScope
  • TensorflowHub
  • MosaicMLInstructor
  • MiniMax
  • Bedrock
  • DashScope
  • Embaas

2.3 文档转换器

– 01 按字符切割

– 02 代码切割:RecursiveCharacterTextSplitter

– 03 Markdown标题文本切割器:MarkdownHeaderTextSplitter

– 04 按字符递归切割

– 05 按Token切割

  • Tiktoken标记切割器
  • SpaCyTextSplitter标记切割器
  • SentenceTransformersTokenTextSplitter标记切割器
  • NLTKTextSplitter标记切割器
  • Hugging Face标记切割器

2.4 向量存储库

– 01 FAISS

– 02 Chroma

– 03 Pinecone

– 04 Zilliz

2.5 检索器

– 01 自查询检索器

– 02 时间加权向量存储检索器

– 03 向量存储支持的检索器

– 04 网络研究检索器

三、Chains

       Chain是LangChain中非常重要的组件,作用是管理应用程序中的数据流动,可以把不同组件(或者其他Chain组件)链接在一起,从而构建完整的数据处理流程。常见的Chain,如下所示:

3.1 基础链

– 01 LLMChain

– 02 路由链

– 03 顺序链

3.2 文档链

– 01 Stuff链

– 02 Refine链

– 03 MapReduce链

– 04 重排链

四、Agents

4.1 Agent类型

– 01 Action Agent

  • ZERO_SHOT_REACT_DESCRIPTION
  • REACT_DOCSTORE
  • SELF_ASK_WITH_SEARCH
  • CONVERSATIONAL_REACT_DESCRIPTION
  • CHAT_ZERO_SHOT_REACT_DESCRIPTION
  • CHAT_CONVERSATIONAL_REACT_DESCRIPTION
  • STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION

– 02 langchain.experimental

– 01 Plan and Execute Agent

– 02 Autonomous Agent

  • Baby AGI

– 03 Generative Agent

  • 模拟斯坦福小镇多智能体

4.2 Tools组件

4.3 Toolkits组件

4.4 AgentExecutor组件

五、Memory

       LLM实际上是无记忆的,在聊天机器人中,历史消息是非常重要的,LangChain使用Memory组件来存储历史信息,下面是常见的Memory类型:

  • 01 ConversationTokenBufferMemory
  • 02 ConversationBufferMemory
  • 03 ConversationBufferWindowMemory
  • 04 ConversationEntityMemory
  • 05 ConversationKGMemory
  • 06 CombinedMemory
  • 07 ReadOnlySharedMemory
  • 08 SQLChatMessageHistory
  • 09 MongoDBChatMessageHistory
  • 10 DynamoDBChatMessageHistory

六、Callbacks

       在IT领域中,回调是一个非常重要的概念。回调处理器允许开发者在特定事件发生时执行自定义操作,在许多场景中非常有用,比如日志记录、性能监控、流式处理等。下面是设置Callback的一些事件:

6.1 LLM事件

– 01 on_llm_start

– 02 on_llm_new_token

– 03 on_llm_end

– 04 on_llm_error

6.2 聊天模型事件

– 01 on_chat_model_start

6.3 链事件

– 01 on_chain_start

– 02 on_chain_end

– 03 on_chain_error

6.4 工具事件

– 01 on_tool_start

– 02 on_tool_end

– 03 on_tool_error

6.5 其他事件

– 01 on_text

– 02 on_agent_action

– 03 on_agent_finish

总结:

       本文主要是对LangChain六大核心组件基本概念以及列出重要组件的介绍,但是由于内容多,而且LangChain更新快,尽量展示出更多的内容,但缺少更多介绍细节,也难免有遗漏,敬请期待后续更新更多内容……

参考文献:

[1] https://python.langchain.com/docs

[2] https://u.jd.com/JisePtB

文章转自微信公众号@ArronAI

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费