LangChain 系列 -01 是什么
实际开发中用到 LangChain,边学边用。在此记录对它的梳理,有兴趣的同学可一起进步。这个系列可能会持续很久,不断更新。
本文是 LangChain 的入门介绍。包括下面的内容:
LangChain:Why?为什么使用 LangChain?
LangChain:What?LangChain 是什么?
LangChain:How?通过例子快速入门。
LangChain: Why
随着 ChatGPT 的流行,LLM(大语言)模型走入人们的视野。它以其强大的语言理解、文字生成、代码生成、多轮对话以及正在路上的多模态能力,成为新的技术底座。越来越多的工具和产品,都在 LLM 的基础上开发而成,比如微软的 Office Copilot、GitHub Copilot、AutoGPT、ChatPDF 等。用 AI 发明和重新发明所有的工具,已经成为业界的一个共识。
GPT 提供的各种能力:https://platform.openai.com/examples
各种 AI 应用:https://gpt3demo.com/map
|
各种 LLM 都以 API 的方式开放自己的能力,导致基于大模型的应用出现井喷之势,堪称 AI 应用的“寒武纪大爆发”。
“如何在大模型的基础上方便地开发一款自己的应用?”,这成为摆在很多开发者面前的问题。于是,LangChain 应运而生,横空出世。
LangChain:What
LangChain 是一个基于大语言模型 LLM 开发应用的编程框架:
LangChain:https://docs.langchain.com/docs/
基于 LLM 的应用,不仅仅是直接调用 LLM 的 API 接口,而且还会:一方面:访问其他数据(比如企业或者开发者自有的数据、各种开源数据集等),这是 LangChain 强调的第一个原则,叫 be data-aware,数据意识;另一方面,与其他系统或者环境交互(比如搜索引擎、Python 编译器、数学计算器等等),才能实现各种丰富的产品功能,这是 LangChain 着重的第二个原则,叫 be agentic,代理意识(这不是一个太好的翻译)。
为什么 LangChain 会强调做这两个原则呢?这跟 LLM 的能力和它在系统中的作用有关。
尽管像 GPT-3.5 这样的 LLM 是功能强大的 AI,但从概念上,我们可以将其抽象为如上面所示的"text in, text out"的系统:输入的是 Prompt(提示词),输出的 Completion(生成结果)。其中输入是自然语言,输出的可能是自然语言,也有可能是程序代码,还有可能是其他的形式语言,比如 Markdown、diagram as text 等。但本质上,还是 text。这就引出两个问题:
作为 input 的 Prompt 如何生成?
如果只是简单的提问,比如“中国的首都在哪里?”“我为什么没有参加我父母的婚礼”等,那只需用户将自己的问题直接作为 Prompt 提交给 LLM 就行;但在实际的应用中,问题往往需要更多、更复杂的背景信息,比如“基于过去一年的营收数据,我们的增长策略可以有哪些?”“基于我们公司的知识库,总结过去一个月研发过程遇到的问题?”,这些问题都需要和外部的数据源做结合,才能生成精确的 Prompt。这就是 LangChain 强调 Be data-aware 的原因。
作为 output 的 Completion 如何与环境交互?
作为 text 的输出,在一些情况下,是够用的。比如单纯的问答或者聊天,用户看到 Completion 的文本就够用了。但很多时候,输出的 text 还要借助其他工具才能真正执行。比如输出的 Python 代码要调用 Python 的解释器才能执行得到结果;生成的 diagram as text 的文本,需要调用图形引擎才能画出图来。LLM 还能做为调度引擎,给它喂入外部工具的相关信息,让它去编排和调用。这就是 LangChain 强调 Be agentic 的原因,要和环境交互,和外部系统合作。
基于上面的认知,可以画出一个基于 LangChain 开发 LLM 应用的系统框图:
其中,包含 LangChain 的核心组件:
LLM. 大语言模型是应用的核心,是大脑
Prompt. 用户通过 Prompt 与 LLM 对话
Memory. 通过 Memory 让 LLM 能记住对话历史,实现多轮对话
Chains. 通过 Chains 可以将多个不同模型组合串联起来,实现复杂的任务
Agents. LLM 是大脑,只有思维能力;Agents 是手脚,配合 LLM 做行动(比如查询天气、画图等)
Indexes. LLM 是基于公开数据做训练,且有一定的时间限制(比如 ChatGPT 的训练语料截止到 2021 年),因此无论是知识的覆盖度还是新鲜度,都有所限制。当用户想基于自有的知识库或业务数据做应用时,Indexes 就提供相关的检索能力,让 LLM 能与它们互动。
未完待续
AI日课@20230405:基于LLM的应用开发框架LangChain
版权声明: 本文为 InfoQ 作者【无人之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/daa3435fde6b2ba9ff8c64fdd】。文章转载请联系作者。
评论