天天看點

第1課 基于ChatGPT的端到端語音聊天機器人項目實戰-1

作者:矽谷ChatGPT和LLM中心

1.1 ChatGPT API背景開發實戰

本節主要是跟大家分享一個端到端的基于模型驅動的對話機器人,會有前端和後端,也會有一些具體模型的調用,讀者需具有Python語言程式設計的基礎,這是前置性的條件,有了這個基礎,理論上講本節所有的内容,讀者都可以掌握,這個語音聊天軟體包含三部分, Frontend是前端,Backend是背景,模型層是ChatGPT或者大型語言模型(Large Language Models),如圖1-1所示。

第1課 基于ChatGPT的端到端語音聊天機器人項目實戰-1

圖1- 1 語音聊天軟體架構圖

從生産級開發架構的角度,會使用架構耦合掉後端和具體的模型層,Framework架構可以調用後端的任何模型,包括Google的模型,也有一些開源的模型,一個很重要的來源是Hugging Face,後端呼叫API的部分往往是跟模型本身進行互動,資料的部分稱為私域資料(Private Data),私域資料跟模型訓練資料是不一樣的,它可能是企業的私有資料,也可能是企業服務于使用者的過程中,每個使用者産生的資料,這肯定是絕對的核心,每一個企業做産品的時候,使用者資料是核心的資産、價值或者競争力,因為現在很多模型都是通用的,模型本身并不能直接帶來産品價值的差異化,而擁有的資料是一個核心競争力的基礎,在架構的支援下,資料和模型進行互動,這是技術的核心。作為生産級的開發,在背景還有一個很重要的内容叫工具(Tools),它可能是第三方的API,也可能是第三方的服務,如果你是一個開發人員,所有網際網路或者計算機上的程式,可以統一稱之為Tools,提供開放的接口讓你去調用,在企業生産級的開發中,工具也是非常重要的,因為模型并不能幫你解決所有的事情,即使你有很好的資料,然後跟模型進行互動,這個互動往往是一個疊代式的過程,但模型本身依舊不能幫你解決所有的事情。

作者在多個場合,包括在矽谷的很多會議,都跟大家分享過一個觀點,就是現在的大語言模型,例如GPT4,它的核心優勢是基于你提出的指令,也稱之為提示詞(Prompt),生産具體中間執行的過程或者步驟,這是一個推理引擎(Reasoning Engine),也是大語言模型真正強大的地方,相應的,大語言模型不具備優勢的地方是,生成資訊并不是語言模型的優勢,如果從資訊的可靠性等相關的角度考慮,使用Google既是實時的,另外一方面覆寫的資訊也會更多,而且它的服務也會更豐富,如果你使用大模型去生成資訊或者生成内容,這顯然是對大模型的一種誤解或者不正确的使用。因為新一代的NLP模型基本都是基于Transformer架構,它會結合一些其他技術,但是Transformer架構是核心。GPT可能訓練了全網絕大多數的資料,在模型訓練的過程中,它改變Transformer層級性的網絡參數,低層級可能是一些比較原始的語言特性,高層級可能是一些短語級别或者句子級别的基本意識,基于它的多頭注意力機制,加上分層機制完成的效果,這跟人類習得語言的過程,或者人的注意力機制其實是一緻的。Transformer模型内部的這些參數,會基于訓練的過程而不斷調整,得到的結果是一個機率分布(Probability Distribution),從資訊的角度,大機率不能獲得一個模型來生成100%的準确資訊,從技術本身的角度,由于它産生的結果是一個機率分布,無論是一些學術研究,還是企業級的一些使用,都表明它産出的結果是不可靠的。從獲得資訊的角度,無論是實時性和準确性,Google顯然是一種更好的選擇。是以很多人使用ChatGPT或者GPT4去生成一些文本,或者基于文本去驅動一些圖檔、音視訊,這是有點誤用或者濫用了,不正确的使用了大模型的能力,因為它的結果并不可靠。作為我們的第一章,我們必須清晰化的明确使用大模型的核心是什麼?使用大模型的核心是它的推理能力,而不是它産生資訊的能力。舉一個具體的例子,例如,一個老師教一群學生,老師給學生留了一些作業,作業有具體的題目、上下文描述以及目标。不同的學生會有個人的一些資訊,如過去上了哪些課,他的成績怎麼樣,以及這一學期的表現等等,另外一方面,老師根據自己的經驗也會有一些資訊,基于這些資訊并結合大模型,如果你使用這個提示詞(Prompt),會改變每個學生具體的學習步驟。 例如,同樣1個作業,基于這個學生本身特有的資料,有些學生可能需要完成10個步驟,但有些學生可能三個步驟就可以了,在這個過程中,它是一個疊代的過程,會随着你步驟的完成情況進行調整。這是我們說的推理引擎(Reasoning Engine)以及真正正确使用大模型的方式,或者最有價值的使用大模型的方式。

在大模型作為一個推理引擎或者驅動器的過程中,正常情況下都要和第三方工具打交道,例如通過API呼叫學校的學習系統或者資訊系統,完成模型、資料和工具三者建構一個動态有序的一個系統,無論在矽谷業界,還是在研究界,這是真正做企業級ChatGDP或者LLMs大模型開發三個很重要的次元。從整體的層面,大模型本身的核心是提示詞(Prompts),很多人認為提示詞是新一代的程式設計語言,認為提示詞在不同的領域和行業将會成為最重要的一個競争力,你寫提示詞的品質,以及根據模型的回報去調整提示詞,還有對提示詞背後的認知能力,會形成新一代的技術人員或者工程師的核心競争力。在後端,所有的東西都被架構封裝,架構會和環境進行互動,架構運作在一台機器或者一個節點上面,環境可能是作業系統本身,也可能是一個虛拟的系統等等,但不管是什麼情況,其實就是一個正常的程式,架構一般會運作在一個具體的服務上,然後根據一些事件觸發相應的動作,由于它可以和環境進行互動,是以它可以調用外界網際網路的基礎設施,無論是資料層面,還是工具層面,還是在協同過程中需要人類參與層面的技術。這是整體的一個基本概況,後端和模型互動的核心在于提示詞,我們寫什麼樣的提示詞決定了程式的品質,例如,如果做一個教育系統,可能有不同的學科,比如數學、國文、實體、化學等等,借助大模型的能力去幫助學員學習或者答題,這個時候,怎麼寫提示詞肯定是非常重要的,因為提示詞如果寫得不好,它給你的可能是一個非常籠統的結果,甚至是一個完全不相幹的結果或者是錯誤的結果。什麼叫合适的提示詞?在剛才說的場景中,會有很多科目,例如數學會有很多題型,你讓它解題,如果沒有領域專家的介入,這個時候就會很麻煩。作者在矽谷為一個企業做的項目,達到的效果非常好,因為有領域專家把題型進行分類,分類之後在一些典型的題型上加上模型的泛化能力,形成了非常好的結果。但是現在假設你沒有領域專家的介入,你想讓提示詞很有效,一個非常簡單的方式就是讓這個模型展示具體的解題步驟,簡單的一句話,讓大模型展示具體的過程,就能極大地有效的提升整個模型或者應用程式的表現效果,我們的後端和模型互動的核心都在提示詞,在本章節中,提示詞會貫穿所有的内容。

前端是一個聊天程式,如圖1-2所示,基本的界面是一個對話清單,有使用者說的資訊,也會有系統響應傳回給使用者的資訊,這很容易了解,這裡顯示的是一個Web端。在本地進行測試,使用者輸入資訊,根據使用者輸入的資訊,系統會進行響應,這和微信的使用是一緻的,将錄音變成音頻,背後将音頻轉換為文字,以及進行文字和音頻轉換的過程。

第1課 基于ChatGPT的端到端語音聊天機器人項目實戰-1

圖1- 2 聊天程式前端

我們把整個基于大模型驅動的系統作為應用程式來服務于使用者,但另外一種常見的方式,是把這個系統作為一個插件(Plugins),例如,基于大模型的教育系統,如果你不想直接服務于學員,而想服務于已有的教育機構,這個時候使用插件進行封裝,就是一個非常理想的選擇,這裡面有個很重要的細節點,為什麼不直接使用API,而是采用插件的方式,背後有很多原因,架構的原因或者實際考量的因素,但一個很重要的因素,在這裡不得不提的是做插件,它相當一個封裝器,從設計模式的角度講,它是一種代理模式,背景或者是模型是你自己背後的系統,在這個地方如果做個插件的話,可以很好的融入你要服務的教育機構本身系統的行為或者私有的資料,這是關于插件的内容。業界現在有一個流行的觀點,就是基于大模型會重構所有的程式,從使用者的角度講,程式可能還是那一個程式,你作為一個開發者,想賦能不同的行業,例如在教育領域,支援不同的學校或者教育訓練機構,把後端的所有的東西封裝成插件,顯然這是一種特别理想的選擇。

《企業級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,本書都将為您提供有價值的參考和指導。

《企業級Transformer&ChatGPT解密:原理、源碼及案例》、《企業級Transformer&Rasa解密:原理、源碼及案例》,是您深入學習的好選擇,年底即将重磅出版,歡迎購買!

繼續閱讀