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

LangChain组件图

LangChain 是什么

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

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

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

LangChain 框架组件

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

Outline概要

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

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

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

Models(I/O)

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

Prompts

Prompt templates:

  ·   对语言模型的指令

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

  ·   对语言模型的一个问题

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

TemplateFormat:

TemplateFormat

MessageTemplate:

MessageTemplate

FewShotPromptTemplate:

FewShotPromptTemplate

Example selectors:

Example selectors

Language models:

  ·   LLMs

  ·   Chat models

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

gpt-3.5-turbo:

gpt-3.5-turbo

Streaming:

Streaming

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

Caching:

Caching

outputparser

  ·   获取格式指令

  ·   解析

  ·   带有提示的解析

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

DateTimeParser:

DateTimeParser

EnumParser:

EnumParser

ListParser:

ListParser

OutputParser:

OutputParser

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

Memory

Outline概要

    · ConversationBufferMemory

    · ConversationBufferWindowMemory

    · ConversationTokenBufferMemory

    · ConversationSummaryMemory

ConversationBufferMemory:

ConversationBufferMemory

ConversationBufferWindowMemory:

ConversationBufferWindowMemory

ConversationTokenBufferMemory:

ConversationTokenBufferMemory

ConversationSummaryMemory:

ConversationSummaryMemory

Chains:

Chains

Outline概要

    · LLMChain

    · SequentialChain

               · SimpleSequentialChain

               · SequentialChain

    · RouterChain

LLMChain:

LLMChain

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

SimpleSequentialChain

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

SequentialChain流程图
SequentialChain

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

RouterChain流程图
RouterChain(1)
RouterChain(2)

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

Agents

Outline概要

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

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

分别举例:MathAndWikiAgent、PythonREPLAgent、MultiFunctionsAgent

MathAndWikiAgent:

MathAndWikiAgent

PythonREPLAgent:

PythonREPLAgent

MultiFunctionsAgent:

MultiFunctionsAgent

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

理文档的实用函数。

索引(index)

Outline概要

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

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

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

代码示例如下:

index

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

langchain-chatglm-6B(1)
langchain-chatglm-6B(2)

evaluation:

Outline概要

    · 示例生成:Example generation

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

    · LLM辅助评估:LLM-assisted evaluation

Example generation:

Example generation(1)
Example generation(2)

Manual evaluation (and debugging):

Manual evaluation (and debugging)

LLM-assisted evaluation:

LLM-assisted evaluation

开源项目:

最近开源的新作品,主要目标是想通过自然语言操作数据库替换传统企业管理后台web,有兴趣的同学欢迎加入开源,觉得不错的可以点个小⭐⭐,感谢大家~

项目地址如下:

https://github.com/sql-agi/DB-GPT

作者简介:

AI_皮皮虾、卷过大厂、贡献过开源、参与多次大模型比赛并🏆多次参加AIGC交流会(微软AIGC等)、一直走在AIGC最前沿!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容