LM(大模型)应用开发利器之LangChain,带你走进AI世界

原文:LLM(大模型)应用开发利器之LangChain,带你走进AI世界 - 简书

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第1张图片

LangChain组件图

LangChain 是什么

首先 LangChain 是一个框架,这个框架是用来让开发者进行 LLMs (大语言模型)应用开发的。

可以理解是为各种 LLM 开发的脚手架,将 LLM 的各个组件进行封装和链接。把 LLMs 相关的组件“链接”在一起,简化 LLMs 应用的开发难度,方便开发者快速地开发复杂的 LLMs 应用。

举一个不是很恰当的栗子,从 Java 工程师的角度来看 LangChain 更像是 Spring 或者 SpringBoot 这种框架,帮助开发人员更快的进行应用开发。

LangChain 框架组件

Models(I/O):各种类型的模型集成。

Outline概要

    · Prompts:模板化、动态选择和管理模型输入

    · Language models:通过通用接口调用语言模型

    · Output parsers:从模型输出中提取信息

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第2张图片

Models(I/O)

Prompts组件:包含Prompt templates和Example selectors。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第3张图片

Prompts

Prompt templates:

  ·   对语言模型的指令

  ·   一组几个镜头示例来帮助语言模型生成更好的响应

  ·   对语言模型的一个问题

分别举例:TemplateFormat、MessageTemplate、FewShotPromptTemplate、Example selectors

TemplateFormat:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第4张图片

TemplateFormat

MessageTemplate:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第5张图片

MessageTemplate

FewShotPromptTemplate:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第6张图片

FewShotPromptTemplate

Example selectors:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第7张图片

Example selectors

Language models:

  ·   LLMs

  ·   Chat models

LLMs:采用文本字符串作为输入并返回文本字符串的模型。

gpt-3.5-turbo:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第8张图片

gpt-3.5-turbo

Streaming:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第9张图片

Streaming

Chat models:聊天模型是语言模型的变体。

Caching:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第10张图片

Caching

outputparser

  ·   获取格式指令

  ·   解析

  ·   带有提示的解析

分别举例:DateTimeParser、EnumParser、ListParser、OutputParser

DateTimeParser:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第11张图片

DateTimeParser

EnumParser:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第12张图片

EnumParser

ListParser:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第13张图片

ListParser

OutputParser:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第14张图片

OutputParser

Memory:记忆涉及在用户与语言模型的交互过程中保留状态概念。用户与语言模型的交互是在 ChatMessages 的概念中捕获的,因此这可以归结为从一系列聊天消息中摄取、捕获、转换和提取知识。一般来说,对于每种类型的记忆,都有两种理解使用记忆的方法。这些是从一系列消息中提取信息的独立函数,然后您可以通过一种方式在链中使用这种类型的内存。内存可以返回多条信息(例如,最近的 N 条消息和所有先前消息的摘要)。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第15张图片

Memory

Outline概要

    · ConversationBufferMemory

    · ConversationBufferWindowMemory

    · ConversationTokenBufferMemory

    · ConversationSummaryMemory

ConversationBufferMemory:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第16张图片

ConversationBufferMemory

ConversationBufferWindowMemory:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第17张图片

ConversationBufferWindowMemory

ConversationTokenBufferMemory:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第18张图片

ConversationTokenBufferMemory

ConversationSummaryMemory:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第19张图片

ConversationSummaryMemory

Chains:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第20张图片

Chains

Outline概要

    · LLMChain

    · SequentialChain

               · SimpleSequentialChain

               · SequentialChain

    · RouterChain

LLMChain:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第21张图片

LLMChain

SimpleSequentialChain:一般序列链可以将前一个链的输出结果,作为后一个链的输入。一般序列链有唯一输入和输出变量。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第22张图片

SimpleSequentialChain

SequentialChain:序列链中包含多个链,其中一些链的结果可以作为另一个链的输入。序列链可以支持多个输入和输出变量。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第23张图片

SequentialChain流程图

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第24张图片

SequentialChain

RouterChain:路由链类似一个while else的函数,根据输入值,选择对应的路由(路径)进行后续的链路。整个路由链一般一个输入,一个输出。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第25张图片

RouterChain流程图

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第26张图片

RouterChain(1)

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第27张图片

RouterChain(2)

Agents:某些应用程序需要根据用户输入对 LLM 和其他工具进行灵活的调用链。代理接口为此类应用程序提供了灵活性。代理可以访问一套工具,并根据用户输入确定使用哪些工具。代理可以使用多种工具,并使用一个工具的输出作为下一个工具的输入。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第28张图片

Agents

Outline概要

    · 动作代理:在每个时间步,使用所有先前动作的输出来决定下一个动作

    · 计划并执行代理:预先决定完整的操作顺序,然后执行所有操作而不更新计划

分别举例:MathAndWikiAgent、PythonREPLAgent、MultiFunctionsAgent

MathAndWikiAgent:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第29张图片

MathAndWikiAgent

PythonREPLAgent:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第30张图片

PythonREPLAgent

MultiFunctionsAgent:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第31张图片

MultiFunctionsAgent

索引(index):索引是指以最佳方式对文档进行结构化,以便语言模型(LLMs)能够与其进行最佳交互。这个模块包含了处

理文档的实用函数。

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第32张图片

索引(index)

Outline概要

    · 嵌入(Embeddings):嵌入是对信息(例如文本、文档、图像、音频等)的数值表示。通过嵌入,可以将信息转换为向量形式,以便计算机能够更好地理解和处理。

    · 文本拆分器(Text Splitters):当需要处理较长的文本时,有必要将文本分割成多个块。文本拆分器是用于将长文本分割成更小片段的工具。

    · 向量数据库(Vectorstores):向量数据库存储和索引来自自然语言处理模型的向量嵌入,用于理解文本字符串、句子和整个文档的含义和上下文,从而获得更准确和相关的搜索结果。请参阅可用的向量数据库。

代码示例如下:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第33张图片

index

应用实例langchain-chatglm-6B流程图如下:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第34张图片

langchain-chatglm-6B(1)

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第35张图片

langchain-chatglm-6B(2)

evaluation:

Outline概要

    · 示例生成:Example generation

    · 手动评估(和调试):Manual evaluation (and debugging)

    · LLM辅助评估:LLM-assisted evaluation

Example generation:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第36张图片

Example generation(1)

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第37张图片

Example generation(2)

Manual evaluation (and debugging):

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第38张图片

Manual evaluation (and debugging)

LLM-assisted evaluation:

LM(大模型)应用开发利器之LangChain,带你走进AI世界_第39张图片

LLM-assisted evaluation

最后编辑于 :2023.06.30 18:53:55

你可能感兴趣的:(langchain,大模型,prompt,langchain,人工智能,chatgpt)