您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[东方证券]:他山之石系列报告(二):大模型应用开发框架LangChain梳理 - 发现报告
当前位置:首页/行业研究/报告详情/

他山之石系列报告(二):大模型应用开发框架LangChain梳理

信息技术2023-07-16浦俊懿、陈超、谢忱东方证券自***
他山之石系列报告(二):大模型应用开发框架LangChain梳理

行业研究|动态跟踪 看好(维持) 他山之石系列报告(二):大模型应用开发框架LangChain梳理 计算机行业 国家/地区中国 行业计算机行业 报告发布日期2023年07月16日 核心观点 LangChain是一个开发由语言模型驱动的应用程序的框架,加快基于大模型的应用构建速度。LangChain于22年10月底推出,是一个封装了大量大语言模型 (LLM)应用开发逻辑和工具集成的开源Python库,提供了标准的模块化组件,集成了不同的大语言模型并将其进行整合,并将它们连接到各种外部数据源和API,开发者们可以直接调用,大大加快了构建大模型应用的速度。有了LangChain,做一个基于公司内部文档的问答机器人通常只需要两天,而直接fork别人基于LangChain的代码构建个人的Notion问答机器人则只需要几个小时。 针对大模型应用上的不足,LangChain提供模块化组件进行优化。针对通用大模型难以获取外部信息、无法保存上下文记忆等不足,LangChain提供了多个组件模 块:Model模块可以将LLM的强大能力轻松集成到工作应用程序中;prompttemplate可以单独定义prompt的输入输出格式,输出解析器可以将LLM的输出解析为所需要的格式;Chain提供了将各种组件合并成一个统一应用程序的方式,通过链式结构可以实现多个模型的序列调用;Agent将LLM作为推理引擎,它会利用互联网上学习到的背景知识或你提供的新信息,来回答问题、推理内容或决定下一步的操作;LangChain提供了多种不同的Memory形式,开发者可以选择存储完整记忆、仅保留最后几轮对话记忆或是限制存储的token数等。 ChatGPTPlugin和LangChain并非竞争关系,LangChain已支持直接调用ChatGPTPlugin。随着ChatGPT公布其Plugin插件生态,部分开发者认为LangChain的价值会被插件直接取代,但LangChain和插件并非竞争关系, LangChain在插件推出后两天就更新了在LangChain抽象下的Plugin实现。LangChain在复杂的2B应用场景中仍具有显著的价值,在底层大模型和上层应用之间提供一层对业务复杂逻辑的抽象,满足复杂业务快速部署的需求。例如Langchain的Agent和Memory两个功能模块,现有的plugin不具备这样的能力。 LangChain仍处于开放开源状态,商业化潜力不明朗。目前LangChain仍处于早期开源阶段,尚未开始产生收入。常规开源大模型的盈利方式为,在用户数量达到一定规模后另外开发闭源定制产品或者整体转换成闭源产品进行收费。而 LangChain作为“依赖其他开源库的开源项目”,其主流使用人群为独立开发者或者小型企业,付费意愿不高,而大型企业可以基于开源的LangChain自己研发一套框架,整体商业化前景不明朗,仍需进一步探索。 一站式框架预计成为未来大模型应用开发和部署的首选,大厂纷纷加入战局。近期,各大云厂商纷纷推出了自家的一站式大模型训练、推理、应用开发、部署的云平台,如百度文心千帆、阿里云ModelScope平台、字节火山方舟平台、亚马逊 Bedrock服务等。由于生成式AI的使用对于算力的需求量巨大,大模型需要做训练和推理,门槛非常高,采用云服务方式来部署B端大模型及应用对企业来说更加经济。我们认为,一站式框架可能会成为未来大模型应用开发和部署的首选,生成式AI有望给云业务带来新一轮增长。 投资建议与投资标的 我们认为,随着国内大模型玩家不断增多,基于基础大模型建立的落地应用也会随后快速发展起来。建议关注三六零(601360,未评级)、科大讯飞(002230,买入)、拓尔思(300229,未评级)等拥有基础大模型的公司。 风险提示 技术落地不及预期;政策监管风险 证券分析师浦俊懿 021-63325888*6106 pujunyi@orientsec.com.cn 执业证书编号:S0860514050004 证券分析师陈超 021-63325888*3144 chenchao3@orientsec.com.cn 执业证书编号:S0860521050002 证券分析师谢忱 xiechen@orientsec.com.cn 执业证书编号:S0860522090004 联系人杜云飞 duyunfei@orientsec.com.cn 联系人覃俊宁 qinjunning@orientsec.com.cn 联系人宋鑫宇 songxinyu@orientsec.com.cn 他山之石系列报告(一):Salesforce的大2023-07-05 模型ToB应用分析 有关分析师的申明,见本报告最后部分。其他重要信息披露见分析师申明之后部分,或请与您的投资代表联系。并请阅读本证券研究报告最后一页的免责申明。 目录 一、LangChain:端到端的语言模型应用构建框架4 二、一站式框架或成为未来大模型应用开发和部署的首选8 投资建议与投资标的8 风险提示8 图表目录 图1:LangChain链接大模型和外部数据源4 图2:LangChain如何与OpenAI的LLM合作4 图3:GitHub平台LangChain星数历史记录4 图4:通过提示模板来格式化对LLM的输入5 图5:通过Chain连接多个LLM的输入输出5 图6:通过Agent调用各种工具6 图7:LangChain提供实体信息长期记忆能力6 图8:LangChain结构汇总示意6 图9:ChatGPT的插件还不成熟7 图10:LangChain支持ChatGPTPlugin实现7 图11:多家大厂推出一站式大模型服务平台8 表1:LangChain提供的功能或集成4 一、LangChain:端到端的语言模型应用构建框架 LangChain是一个开发由语言模型驱动的应用程序的框架。LangChain由前RobustIntelligence的机器学习工程师ChaseHarrison在22年10月底推出,是一个封装了大量大语言模型(LLM)应用开发逻辑和工具集成的开源Python库,提供了标准的模块化组件,集成了不同的大语言模型并将其进行整合,并将它们连接到各种外部数据源和API。22年11月初,HackerNews上“如何入门AI”的帖子回复中,LangChain第一次被列进AI入门套装;在23年1月的AIHackathon决赛中,有大量项目使用了LangChain。LangChain在Github上的星数迅速破万,成为LLM应用开发者选择中间件时的优先选择。 图1:LangChain链接大模型和外部数据源 数据来源:东方证券研究所绘制 图2:LangChain如何与OpenAI的LLM合作图3:GitHub平台LangChain星数历史记录 数据来源:freecodecamp,东方证券研究所数据来源:GitHub,东方证券研究所 大模型本身存在应用局限,LangChain可以加快基于大模型的应用构建速度。以ChatGPT为例,其训练数据只截至2021年底,无法实时获取外部信息,同时通用大模型仅训练了公开的数据知识,对于一些较为专业的问题大模型会给出胡说八道的答案。目前这些缺陷都可以通过外接API的方式来进行改善,比如OpenAI官方给出了Plugin让ChatGPT可以接入互联网,用向量数据库作为知识库对prompt进行处理后再对大模型进行提问等。LangChain为开发者们提供了方便,它封装好了大量的API相关逻辑和代码实现,开发者们可以直接调用,大大加快了构建一个应用的速度。有了LangChain,做一个基于公司内部文档的问答机器人通常只需要两天,而直接fork别人基于LangChain的代码构建个人的Notion问答机器人则只需要几个小时。 表1:LangChain提供的功能或集成 功能 集成API 数据预处理 UnstructuredlO、Airbyte… 数据索引 GPT-Index… Doc&TextSplitter GenericRecursiveTextSplitter、MarkdownSplitter、PythonCodeSplitter... 向量数据库与检索 FAISS、Pinecone、Weaviate、Elastic... 图数据库 Chroma、Neo4j… 外部知识或操作 SerpApi、Searx、WikipediaAPI、WolframAlpha、ZapierNaturalLanguageActionsAPI... LLMAPI OpenAl、HuggingFace、Cohere、Anthropic、PaLM、GooseAl.CerebriumAl、ForefrontAl、Petals… Embedding引擎 OpenAl、HuggingFace、Cohere... 可观测性 Helicone、PromptLayer、Weights&Biases... 应用部署 Streamlit、HuggingFace(Gradio)、Steamship、Kookburar… 模型评估数据集 HuggingFace、LangchainDatasets... 模型回复结构化及验证 kor、guardrails… 数据来源:海外独角兽,东方证券研究所 针对大模型应用上的不足,LangChain提供模块化组件进行优化。针对通用大模型难以获取外部信息、无法保存上下文记忆等不足,LangChain提供了多个组件模块: 1)Model:Model模块主要包含了大语言模型(LLM),借助LangChain,与LLM的交互将变得更加便捷,LangChain提供的接口和功能有助于将LLM的强大能力轻松集成到工作应用程序中。LangChain还提供异步支持,能够满足同时并发调用多个LLM的场景,最大限度地提高资源利用率。LangChain还支持编写自定义的LLM包装器,而不仅限于LangChain所支持的模型。 2)Prompt:prompt是向LLM提供的输入,LangChain提供了完备的管理和优化prompt的功能。最基础的功能是prompttemplate(提示模板),模板指的是我们希望获得答案的具体格式或蓝图。LangChain支持通过提示模板单独定义prompt的输入输出格式,其输出解析器可以将LLM的输出解析为所需要的格式。 3)Chain:Chain(链)提供了将各种组件合并成一个统一应用程序的方式,通过链式结构可以实现多个模型的序列调用,也能集成提示模板对用户输入进行格式化。LangChain提供了多种基础链式结构,包含简单的单向序列SimpleSequentialChain、可以让LLM查询API的APIChain、图谱检索查询的GraphQAChain等。通过将多个Chain与其他组件集成,可以生成更复杂的链式结构。 图4:通过提示模板来格式化对LLM的输入图5:通过Chain连接多个LLM的输入输出 数据来源:海外独角兽,东方证券研究所绘制数据来源:海外独角兽,东方证券研究所绘制 4)Agent:Agent(代理)是LangChain最强大的功能模块之一。Agent将LLM作为推理引擎,只要给它提供文本或其他信息源,它就会利用互联网上学习到的背景知识或你提供的新信息,来回答问题、推理内容或决定下一步的操作。Agent可以访问多种工具比如搜索引擎、数据库等,根据用户的输入,Agent能决定是否调用这些工具,并确定调用时的输入。在得到工具返回的结果后,Agent会判断下一步应该采取的步骤,直到Agent决定不再需要使用工具,然后直接回应用户。 5)Memory:一般在与LLM的交互过程中,模型是无法记住之前对话的历史消息的,无法实现跨越上下文的流畅对话应用。ChatGPT提供了短期的Memory(记忆),在每个交互session的问答里ChatGPT都能记住这个对话