发布时间:2023-06-25
本节讲解LangChain官方提供的一个项目,跟大家展示企业级开发的核心元素,如图2-1所示,是项目的架构示意图。
图2- 1 LangChain项目架构示意图
一个基本原则是你的提示词和模型进行交互,作为和模型交互的一个过程,可以统一认为是一个对话流,即使是一次对话,从对话的角度,会有历史数据(Historic Data),也有当前的输入话语(Current Utterance),这两部分的内容都很重要,为什么?因为基于大模型做一个对话的AI产品,历史的信息必然会影响当前的信息,当前的信息处在一个上下文中,你当前说一句话,从一种正常的角度,肯定是有上下文的,可能有同学会问第一句话怎么处理,可以将第一句话作为提示词,自动把它设定为上下文,例如,可以指定这个系统是一个数学老师,或者是一个销售,或者是一个工程师来参加面试等等。当前的话语有意义,是因为有历史数据以及系统设置提供的上下文。问大家一个事情,跟大模型进行交互的时候,是不是要把历史数据加上现在的话语?这个问题很重要,当然这个问题不简单,如果把当前的话语追加在历史数据上,导致的结果是历史数据越来越长,如果不断的追加,会形成一个流式链条的提示词,调用大模型的时候,提示词是以标记的方式传给大模型,当提示词越来越大的时候,不仅是效率的问题,成本也是一个很大的问题,这是从企业的角度,或者从经济的角度考虑这个问题,但这不是致命的,致命的是它的质量问题,历史数据加上当前的话语,结合起来生成更多的上下文信息,这会产生一个弊端,除了长度问题,从企业的角度讲,一个至关重要的弊端是当你的历史数据比较多的时候,当前的话语可能根本就不起什么效果了。这涉及到提示词和提示词的本质,这是一个比较复杂的话题,可以跟大家谈两个重要的点,其中一个重要的点是从用语或者用词中,找出显性或者隐性的模式(patterns),模式是它背后逻辑思考能力的一个核心源泉之一,这是第一点;第二点是它会基于用词以及模式,自动提取出关键性的信息,因为它们是一个相互作用的过程。如果结合历史数据和当前的话语,只是简单不断追加的这种方式,大模型可能会忽略你刚才输入的话,导致的结果就是你跟它对话,它不能理解你说的内容。
在生成提示词这一步之前还有一个步骤,这个步骤可以称之为独立的服务(Standalone Service),它会基于当前输入的信息,同时,基于历史数据或者系统的设定,提供相应的上下文,这个步骤非常重要,现在只是从流程的角度进行分享,它有五种具体的策略,在独立服务(Standalone Service)流程之后会形成提示词。从企业级的角度,不会这么简单,因为企业有私有数据,我们的独立服务(Standalone Service)必须和私有数据进行交互。总结一下,独立服务结合了历史数据、当前的话语、企业私有数据,从而形成一个企业级的提示词,然后,它才会和我们的大模型进行交互,这是一个循环迭代的过程。
使用提示词和大模型进行交互,但还不足以构成企业级基于大模型驱动的应用程序开发,这里缺了两个元素,第一个是工具,第二个是第三方数据。举个例子,如果做一个教育产品,已经积累一些题库或者学生的数据,教学生的时候可能是一种多模态的方式,例如,进行阅读理解的时候,可能要访问学校里面的一些系统来增强学生的理解,把它转换成音频的方式,也可能是补充图片或者使用视频的方式,这就涉及到数据和工具。这是一个非常关键的概念,因为它太重要了,我们需要一个容器来完成模型、工具和数据的交互,这个容器就是LangChain,可以认为LangChain是大模型开发时代的操作系统(Operation System),因为它驱动了所有模块和数据的相互交互。通过它的名字也可以知道,它叫LangChain,把一个又一个的模块进行串联,但是在开始设计的时候,它并没有太多的从代理(Agent)或者操作系统(operation system)的角度去考虑事情,代理其实是后来才逐渐强化的,但随着LangChain越来越流行、越来越火,以及大家用的越来越多,LangChain的创始人很清晰的阐述,现在最大的兴趣都是在代理(Agent)上,在这样一个框架中,代理还是一个很开放式的领域,代理本身办的一件事情就是基于大模型驱动的过程中,在适当的时候使用工具、本地数据、或者第三方数据来完成大模型设定的步骤。当然一个好的代理,它是一个动态调整的过程,可以认为它是一个循环(loop),它既能与模型打交道,又能与数据打交道,又能与工具打交道,而且它能够处理异常,并且能够评估整个系统的行为。如果用一句话总结LangChain,它就是一个服务(Service)、框架(Framework)、或者平台(Platform),以大模型为驱动,整合数据和工具来完成新一代的AI开发。Tool Hub其实也是一个机会,你创建很多工具,让LangChain来使用,LangChain团队鼓励社区参与各种API的开发,其实都是工具。另外一个是数据(data), 例如,一个教育系统可能使用多模态,它的音频、视频或者其他的数据,学单词可能想用一些电影的片段等等,这都是很容易理解的。在需要的时候,LangChain会不断的和工具以及第三方数据打交道,因为它本身是最简单的方式,可以认为它是一个无限循环(infinite loop),这也是美国苹果公司库比蒂诺(Cupertino)的一个园区,园区的名字就叫Infinite Loop。
《企业级ChatGPT开发入门实战直播21课》报名课程请联系:
Gavin老师:NLP_Matrix_Space
Sam老师:NLP_ChatGPT_LLM
我们的两本最新书籍年底即将出版:
《企业级Transformer&ChatGPT解密:原理、源码及案例》
《企业级Transformer&Rasa解密:原理、源码及案例》
《企业级Transformer&ChatGPT解密:原理、源码及案例》本书以Transformer和ChatGPT技术为主线,系统剖析了Transformer架构的理论基础、模型设计与实现,Transformer语言模型GPT与BERT,ChatGPT技术及其开源实现,以及相关应用案例。内容涉及贝叶斯数学、注意力机制、语言模型、最大似然与贝叶斯推理等理论,和Transformer架构设计、GPT、BERT、ChatGPT等模型的实现细节,以及OpenAI API、ChatGPT提示工程、类ChatGPT大模型等应用。第一卷介绍了Transformer的Bayesian Transformer思想、架构设计与源码实现,Transformer语言模型的原理与机制,GPT自回归语言模型和BERT自编码语言模型的设计与实现。第二卷深入解析ChatGPT技术,包括ChatGPT发展历史、基本原理与项目实践,OpenAI API基础与高级应用,ChatGPT提示工程与多功能应用,类ChatGPT开源大模型技术与项目实践。
ChatGPT 技术:从基础应用到进阶实践涵盖了ChatGPT技术和OpenAI API的基础和应用,分为8个章节,从ChatGPT技术概述到类ChatGPT开源大模型技术的进阶项目实践。
1. ChatGPT技术概述:主要介绍了GPT-1、GPT-2、GPT-3、GPT-3.5和GPT-4的发展历程和技术特点,以及ChatGPT技术的基本原理和项目案例实战。
2. OpenAI API基础应用实践:主要介绍了OpenAI API模型及接口概述,以及如何使用OpenAI API进行向量检索和文本生成。
3. OpenAI API进阶应用实践:主要介绍了如何使用OpenAI API基于嵌入式向量检索实现问答系统,如何使用OpenAI API对特定领域模型进行微调。
4. ChatGPT提示工程基础知识:主要介绍了如何构建优质提示的两个关键原则,以及如何迭代快速开发构建优质提示。
5. ChatGPT提示工程实现多功能应用:主要介绍了如何使用ChatGPT提示工程实现概括总结、推断任务、文本转换和扩展功能。
6. ChatGPT提示工程构建聊天机器人:主要介绍了聊天机器人的应用场景,以及如何使用ChatGPT提示工程构建聊天机器人和订餐机器人。
7. 类ChatGPT开源大模型技术概述:主要介绍了类ChatGPT开源大模型的发展历程和技术特点,以及ChatGLM项目案例实践和LMFlow项目案例实践。
8. 类ChatGPT开源大模型进阶项目实践:主要介绍了类ChatGPT开源大模型的进阶项目实践,包括基于LoRA SFT+RM+RAFT技术进行模型微调、基于P-Tuning等技术对特定领域数据进行模型微调、基于LLama Index和Langchain技术的全面实践,以及使用向量检索技术对特定领域数据进行模型微调。
本书适用于NLP工程师、AI研究人员以及对Transformer和ChatGPT技术感兴趣的读者。通过学习,读者能够系统掌握Transformer理论基础,模型设计与训练推理全过程,理解ChatGPT技术内幕,并能运用OpenAI API、ChatGPT提示工程等技术进行项目实践。
Transformer作为目前NLP领域最为主流和成功的神经网络架构,ChatGPT作为Transformer技术在对话系统中的典型应用,本书内容涵盖了该领域的最新进展与技术。通过案例实践,使理论知识变成技能,这也是本书的独特之处。
《企业级Transformer&Rasa解密:原理、源码及案例》:是一本深入介绍Rasa对话机器人框架的实战开发指南。本书分为两卷,第一卷主要介绍基于Transformer的Rasa Internals解密,详细介绍了DIETClassifier和TED在Rasa架构中的实现和源码剖析。第二卷主要介绍Rasa 3.X硬核对话机器人应用开发,介绍了基于Rasa Interactive Learning和ElasticSearch的实战案例,以及通过Rasa Interactive Learning发现和解决对话机器人的Bugs案例实战。
第一卷中介绍了Rasa智能对话机器人中的Retrieval Model和Stateful Computations,解析了Rasa中去掉对话系统的Intent的内幕,深入研究了End2End Learning,讲解了全新一代可伸缩的DAG图架构的内幕,介绍了如何定制Graph NLU及Policies组件,讨论了自定义GraphComponent的内幕,从Python角度分析了GraphComponent接口,详细解释了自定义模型的create和load内幕,并讲述了自定义模型的languages及Packages支持。深入剖析了自定义组件Persistence源码,包括自定义对话机器人组件代码示例分析、Resource源码逐行解析、以及ModelStorage、ModelMetadata等逐行解析等。介绍了自定义组件Registering源码的内幕,包括采用Decorator进行Graph Component注册内幕源码分析、不同NLU和Policies组件Registering源码解析、以及手工实现类似于Rasa注册机制的Python Decorator全流程实现。讨论了自定义组件及常见组件源码的解析,包括自定义Dense Message Featurizer和Sparse Message Featurizer源码解析、Rasa的Tokenizer及WhitespaceTokenizer源码解析、以及CountVectorsFeaturizer及SpacyFeaturizer源码解析。深入剖析了框架核心graph.py源码,包括GraphNode源码逐行解析及Testing分析、GraphModelConfiguration、ExecutionContext、GraphNodeHook源码解析以及GraphComponent源码回顾及其应用源码。
第二卷主要介绍了基于Rasa Interactive Learning和ElasticSearch的实战案例,以及通过Rasa Interactive Learning发现和解决对话机器人的Bugs案例实战。介绍了使用Rasa Interactive Learning来调试nlu和prediction的案例实战,使用Rasa Interactive Learning来发现和解决对话机器人的Bugs案例实战介绍了使用Rasa Interactive Learning透视Rasa Form的NLU和Policies的内部工作机制案例实战,使用ElasticSearch来实现对话机器人的知识库功能,并介绍了相关的源码剖析和最佳实践,介绍了Rasa微服务和ElasticSearch整合中的代码架构分析,使用Rasa Interactive Learning对ConcertBot进行源码、流程及对话过程的内幕解密,介绍了使用Rasa来实现Helpdesk Assistant功能,并介绍了如何使用Debug模式进行Bug调试,使用Rasa Interactive Learning纠正Helpdesk Assistant中的NLU和Prediction错误,逐行解密Domain和Action微服务的源码。
本书适合对Rasa有一定了解的开发人员和研究人员,希望通过本书深入了解Rasa对话机器人的内部工作原理及其源代码实现方式。无论您是想要深入了解Rasa的工作原理还是想要扩展和定制Rasa,本书都将为您提供有价值的参考和指导。
想了解更多资讯,欢迎前往ChatDZQ官网!
随时随地
掌握经营技巧
咨询热线
400-8856-200