大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT_第1頁
大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT_第2頁
大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT_第3頁
大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT_第4頁
大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

大模型應(yīng)用開發(fā)極簡入門基于GPT-4和ChatGPT目錄\h第1章初識(shí)GPT-4和ChatGPT\h1.1LLM概述\h1.1.1探索語言模型和NLP的基礎(chǔ)\h1.1.2理解Transformer架構(gòu)及其在LLM中的作用\h1.1.3解密GPT模型的標(biāo)記化和預(yù)測步驟\h1.2GPT模型簡史:從GPT-1到GPT-4\h1.2.1GPT-1\h1.2.2GPT-2\h1.2.3GPT-3\h1.2.4從GPT-3到InstructGPT\h1.2.5GPT-3.5、Codex和ChatGPT\h1.2.6GPT-4\h1.3LLM用例和示例產(chǎn)品\h1.3.1BeMyEyes\h1.3.2摩根士丹利\h1.3.3可汗學(xué)院\h1.3.4多鄰國\h1.3.5Yabble\h1.3.6Waymark\h1.3.7InworldAI\h1.4警惕AI幻覺:限制與考慮\h1.5使用插件和微調(diào)優(yōu)化GPT模型\h1.6小結(jié)\h第2章深入了解GPT-4和ChatGPT的API\h2.1基本概念\h2.2OpenAIAPI提供的可用模型\h2.3在OpenAIPlayground中使用GPT模型\h2.4開始使用OpenAIPython庫\h2.4.1OpenAI訪問權(quán)限和API密鑰\h2.4.2HelloWorld示例程序\h2.5使用GPT-4和ChatGPT\h2.5.1\hChatCompletion\h端點(diǎn)的輸入選項(xiàng)\h2.5.2\hChatCompletion\h端點(diǎn)的輸出格式\h2.5.3從文本補(bǔ)全到函數(shù)\h2.6使用其他文本補(bǔ)全模型\h2.6.1\hCompletion\h端點(diǎn)的輸入選項(xiàng)\h2.6.2\hCompletion\h端點(diǎn)的輸出格式\h2.7考慮因素\h2.7.1定價(jià)和標(biāo)記限制\h2.7.2安全和隱私\h2.8其他OpenAIAPI和功能\h2.8.1嵌入\h2.8.2內(nèi)容審核模型\h2.8.3Whisper和DALL·E\h2.9小結(jié)(含速查清單)\h第3章使用GPT-4和ChatGPT構(gòu)建應(yīng)用程序\h3.1應(yīng)用程序開發(fā)概述\h3.1.1管理API密鑰\h3.1.2數(shù)據(jù)安全和數(shù)據(jù)隱私\h3.2軟件架構(gòu)設(shè)計(jì)原則\h3.3LLM驅(qū)動(dòng)型應(yīng)用程序的漏洞\h3.3.1分析輸入和輸出\h3.3.2無法避免提示詞注入\h3.4示例項(xiàng)目\h3.4.1項(xiàng)目1:構(gòu)建新聞稿生成器\h3.4.2項(xiàng)目2:YouTube視頻摘要\h3.4.3項(xiàng)目3:打造《塞爾達(dá)傳說:曠野之息》專家\h3.4.4項(xiàng)目4:語音控制\h3.5小結(jié)\h第4章GPT-4和ChatGPT的高級(jí)技巧\h4.1提示工程\h4.1.1設(shè)計(jì)有效的提示詞\h4.1.2逐步思考\h4.1.3實(shí)現(xiàn)少樣本學(xué)習(xí)\h4.1.4改善提示效果\h4.2微調(diào)\h4.2.1開始微調(diào)\h4.2.2使用OpenAIAPI進(jìn)行微調(diào)\h4.2.3微調(diào)的應(yīng)用\h4.2.4生成和微調(diào)電子郵件營銷活動(dòng)的合成數(shù)據(jù)\h4.2.5微調(diào)的成本\h4.3小結(jié)\h第5章使用LangChain框架和插件增強(qiáng)LLM的功能\h5.1LangChain框架\h5.1.1動(dòng)態(tài)提示詞\h5.1.2智能體及工具\(yùn)h5.1.3記憶\h5.1.4嵌入\h5.2GPT-4插件\h5.2.1概述\h5.2.2API\h5.2.3插件清單\h5.2.4OpenAPI規(guī)范\h5.2.5描述\h5.3小結(jié)\h5.4總結(jié)\h術(shù)語表

第1章初識(shí)GPT-4和ChatGPT想象這樣一個(gè)世界:在這個(gè)世界里,你可以像和朋友聊天一樣快速地與計(jì)算機(jī)交互。那會(huì)是怎樣的體驗(yàn)?你可以創(chuàng)造出什么樣的應(yīng)用程序?這正是OpenAI努力構(gòu)建的世界,它通過其GPT模型讓設(shè)備擁有與人類對(duì)話的能力。作為人工智能(artificialintelligence,AI)領(lǐng)域的最新成果,GPT-4和其他GPT模型是基于大量數(shù)據(jù)訓(xùn)練而成的大語言模型1(largelanguagemodel,LLM),它們能夠以非常高的準(zhǔn)確性識(shí)別和生成人類可讀的文本。1“大語言模型”簡稱“大模型”。在本書中,兩者的意思相同?!幷咦⑦@些AI模型的意義遠(yuǎn)超簡單的語音助手。多虧了OpenAI的模型,開發(fā)人員現(xiàn)在可以利用自然語言處理(naturallanguageprocessing,NLP)技術(shù)創(chuàng)建應(yīng)用程序,使其以一種曾經(jīng)只存在于科幻小說中的方式理解我們的需求。從學(xué)習(xí)和適應(yīng)個(gè)體需求的創(chuàng)新型客戶支持系統(tǒng),到理解每個(gè)學(xué)生獨(dú)特的學(xué)習(xí)風(fēng)格的個(gè)性化教學(xué)工具,GPT-4和ChatGPT打開了一扇門,讓人們看見一個(gè)充滿可能性的全新世界。GPT-4和ChatGPT究竟是什么?本章的目標(biāo)是深入探討這些AI模型的基礎(chǔ)、起源和關(guān)鍵特性。通過了解這些模型的基礎(chǔ)知識(shí),你將為構(gòu)建下一代以LLM驅(qū)動(dòng)的應(yīng)用程序打下堅(jiān)實(shí)的基礎(chǔ)。1.1LLM概述本節(jié)介紹塑造GPT-4和ChatGPT發(fā)展歷程的基礎(chǔ)模塊。我們旨在幫助你全面理解語言模型、NLP技術(shù)、Transformer架構(gòu)的作用,以及GPT模型中的標(biāo)記化和預(yù)測過程。1.1.1探索語言模型和NLP的基礎(chǔ)作為LLM,GPT-4和ChatGPT是NLP領(lǐng)域中最新的模型類型,NLP是機(jī)器學(xué)習(xí)和人工智能的一個(gè)子領(lǐng)域。在深入研究GPT-4和ChatGPT之前,有必要了解NLP及其相關(guān)領(lǐng)域。AI有不同的定義,但其中一個(gè)定義或多或少已成為共識(shí),即AI是一類計(jì)算機(jī)系統(tǒng),它能夠執(zhí)行通常需要人類智能才能完成的任務(wù)。根據(jù)這個(gè)定義,許多算法可以被歸為AI算法,比如導(dǎo)航應(yīng)用程序所用的交通預(yù)測算法或策略類視頻游戲所用的基于規(guī)則的系統(tǒng)。從表面上看,在這些示例中,計(jì)算機(jī)似乎需要智能才能完成相關(guān)任務(wù)。機(jī)器學(xué)習(xí)(machinelearning,ML)是AI的一個(gè)子集。在ML中,我們不試圖直接實(shí)現(xiàn)AI系統(tǒng)使用的決策規(guī)則。相反,我們?cè)噲D開發(fā)算法,使系統(tǒng)能夠通過示例自己學(xué)習(xí)。自從在20世紀(jì)50年代開始進(jìn)行ML研究以來,人們已經(jīng)在科學(xué)文獻(xiàn)中提出了許多ML算法。在這些ML算法中,深度學(xué)習(xí)(deeplearning,DL)算法已經(jīng)引起了廣泛關(guān)注。DL是ML的一個(gè)分支,專注于受大腦結(jié)構(gòu)啟發(fā)的算法。這些算法被稱為人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetwork)。它們可以處理大量的數(shù)據(jù),并且在圖像識(shí)別、語音識(shí)別及NLP等任務(wù)上表現(xiàn)出色。GPT-4和ChatGPT基于一種特定的神經(jīng)網(wǎng)絡(luò)架構(gòu),即Transformer。Transformer就像閱讀機(jī)一樣,它關(guān)注句子或段落的不同部分,以理解其上下文并產(chǎn)生連貫的回答。此外,它還可以理解句子中的單詞順序和上下文意思。這使Transformer在語言翻譯、問題回答和文本生成等任務(wù)中非常有效。圖1-1展示了以上術(shù)語之間的關(guān)系。圖1-1:從AI到Transformer的嵌套技術(shù)集合NLP是AI的一個(gè)子領(lǐng)域,專注于使計(jì)算機(jī)能夠處理、解釋和生成人類語言。現(xiàn)代NLP解決方案基于ML算法。NLP的目標(biāo)是讓計(jì)算機(jī)能夠處理自然語言文本。這個(gè)目標(biāo)涉及諸多任務(wù),如下所述。文本分類將輸入文本歸為預(yù)定義的類別。這類任務(wù)包括情感分析和主題分類。比如,某公司使用情感分析來了解客戶對(duì)其服務(wù)的意見。電子郵件過濾是主題分類的一個(gè)例子,其中電子郵件可以被歸類為“個(gè)人郵件”“社交郵件”“促銷郵件”“垃圾郵件”等。自動(dòng)翻譯將文本從一種語言自動(dòng)翻譯成另一種語言。請(qǐng)注意,這類任務(wù)可以包括將代碼從一種程序設(shè)計(jì)語言翻譯成另一種程序設(shè)計(jì)語言,比如從Python翻譯成C++。問題回答根據(jù)給定的文本回答問題。比如,在線客服門戶網(wǎng)站可以使用NLP模型回答關(guān)于產(chǎn)品的常見問題;教學(xué)軟件可以使用NLP模型回答學(xué)生關(guān)于所學(xué)主題的問題。文本生成根據(jù)給定的輸入文本(稱為提示詞2)生成連貫且相關(guān)的輸出文本。2對(duì)于prompt一詞,本書統(tǒng)一采用“提示詞”這個(gè)譯法,以符合業(yè)內(nèi)慣例。不過,prompt既可以是一個(gè)詞,也可以是一個(gè)或多個(gè)句子。對(duì)于promptengineering,本書采用“提示工程”這個(gè)譯法?!g者注如前所述,LLM是試圖完成文本生成任務(wù)的一類ML模型。LLM使計(jì)算機(jī)能夠處理、解釋和生成人類語言,從而提高人機(jī)交互效率。為了做到這一點(diǎn),LLM會(huì)分析大量文本數(shù)據(jù)或基于這些數(shù)據(jù)進(jìn)行訓(xùn)練,從而學(xué)習(xí)句子中各詞之間的模式和關(guān)系。這個(gè)學(xué)習(xí)過程可以使用各種數(shù)據(jù)源,包括維基百科、Reddit、成千上萬本書,甚至互聯(lián)網(wǎng)本身。在給定輸入文本的情況下,這個(gè)學(xué)習(xí)過程使得LLM能夠預(yù)測最有可能出現(xiàn)的后續(xù)單詞,從而生成對(duì)輸入文本有意義的回應(yīng)。于2023年發(fā)布的一些現(xiàn)代語言模型非常龐大,并且已經(jīng)在大量文本上進(jìn)行了訓(xùn)練,因此它們可以直接執(zhí)行大多數(shù)NLP任務(wù),如文本分類、自動(dòng)翻譯、問題回答等。GPT-4和ChatGPT是在文本生成任務(wù)上表現(xiàn)出色的LLM。LLM的發(fā)展可以追溯到幾年前。它始于簡單的語言模型,如n-gram模型。n-gram模型通過使用詞頻來根據(jù)前面的詞預(yù)測句子中的下一個(gè)詞,其預(yù)測結(jié)果是在訓(xùn)練文本中緊隨前面的詞出現(xiàn)的頻率最高的詞。雖然這種方法提供了不錯(cuò)的著手點(diǎn),但是n-gram模型在理解上下文和語法方面仍需改進(jìn),因?yàn)樗袝r(shí)會(huì)生成不連貫的文本。為了提高n-gram模型的性能,人們引入了更先進(jìn)的學(xué)習(xí)算法,包括循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrentneuralnetwork,RNN)和長短期記憶(longshort-termmemory,LSTM)網(wǎng)絡(luò)。與n-gram模型相比,這些模型能夠?qū)W習(xí)更長的序列,并且能夠更好地分析上下文,但它們?cè)谔幚泶罅繑?shù)據(jù)時(shí)的效率仍然欠佳。盡管如此,在很長的一段時(shí)間里,這些模型算是最高效的,因此在自動(dòng)翻譯等任務(wù)中被廣泛使用。1.1.2理解Transformer架構(gòu)及其在LLM中的作用Transformer架構(gòu)徹底改變了NLP領(lǐng)域,這主要是因?yàn)樗軌蛴行У亟鉀Q之前的NLP模型(如RNN)存在的一個(gè)關(guān)鍵問題:很難處理長文本序列并記住其上下文。換句話說,RNN在處理長文本序列時(shí)容易忘記上下文(也就是臭名昭著的“災(zāi)難性遺忘問題”),Transformer則具備高效處理和編碼上下文的能力。這場革命的核心支柱是注意力機(jī)制,這是一個(gè)簡單而又強(qiáng)大的機(jī)制。模型不再將文本序列中的所有詞視為同等重要,而是在任務(wù)的每個(gè)步驟中關(guān)注最相關(guān)的詞。交叉注意力和自注意力是基于注意力機(jī)制的兩個(gè)架構(gòu)模塊,它們經(jīng)常出現(xiàn)在LLM中。Transformer架構(gòu)廣泛使用了交叉注意力模塊和自注意力模塊。交叉注意力有助于模型確定輸入文本的不同部分與輸出文本中下一個(gè)詞的相關(guān)性。它就像一盞聚光燈,照亮輸入文本中的詞或短語,并突出顯示預(yù)測下一個(gè)詞所需的相關(guān)信息,同時(shí)忽略不重要的細(xì)節(jié)。為了說明這一點(diǎn),讓我們以一個(gè)簡單的句子翻譯任務(wù)為例。假設(shè)輸入文本是這樣一個(gè)英語句子:AliceenjoyedthesunnyweatherinBrussels(Alice很享受布魯塞爾陽光明媚的天氣)。如果目標(biāo)語言是法語,那么輸出文本應(yīng)該是:AliceaprofitédutempsensoleilléàBruxelles。在這個(gè)例子中,讓我們專注于生成法語單詞ensoleillé,它對(duì)應(yīng)原句中的sunny。對(duì)于這個(gè)預(yù)測任務(wù),交叉注意力模塊會(huì)更關(guān)注英語單詞sunny和weather,因?yàn)樗鼈兌寂censoleillé相關(guān)。通過關(guān)注這兩個(gè)單詞,交叉注意力模塊有助于模型為句子的這一部分生成準(zhǔn)確的翻譯結(jié)果,如圖1-2所示。圖1-2:交叉注意力模塊使模型關(guān)注輸入文本(英語句子)中的關(guān)鍵部分,以預(yù)測輸出文本(法語句子)中的下一個(gè)單詞自注意力機(jī)制是指模型能夠關(guān)注其輸入文本的不同部分。具體到NLP領(lǐng)域,自注意力機(jī)制使模型能夠評(píng)估句子中的每個(gè)詞相比于其他詞的重要性。這使得模型能夠更好地理解各詞之間的關(guān)系,并根據(jù)輸入文本中的多個(gè)詞構(gòu)建新概念。來看一個(gè)更具體的例子。考慮以下句子:Alicereceivedpraisefromhercolleagues(Alice受到同事的贊揚(yáng))。假設(shè)模型試圖理解her這個(gè)單詞的意思。自注意力機(jī)制給句子中的每個(gè)單詞分配不同的權(quán)重,突出在這個(gè)上下文中與her相關(guān)的單詞。在本例中,自注意力機(jī)制會(huì)更關(guān)注Alice和colleagues這兩個(gè)單詞。如前所述,自注意力機(jī)制幫助模型根據(jù)這些單詞構(gòu)建新概念。在本例中,可能出現(xiàn)的一個(gè)新概念是Alice'scolleagues,如圖1-3所示。圖1-3:自注意力機(jī)制使新概念A(yù)lice'scolleagues得以出現(xiàn)與RNN不同,Transformer架構(gòu)具有易于并行化的優(yōu)勢。這意味著Transformer架構(gòu)可以同時(shí)處理輸入文本的多個(gè)部分,而無須順序處理。這樣做可以提高計(jì)算速度和訓(xùn)練速度,因?yàn)槟P偷牟煌糠挚梢圆⑿泄ぷ?,而無須等待前一步驟完成?;赥ransformer架構(gòu)的模型所具備的并行處理能力與圖形處理單元(graphicsprocessingunit,GPU)的架構(gòu)完美契合,后者專用于同時(shí)處理多個(gè)計(jì)算任務(wù)。由于高度的并行性和強(qiáng)大的計(jì)算能力,GPU非常適合用于訓(xùn)練和運(yùn)行基于Transformer架構(gòu)的模型。硬件上的這一進(jìn)展使數(shù)據(jù)科學(xué)家能夠在大型數(shù)據(jù)集上訓(xùn)練模型,從而為開發(fā)LLM鋪平了道路。Transformer架構(gòu)由來自谷歌公司的AshishVaswani等人在2017年的論文“AttentionIsAllYouNeed”中提出,最初用于序列到序列的任務(wù),如機(jī)器翻譯任務(wù)。標(biāo)準(zhǔn)的Transformer架構(gòu)有兩個(gè)主要組件:編碼器和解碼器,兩者都十分依賴注意力機(jī)制。編碼器的任務(wù)是處理輸入文本,識(shí)別有價(jià)值的特征,并生成有意義的文本表示,稱為嵌入(embedding)。解碼器使用這個(gè)嵌入來生成一個(gè)輸出,比如翻譯結(jié)果或摘要文本。這個(gè)輸出有效地解釋了編碼信息。生成式預(yù)訓(xùn)練Transformer(GenerativePre-trainedTransformer,GPT)是一類基于Transformer架構(gòu)的模型,專門利用原始架構(gòu)中的解碼器部分。在GPT中,不存在編碼器,因此無須通過交叉注意力機(jī)制來整合編碼器產(chǎn)生的嵌入。也就是說,GPT僅依賴解碼器內(nèi)部的自注意力機(jī)制來生成上下文感知的表示和預(yù)測結(jié)果。請(qǐng)注意,BERT等其他一些眾所周知的模型基于編碼器部分,但本書不涉及這類模型。圖1-4展示了NLP技術(shù)的演變歷程。圖1-4:NLP技術(shù)從n-gram到LLM的演變1.1.3解密GPT模型的標(biāo)記化和預(yù)測步驟GPT模型接收一段提示詞作為輸入,然后生成一段文本作為輸出。這個(gè)過程被稱為文本補(bǔ)全。舉例來說,提示詞可以是Theweatherisnicetoday,soIdecidedto(今天天氣很好,所以我決定),模型的輸出則可能是goforawalk(去散步)。你可能想知道GPT模型是如何根據(jù)輸入的提示詞構(gòu)建輸出文本的。正如你將看到的,這主要是一個(gè)概率問題。當(dāng)GPT模型收到一段提示詞之后,它首先將輸入拆分成標(biāo)記(token)。這些標(biāo)記代表單詞、單詞的一部分、空格或標(biāo)點(diǎn)符號(hào)。比如,在前面的例子中,提示詞可以被拆分成[The,wea,ther,is,nice,today,,,so,I,de,ci,ded,to]。幾乎每個(gè)語言模型都配有自己的分詞器。截至本書英文版出版之時(shí),GPT-4的分詞器還不可用3,不過你可以嘗試使用GPT-3的分詞器。3現(xiàn)在,OpenAI已在其網(wǎng)站上提供了GPT-4的分詞器?!g者注理解標(biāo)記與詞長的一條經(jīng)驗(yàn)法則是,對(duì)于英語文本,100個(gè)標(biāo)記大約等于75個(gè)單詞。因?yàn)橛辛俗⒁饬C(jī)制和Transformer架構(gòu),LLM能夠輕松處理標(biāo)記并解釋它們之間的關(guān)系及提示詞的整體含義。Transformer架構(gòu)使模型能夠高效地識(shí)別文本中的關(guān)鍵信息和上下文。為了生成新的句子,LLM根據(jù)提示詞的上下文預(yù)測最有可能出現(xiàn)的下一個(gè)標(biāo)記。OpenAI開發(fā)了兩個(gè)版本的GPT-4,上下文窗口大小分別為8192個(gè)標(biāo)記和32768個(gè)標(biāo)記4。與之前的循環(huán)模型不同,帶有注意力機(jī)制的Transformer架構(gòu)使得LLM能夠?qū)⑸舷挛淖鳛橐粋€(gè)整體來考慮?;谶@個(gè)上下文,模型為每個(gè)潛在的后續(xù)標(biāo)記分配一個(gè)概率分?jǐn)?shù),然后選擇概率最高的標(biāo)記作為序列中的下一個(gè)標(biāo)記。在前面的例子中,“今天天氣很好,所以我決定”之后,下一個(gè)最佳標(biāo)記可能是“去”。4請(qǐng)注意,本書中的譯者注的添加時(shí)間為2023年11月19日~2023年12月2日,在此統(tǒng)一說明,后續(xù)不再逐一詳細(xì)說明。截至2023年11月下旬,OpenAI已提供6個(gè)GPT-4模型,包括gpt-4-1106-preview、gpt-4-vision-preview、gpt-4、gpt-4-32k、gpt-4-0613、gpt-4-32k-0613,其中g(shù)pt-4-1106-preview的上下文窗口已增加至16385個(gè)標(biāo)記。——譯者注接下來重復(fù)此過程,但現(xiàn)在上下文變?yōu)椤敖裉焯鞖夂芎茫晕覜Q定去”,之前預(yù)測的標(biāo)記“去”被添加到原始提示詞中。這個(gè)過程會(huì)一直重復(fù),直到形成一個(gè)完整的句子:“今天天氣很好,所以我決定去散步?!边@個(gè)過程依賴于LLM學(xué)習(xí)從大量文本數(shù)據(jù)中預(yù)測下一個(gè)最有可能出現(xiàn)的單詞的能力。圖1-5展示了這個(gè)過程。圖1-5:逐個(gè)標(biāo)記地補(bǔ)全文本,整個(gè)過程是迭代式的1.2GPT模型簡史:從GPT-1到GPT-4本節(jié)將回顧OpenAI的GPT模型從GPT-1到GPT-4的演變歷程。1.2.1GPT-12018年年中,就在Transformer架構(gòu)誕生一年后,OpenAI發(fā)表了一篇題為“ImprovingLanguageUnderstandingbyGenerativePre-Training”的論文,作者是AlecRadford等人。這篇論文介紹了GPT,也被稱為GPT-1。在GPT-1出現(xiàn)之前,構(gòu)建高性能NLP神經(jīng)網(wǎng)絡(luò)的常用方法是利用監(jiān)督學(xué)習(xí)。這種學(xué)習(xí)技術(shù)使用大量的手動(dòng)標(biāo)記數(shù)據(jù)。以情感分析任務(wù)為例,目標(biāo)是對(duì)給定的文本進(jìn)行分類,判斷其情感是積極的還是消極的。一種常見的策略是收集數(shù)千個(gè)手動(dòng)標(biāo)記的文本示例來構(gòu)建有效的分類模型。然而,這需要有大量標(biāo)記良好的監(jiān)督數(shù)據(jù)。這一需求限制了監(jiān)督學(xué)習(xí)的性能,因?yàn)橐蛇@樣的數(shù)據(jù)集,難度很大且成本高昂。在論文中,GPT-1的作者提出了一種新的學(xué)習(xí)過程,其中引入了無監(jiān)督的預(yù)訓(xùn)練步驟。這個(gè)預(yù)訓(xùn)練步驟不需要標(biāo)記數(shù)據(jù)。相反,他們訓(xùn)練模型來預(yù)測下一個(gè)標(biāo)記。由于采用了可以并行化的Transformer架構(gòu),預(yù)訓(xùn)練步驟是在大量數(shù)據(jù)上進(jìn)行的。對(duì)于預(yù)訓(xùn)練,GPT-1模型使用了BookCorpus數(shù)據(jù)集。該數(shù)據(jù)集包含約11000本未出版圖書的文本。BookCorpus最初由YukunZhu等人在2015年的論文“AligningBooksandMovies:TowardsStory-likeVisualExplanationsbyWatchingMoviesandReadingBooks”中給出,并通過多倫多大學(xué)的網(wǎng)頁提供。然而,原始數(shù)據(jù)集的正式版本如今已不能公開訪問。人們發(fā)現(xiàn),GPT-1在各種基本的文本補(bǔ)全任務(wù)中是有效的。在無監(jiān)督學(xué)習(xí)階段,該模型學(xué)習(xí)BookCorpus數(shù)據(jù)集并預(yù)測文本中的下一個(gè)詞。然而,GPT-1是小模型,它無法在不經(jīng)過微調(diào)的情況下執(zhí)行復(fù)雜任務(wù)。因此,人們將微調(diào)作為第二個(gè)監(jiān)督學(xué)習(xí)步驟,讓模型在一小部分手動(dòng)標(biāo)記的數(shù)據(jù)上進(jìn)行微調(diào),從而適應(yīng)特定的目標(biāo)任務(wù)。比如,在情感分析等分類任務(wù)中,可能需要在一小部分手動(dòng)標(biāo)記的文本示例上重新訓(xùn)練模型,以使其達(dá)到不錯(cuò)的準(zhǔn)確度。這個(gè)過程使模型在初始的預(yù)訓(xùn)練階段習(xí)得的參數(shù)得到修改,從而更好地適應(yīng)具體的任務(wù)。盡管規(guī)模相對(duì)較小,但GPT-1在僅用少量手動(dòng)標(biāo)記的數(shù)據(jù)進(jìn)行微調(diào)后,能夠出色地完成多個(gè)NLP任務(wù)。GPT-1的架構(gòu)包括一個(gè)解碼器(與原始Transformer架構(gòu)中的解碼器類似),具有1.17億個(gè)參數(shù)。作為首個(gè)GPT模型,它為更強(qiáng)大的模型鋪平了道路。后續(xù)的GPT模型使用更大的數(shù)據(jù)集和更多的參數(shù),更好地利用了Transformer架構(gòu)的潛力。1.2.2GPT-22019年初,OpenAI提出了GPT-2。這是GPT-1的一個(gè)擴(kuò)展版本,其參數(shù)量和訓(xùn)練數(shù)據(jù)集的規(guī)模大約是GPT-1的10倍。這個(gè)新版本的參數(shù)量為15億,訓(xùn)練文本為40GB。2019年11月,OpenAI發(fā)布了完整版的GPT-2模型。GPT-2是公開可用的,可以從HuggingFace或GitHub下載。GPT-2表明,使用更大的數(shù)據(jù)集訓(xùn)練更大的語言模型可以提高語言模型的任務(wù)處理能力,并使其在許多任務(wù)中超越已有模型。它還表明,更大的語言模型能夠更好地處理自然語言。1.2.3GPT-32020年6月,OpenAI發(fā)布了GPT-3。GPT-2和GPT-3之間的主要區(qū)別在于模型的大小和用于訓(xùn)練的數(shù)據(jù)量。GPT-3比GPT-2大得多,它有1750億個(gè)參數(shù),這使其能夠捕捉更復(fù)雜的模式。此外,GPT-3是在更廣泛的數(shù)據(jù)集上進(jìn)行訓(xùn)練的。這包括CommonCrawl(它就像互聯(lián)網(wǎng)檔案館,其中包含來自數(shù)十億個(gè)網(wǎng)頁的文本)和維基百科。這個(gè)訓(xùn)練數(shù)據(jù)集包括來自網(wǎng)站、書籍和文章的內(nèi)容,使得GPT-3能夠更深入地理解語言和上下文。因此,GPT-3在各種語言相關(guān)任務(wù)中都展示出更強(qiáng)的性能。此外,它在文本生成方面還展示出更強(qiáng)的連貫性和創(chuàng)造力。它甚至能夠編寫代碼片段,如SQL查詢,并執(zhí)行其他智能任務(wù)。此外,GPT-3取消了微調(diào)步驟,而這在之前的GPT模型中是必需的。然而,GPT-3存在一個(gè)問題,即最終用戶提供的任務(wù)與模型在訓(xùn)練過程中所見到的任務(wù)不一致。我們已經(jīng)知道,語言模型根據(jù)輸入文本的上下文來預(yù)測下一個(gè)標(biāo)記。這個(gè)訓(xùn)練過程不一定與最終用戶希望模型執(zhí)行的任務(wù)一致。此外,增大語言模型的規(guī)模并不能從根本上使其更好地遵循用戶的意圖或指令。像GPT-3這樣的模型是在互聯(lián)網(wǎng)數(shù)據(jù)上進(jìn)行訓(xùn)練的。盡管數(shù)據(jù)源經(jīng)過一定的篩選,但用于訓(xùn)練模型的數(shù)據(jù)仍然可能包含虛假信息或有問題的文本,比如涉及種族歧視、性別歧視等。因此,模型有時(shí)可能說錯(cuò)話,甚至說出有害的話。2021年,OpenAI發(fā)布了GPT-3模型的新版本,并取名為InstructGPT。與原始的GPT-3基礎(chǔ)模型不同,InstructGPT模型通過強(qiáng)化學(xué)習(xí)和人類反饋進(jìn)行優(yōu)化。這意味著InstructGPT模型利用反饋來學(xué)習(xí)和不斷改進(jìn)。這使得模型能夠從人類指令中學(xué)習(xí),同時(shí)使其真實(shí)性更大、傷害性更小。為了說明區(qū)別,我們輸入以下提示詞:“解釋什么是時(shí)間復(fù)雜度。”兩個(gè)模型給出的回答如下所述。標(biāo)準(zhǔn)的GPT-3模型給出的回答是:“解釋什么是空間復(fù)雜度。解釋什么是大O記法。”InstructGPT模型給出的回答是:“時(shí)間復(fù)雜度用于衡量算法運(yùn)行和完成任務(wù)所需的時(shí)間,通常采用大O記法表示。它以操作次數(shù)來衡量算法的復(fù)雜度。算法的時(shí)間復(fù)雜度至關(guān)重要,因?yàn)樗鼪Q定了算法的效率和對(duì)更大輸入的擴(kuò)展能力?!蔽覀兛梢钥吹?,對(duì)于相同的輸入,第一個(gè)模型無法回答問題(它給出的回答甚至很奇怪),而第二個(gè)模型可以回答問題。當(dāng)然,使用標(biāo)準(zhǔn)的GPT-3模型也能夠得到所需的回答,但需要應(yīng)用特定的提示詞設(shè)計(jì)和優(yōu)化技術(shù)。這種技術(shù)被稱為提示工程(promptengineering),后文將詳細(xì)介紹。1.2.4從GPT-3到InstructGPT在題為“TrainingLanguageModelstoFollowInstructionswithHumanFeedback”的論文中,OpenAI的歐陽龍等人解釋了InstructGPT是如何構(gòu)建的。從GPT-3模型到InstructGPT模型的訓(xùn)練過程主要有兩個(gè)階段:監(jiān)督微調(diào)(supervisedfine-tuning,SFT)和通過人類反饋進(jìn)行強(qiáng)化學(xué)習(xí)(reinforcementlearningfromhumanfeedback,RLHF)。每個(gè)階段都會(huì)針對(duì)前一階段的結(jié)果進(jìn)行微調(diào)。也就是說,SFT階段接收GPT-3模型并返回一個(gè)新模型。RLHF階段接收該模型并返回InstructGPT版本。根據(jù)OpenAI的論文,我們重新繪制了一張流程圖,如圖1-6所示。我們來逐一探討每個(gè)階段。在SFT階段中,原始的GPT-3模型通過監(jiān)督學(xué)習(xí)進(jìn)行微調(diào)(圖1-6中的步驟1)。OpenAI擁有一系列由最終用戶創(chuàng)建的提示詞。首先,從可用的提示詞數(shù)據(jù)集中隨機(jī)抽樣。然后,要求一個(gè)人(稱為標(biāo)注員)編寫一個(gè)示例來演示理想的回答。重復(fù)這個(gè)過程數(shù)千次,以獲得一個(gè)由提示詞和相應(yīng)的理想回答組成的監(jiān)督訓(xùn)練數(shù)據(jù)集。最后,使用該數(shù)據(jù)集微調(diào)GPT-3模型,以針對(duì)用戶的提問提供更一致的回答。此時(shí)得到的模型稱為SFT模型。圖1-6:獲取InstructGPT模型的步驟(根據(jù)歐陽龍等人的圖片重新繪制)RLHF階段分為兩個(gè)子步驟:首先訓(xùn)練獎(jiǎng)勵(lì)模型(圖1-6中的步驟2),然后使用獎(jiǎng)勵(lì)模型進(jìn)行強(qiáng)化學(xué)習(xí)(圖1-6中的步驟3)。獎(jiǎng)勵(lì)模型的目標(biāo)是自動(dòng)為回答給出分?jǐn)?shù)。當(dāng)回答與提示詞中的內(nèi)容匹配時(shí),獎(jiǎng)勵(lì)分?jǐn)?shù)應(yīng)該很高;當(dāng)回答與提示詞中的內(nèi)容不匹配時(shí),獎(jiǎng)勵(lì)分?jǐn)?shù)應(yīng)該很低。為了訓(xùn)練獎(jiǎng)勵(lì)模型,OpenAI首先隨機(jī)選擇一個(gè)問題,并使用SFT模型生成幾個(gè)可能的答案。我們稍后將看到,通過一個(gè)叫作溫度(temperature)的參數(shù),可以針對(duì)同一輸入生成許多回答。然后,要求標(biāo)注員根據(jù)與提示詞的匹配程度和有害程度等標(biāo)準(zhǔn)給這些回答排序。在多次重復(fù)此過程后,使用數(shù)據(jù)集微調(diào)SFT模型以進(jìn)行評(píng)分。這個(gè)獎(jiǎng)勵(lì)模型將用于構(gòu)建最終的InstructGPT模型。訓(xùn)練InstructGPT模型的最后一步是強(qiáng)化學(xué)習(xí),這是一個(gè)迭代的過程。它從一個(gè)初始的生成式模型開始,比如SFT模型。然后隨機(jī)選擇一個(gè)提示詞,讓模型給出預(yù)測結(jié)果,由獎(jiǎng)勵(lì)模型來評(píng)估結(jié)果。根據(jù)得到的獎(jiǎng)勵(lì)分?jǐn)?shù),相應(yīng)地更新生成式模型。這個(gè)過程可以在無須人工干預(yù)的情況下重復(fù)無數(shù)次,從而自動(dòng)、高效地提高模型的性能。與基礎(chǔ)的GPT-3模型相比,InstructGPT模型能夠針對(duì)用戶的提問生成更準(zhǔn)確的內(nèi)容。OpenAI建議使用InstructGPT模型,而非原始版本。1.2.5GPT-3.5、Codex和ChatGPT2022年3月,OpenAI發(fā)布了GPT-3的新版本。新模型可以編輯文本或向文本中插入內(nèi)容。它們所用的訓(xùn)練數(shù)據(jù)截至2021年6月,OpenAI稱它們比先前的版本更強(qiáng)大。2022年11月底,OpenAI正式稱這些模型為GPT-3.5模型。OpenAI還提出了Codex模型,這是一個(gè)在數(shù)十億行代碼上進(jìn)行了微調(diào)的GPT-3模型。正是它給GitHubCopilot這款自動(dòng)化編程工具賦予了強(qiáng)大的能力,為使用VisualStudioCode、JetBrains甚至Neovim等許多文本編輯器的開發(fā)人員提供了幫助。然而,Codex模型在2023年3月被OpenAI棄用。相反,OpenAI建議用戶從Codex切換到GPT-3.5Turbo或GPT-4。與此同時(shí),GitHub發(fā)布了基于GPT-4的CopilotX版本,其功能比之前的版本多得多。OpenAI對(duì)Codex模型的棄用提醒我們,使用應(yīng)用程序接口存在固有風(fēng)險(xiǎn):隨著更高效的模型的開發(fā)和發(fā)布,它們可能會(huì)發(fā)生變化,甚至被停用。2022年11月,OpenAI推出了ChatGPT,并將其作為一種實(shí)驗(yàn)性的對(duì)話式模型。該模型經(jīng)過了微調(diào),采用圖1-6所示的類似技術(shù),在交互式對(duì)話中表現(xiàn)出色。ChatGPT源自GPT-3.5系列,該系列為其開發(fā)奠定了基礎(chǔ)??梢哉f,ChatGPT是由LLM驅(qū)動(dòng)的應(yīng)用程序,而不是真正的LLM。ChatGPT背后的LLM是GPT-3.5Turbo。然而,OpenAI在發(fā)布說明中將ChatGPT稱為“模型”。在本書中,除非操作代碼,否則我們將ChatGPT用作通用術(shù)語,既指應(yīng)用程序又指模型。在特指模型時(shí),我們使用gpt-3.5-turbo。1.2.6GPT-42023年3月,OpenAI發(fā)布了GPT-4。關(guān)于這個(gè)新模型的架構(gòu),我們知之甚少,因?yàn)镺penAI提供的信息很少。這是OpenAI迄今為止最先進(jìn)的系統(tǒng),應(yīng)該能夠針對(duì)用戶的提問生成更安全、更有用的回答。OpenAI聲稱,GPT-4在高級(jí)推理能力方面超越了ChatGPT。與OpenAIGPT家族中的其他模型不同,GPT-4是第一個(gè)能夠同時(shí)接收文本和圖像的多模態(tài)模型。這意味著GPT-4在生成輸出句子時(shí)會(huì)考慮圖像和文本的上下文。這樣一來,用戶就可以將圖像添加到提示詞中并對(duì)其提問。GPT-4經(jīng)過了各種測試,它在測試中的表現(xiàn)優(yōu)于ChatGPT。比如,在美國統(tǒng)一律師資格考試中,ChatGPT的得分位于第10百分位,而GPT-4的得分位于第90百分位。國際生物學(xué)奧林匹克競賽的結(jié)果也類似,ChatGPT的得分位于第31百分位,GPT-4的得分則位于第99百分位。這個(gè)進(jìn)展令人印象深刻,尤其考慮到它是在不到一年的時(shí)間內(nèi)取得的。表1-1總結(jié)了GPT模型的演變歷程。表1-1:GPT模型的演變歷程年份進(jìn)展2017AshishVaswani等人發(fā)表論文“AttentionIsAllYouNeed”2018第一個(gè)GPT模型誕生,參數(shù)量為1.17億2019GPT-2模型發(fā)布,參數(shù)量為15億2020GPT-3模型發(fā)布,參數(shù)量為1750億2022GPT-3.5(ChatGPT)模型發(fā)布,參數(shù)量為1750億2023GPT-4模型發(fā)布,但具體的參數(shù)量未公開你可能聽說過基礎(chǔ)模型這個(gè)術(shù)語。雖然像GPT這樣的LLM被訓(xùn)練用于處理人類語言,但基礎(chǔ)模型其實(shí)是一個(gè)更寬泛的概念。這類模型在訓(xùn)練時(shí)采用多種類型的數(shù)據(jù)(不僅限于文本),并且可以針對(duì)各種任務(wù)進(jìn)行微調(diào),包括但不限于NLP任務(wù)。所有的LLM都是基礎(chǔ)模型,但并非所有的基礎(chǔ)模型都是LLM。1.3LLM用例和示例產(chǎn)品OpenAI在其網(wǎng)站上展示了許多激勵(lì)人心的客戶故事,本節(jié)探討其中的一些應(yīng)用、用例和示例產(chǎn)品。我們將了解這些模型如何改變我們的社會(huì)并為商業(yè)和創(chuàng)造力開辟新機(jī)遇。正如你將看到的,許多企業(yè)已經(jīng)開始使用這些新技術(shù),但還有更多創(chuàng)意空間等待你去探索。1.3.1BeMyEyes自2012年起,BeMyEyes已通過技術(shù)為數(shù)百萬視障人士提供了幫助。它的應(yīng)用程序是志愿者與需要幫助的視障人士之間的紐帶,使視障人士在日常生活中得到幫助,比如識(shí)別產(chǎn)品或在機(jī)場導(dǎo)航。只需在應(yīng)用程序中點(diǎn)擊一次,需要幫助的視障人士即可聯(lián)系到一位志愿者,后者通過視頻和麥克風(fēng)提供幫助。GPT-4的多模態(tài)能力使得它能夠處理文本和圖像。BeMyEyes開始基于GPT-4開發(fā)新的虛擬志愿者。這個(gè)虛擬志愿者旨在達(dá)到與人類志愿者相當(dāng)?shù)睦斫馑胶蛶椭芰?。BeMyEyes的首席執(zhí)行官M(fèi)ichaelBuckley表示:“全球可達(dá)性的影響深遠(yuǎn)。在不久的將來,視障人士不僅將利用這些工具滿足各種視覺解釋需求,還將在生活中獲得更強(qiáng)的獨(dú)立能力?!痹谖覀冏珜懕緯畷r(shí),虛擬志愿者仍處于測試階段5。要獲得訪問權(quán)限,你必須在應(yīng)用程序中注冊(cè)并加入等候名單。不過,來自測試用戶的初步反饋非常不錯(cuò)。5截至2023年11月下旬,BeMyEyes已完全開放了iOS端和Android端的App下載?!g者注1.3.2摩根士丹利摩根士丹利是一家總部位于美國的跨國投資銀行和金融服務(wù)公司。作為財(cái)富管理領(lǐng)域的領(lǐng)頭羊,摩根士丹利擁有數(shù)十萬頁的知識(shí)和見解內(nèi)容庫,涵蓋投資策略、市場研究與評(píng)論,以及分析師意見。這些海量信息分散在多個(gè)內(nèi)部網(wǎng)站上,其文件格式主要是PDF。這意味著顧問必須搜索大量文檔才能找到他們想要的答案??梢韵胂螅阉鬟^程既漫長又乏味。摩根士丹利評(píng)估了如何利用其知識(shí)資本與GPT的研究能力。由公司內(nèi)部開發(fā)的模型將驅(qū)動(dòng)一個(gè)聊天機(jī)器人,對(duì)財(cái)富管理內(nèi)容進(jìn)行全面搜索,并高效地解鎖摩根士丹利積累的知識(shí)。通過這種方式,GPT-4提供了一種更易使用的格式來分析所有相關(guān)信息。1.3.3可汗學(xué)院可汗學(xué)院是一家總部位于美國的非營利教育組織,由SalKhan于2008年創(chuàng)立??珊箤W(xué)院致力于提供一套免費(fèi)的在線工具,幫助全球?qū)W生接受教育。該組織為各個(gè)年齡段的學(xué)生提供數(shù)千門課程,涵蓋數(shù)學(xué)、自然科學(xué)和社會(huì)學(xué)。此外,該組織通過視頻和博客制作短課程,并于最近開始提供Khanmigo。Khanmigo是由GPT-4驅(qū)動(dòng)的新型AI助手。Khanmigo可以為學(xué)生做很多事情,比如引導(dǎo)和鼓勵(lì)他們,提問并幫助他們準(zhǔn)備考試。Khanmigo旨在成為對(duì)用戶友好的聊天機(jī)器人,幫助學(xué)生完成課堂作業(yè)。它不會(huì)直接給出答案,而會(huì)引導(dǎo)學(xué)生進(jìn)行學(xué)習(xí)。除了幫助學(xué)生,Khanmigo還可以幫助教師準(zhǔn)備教案、完成行政任務(wù)和制作教材等。可汗學(xué)院的首席學(xué)習(xí)官KristenDiCerbo說道:“我們認(rèn)為GPT-4正在教育領(lǐng)域開辟新的前沿。它是很多人長期以來夢寐以求的技術(shù)。它具有變革性,我們計(jì)劃負(fù)責(zé)任地對(duì)它進(jìn)行測試,以探索它能否有效地用于學(xué)習(xí)和教學(xué)。”在我們撰寫本書之時(shí),Khanmigo試點(diǎn)計(jì)劃僅面向特定人員開放。要參與該計(jì)劃,你必須申請(qǐng)加入等候名單6。6Khanmigo現(xiàn)已開放注冊(cè)?!g者注1.3.4多鄰國多鄰國(Duolingo)是一家總部位于美國的教育科技公司,成立于2011年,其用于學(xué)習(xí)第二語言的應(yīng)用程序擁有數(shù)百萬用戶。多鄰國用戶需要理解語法規(guī)則以學(xué)習(xí)一門語言的基礎(chǔ)知識(shí)。他們需要進(jìn)行對(duì)話,最好是與母語為該語言的人進(jìn)行對(duì)話,以理解這些語法規(guī)則并掌握該語言。這并非對(duì)所有人來說都是易事。多鄰國已經(jīng)使用GPT-4為其產(chǎn)品添加了兩個(gè)新功能:“角色扮演”和“解釋我的答案”。這兩個(gè)功能在名為DuolingoMax的新訂閱級(jí)別中可用。借助這兩個(gè)功能,多鄰國填補(bǔ)了理論知識(shí)和語言應(yīng)用之間的鴻溝。多虧了LLM,多鄰國讓語言學(xué)習(xí)者能夠沉浸在真實(shí)世界的場景中。“角色扮演”功能模擬與母語人士的對(duì)話,讓用戶能夠在各種場景中練習(xí)語言技能?!敖忉屛业拇鸢浮惫δ茚槍?duì)語法錯(cuò)誤提供個(gè)性化反饋,幫助用戶更深入地理解語言結(jié)構(gòu)。多鄰國的首席產(chǎn)品經(jīng)理EdwinBodge說道:“我們希望AI技術(shù)能夠深度融入多鄰國的應(yīng)用程序,并利用多鄰國的游戲化特點(diǎn)。這是我們的用戶所喜愛的?!盙PT-4與DuolingoMax的集成,不僅增強(qiáng)了整體學(xué)習(xí)體驗(yàn),還為更有效的語言學(xué)習(xí)鋪平了道路,尤其是對(duì)于那些無法接觸到母語人士或沉浸式環(huán)境的人來說。這種創(chuàng)新方法應(yīng)該能夠改變語言學(xué)習(xí)者掌握第二語言的方式,并鞏固長期的學(xué)習(xí)成果。1.3.5YabbleYabble是一家市場研究公司,它利用AI技術(shù)分析消費(fèi)者數(shù)據(jù),為企業(yè)提供可用的見解。Yabble的平臺(tái)將原始的非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)化為可視化形式,使企業(yè)能夠根據(jù)客戶需求做出明智的決策。將先進(jìn)的AI技術(shù)(如GPT)整合到Y(jié)abble的平臺(tái)中,這樣做增強(qiáng)了其消費(fèi)者數(shù)據(jù)處理能力。這種增強(qiáng)使得對(duì)復(fù)雜問題和答案的理解更加有效,也使企業(yè)能夠基于數(shù)據(jù)獲得更深入的見解。這樣一來,企業(yè)可以根據(jù)客戶反饋?zhàn)R別可改進(jìn)的關(guān)鍵領(lǐng)域,做出更明智的決策。Yabble的產(chǎn)品負(fù)責(zé)人BenRoe說道:“我們知道,如果要擴(kuò)大現(xiàn)有的服務(wù)規(guī)模,我們需要AI來完成大部分的繁重工作,這樣我們就可以把時(shí)間和創(chuàng)造力用在其他地方。OpenAI完全符合我們的要求。”1.3.6WaymarkWaymark提供了一個(gè)創(chuàng)作視頻廣告的平臺(tái)。該平臺(tái)利用AI技術(shù)幫助企業(yè)輕松創(chuàng)作高質(zhì)量的視頻,無須技術(shù)知識(shí)或昂貴的設(shè)備。Waymark已將GPT集成到其平臺(tái)中,這顯著地改進(jìn)了平臺(tái)用戶的腳本編寫過程。這種由GPT驅(qū)動(dòng)的增強(qiáng)功能使得平臺(tái)能夠在幾秒內(nèi)為用戶生成定制腳本。這樣一來,用戶能夠更專注于他們的主要目標(biāo),因?yàn)樗麄儫o須花費(fèi)太多時(shí)間編輯腳本,從而有更多的時(shí)間來創(chuàng)作視頻廣告。因此,將GPT集成到Waymark平臺(tái)中提供了效率更高、個(gè)性化更強(qiáng)的視頻創(chuàng)作體驗(yàn)。Waymark創(chuàng)始人NathanLabenz說道:“在過去的五年中,我使用了各種AI產(chǎn)品,但沒有發(fā)現(xiàn)任何一款產(chǎn)品能夠有效地總結(jié)一個(gè)企業(yè)的在線足跡,更不用說撰寫有效的營銷文案了,直到GPT-3出現(xiàn)?!?.3.7InworldAIInworldAI為開發(fā)人員提供了一個(gè)平臺(tái),用于創(chuàng)建具有獨(dú)特個(gè)性、多模態(tài)表達(dá)能力和上下文意識(shí)的AI角色。InworldAI平臺(tái)的主要應(yīng)用領(lǐng)域之一是視頻游戲。將GPT作為InworldAI角色引擎的基礎(chǔ),可以實(shí)現(xiàn)高效、快速的視頻游戲角色開發(fā)。通過將GPT與其他ML模型結(jié)合,該平臺(tái)可以為AI角色生成獨(dú)特的個(gè)性、情感、記憶和行為。這個(gè)過程使游戲開發(fā)人員能夠?qū)W⒂跀⑹潞推渌黝},而無須花費(fèi)大量時(shí)間從頭開始創(chuàng)建語言模型。InworldAI的首席產(chǎn)品官兼聯(lián)合創(chuàng)始人KylanGibbs表示:“有了GPT-3,我們有更多的時(shí)間和創(chuàng)造力來打磨專有技術(shù),為下一代非玩家角色提供動(dòng)力?!?.4警惕AI幻覺:限制與考慮正如你所見,LLM根據(jù)給定的輸入提示詞逐個(gè)預(yù)測下一個(gè)詞(也就是標(biāo)記),從而生成回答。在大多數(shù)情況下,模型的輸出是與提問相關(guān)的,并且完全可用,但是在使用語言模型時(shí)需要小心,因?yàn)樗鼈兘o出的回答可能不準(zhǔn)確。這種回答通常被稱為AI幻覺,即AI自信地給出一個(gè)回答,但是這個(gè)回答是錯(cuò)誤的,或者涉及虛構(gòu)的信息。對(duì)于依賴GPT的用戶來說,AI幻覺可能帶來危險(xiǎn)。你需要仔細(xì)核對(duì)并批判性地審視模型的回答??紤]以下例子。首先,我們讓模型計(jì)算一個(gè)簡單的式子:2+2。不出所料,它給出的答案是4。非常好!然后,我們讓它計(jì)算一個(gè)復(fù)雜的式子:3695×123548。盡管正確答案是456509860,但模型非常自信地給出了一個(gè)錯(cuò)誤的答案,如圖1-7所示。當(dāng)我們要求它進(jìn)行檢查并重新計(jì)算時(shí),它仍然給出了一個(gè)錯(cuò)誤的答案。圖1-7:ChatGPT產(chǎn)生的數(shù)學(xué)幻覺(ChatGPT,2023年4月22日)盡管我們可以使用插件系統(tǒng)向GPT添加新功能,但GPT默認(rèn)不包含計(jì)算器。為了回答我們的問題,即2+2等于多少,GPT逐個(gè)生成每個(gè)標(biāo)記。它之所以能正確回答,是因?yàn)樗赡芙?jīng)常在訓(xùn)練文本中遇到2+2等于4。這并不能說明它會(huì)計(jì)算,只能說明它會(huì)補(bǔ)全文本而已。GPT很可能沒有在其訓(xùn)練文本中見過太多次3695×123548。這就是它犯錯(cuò)的原因。你可以看到,即使犯了錯(cuò),它對(duì)自己的錯(cuò)誤輸出也相當(dāng)自信。因此,在應(yīng)用程序中使用GPT時(shí)要特別小心。如果GPT犯錯(cuò),那么你的應(yīng)用程序可能會(huì)得到不一致的結(jié)果。請(qǐng)注意,在剛才的例子中,ChatGPT給出的結(jié)果接近正確答案,而不是完全隨機(jī)的。這是算法的一個(gè)有趣的附帶效果:盡管沒有數(shù)學(xué)能力,但ChatGPT僅通過語言方法就能給出近似的估計(jì)結(jié)果。OpenAI已經(jīng)為GPT-4引入了插件功能。正如我們將在第5章中看到的那樣,這些工具讓我們能夠向LLM添加額外的功能。計(jì)算器就是眾多工具之一,它可以幫助GPT正確回答數(shù)學(xué)問題。在前面的例子中,ChatGPT犯了一個(gè)錯(cuò)誤。但在某些情況下,它甚至?xí)室馄垓_,如圖1-8所示。圖1-8:要求ChatGPT給一張維基百科圖片中的斑馬計(jì)數(shù)(ChatGPT,2023年4月5日)ChatGPT聲稱自己無法訪問互聯(lián)網(wǎng)。然而,如果我們堅(jiān)持,就會(huì)發(fā)生有趣的事情,如圖1-9所示。圖1-9:ChatGPT聲稱自己已訪問維基百科鏈接ChatGPT的意思是,它已經(jīng)訪問了鏈接。然而,這在目前絕對(duì)不可能。ChatGPT明顯讓用戶誤以為它具備其實(shí)并不具備的能力。順便說一下,正如圖1-10所示,該圖片中的斑馬可不止三只。圖1-10:ChatGPT并沒有真正計(jì)算斑馬的數(shù)量ChatGPT和GPT-4在設(shè)計(jì)上并不可靠:它們可能會(huì)提供錯(cuò)誤信息,甚至誤導(dǎo)用戶。總之,我們強(qiáng)烈推薦在創(chuàng)意型應(yīng)用程序中使用純GPT解決方案,而不是在醫(yī)療咨詢工具等真相至關(guān)重要的問答類應(yīng)用程序中使用。對(duì)于這類用例,插件可能是理想的解決方案。1.5使用插件和微調(diào)優(yōu)化GPT模型除了簡單的文本補(bǔ)全功能,還可以使用更高級(jí)的技術(shù)來進(jìn)一步利用GPT模型的能力7。本書介紹兩種方法。72023年11月7日,OpenAI在首屆開發(fā)者大會(huì)上發(fā)布了AssistantAPI,并提供了函數(shù)調(diào)用、代碼解釋器、知識(shí)庫上傳等功能,豐富了GPT模型構(gòu)建應(yīng)用程序的能力。同時(shí),OpenAI上線了GPTs應(yīng)用商店,用戶可以通過輸入自然語言指令快速構(gòu)建專屬的GPT機(jī)器人?!g者注插件微調(diào)GPT模型有一定的局限性,例如其計(jì)算能力有限。正如你所見,GPT模型可以正確回答簡單的數(shù)學(xué)問題,如2+2等于多少,但在面對(duì)更復(fù)雜的計(jì)算時(shí)可能會(huì)遇到困難,如3695×123548。此外,它沒有直接訪問互聯(lián)網(wǎng)的權(quán)限,這意味著GPT模型無法獲取新信息,其知識(shí)僅限于訓(xùn)練數(shù)據(jù)。對(duì)于GPT-4,最后一次知識(shí)更新是在2021年9月8。OpenAI提供的插件服務(wù)允許該模型與可能由第三方開發(fā)的應(yīng)用程序連接。這些插件使模型能夠與開發(fā)人員定義的應(yīng)用程序接口(applicationprograminterface,API)進(jìn)行交互。這個(gè)過程可以極大地增強(qiáng)GPT模型的能力,因?yàn)樗鼈兛梢酝ㄟ^各種操作訪問外部世界。8截至2023年11月下旬,GPT-4的訓(xùn)練知識(shí)已更新至2023年4月。——譯者注插件為開發(fā)人員帶來許多新的機(jī)會(huì)。想象一下,將來每家公司都可能希望擁有自己的LLM插件。就像我們今天在智能手機(jī)應(yīng)用商店中看到的那樣,可能會(huì)有一系列的插件集合。通過插件可以添加的應(yīng)用程序數(shù)量可能是巨大的。在其網(wǎng)站上,OpenAI表示可以通過插件讓ChatGPT執(zhí)行以下操作:檢索實(shí)時(shí)信息,如體育賽事比分、股票價(jià)格、最新資訊等;檢索基于知識(shí)的信息,如公司文檔、個(gè)人筆記等;代表用戶執(zhí)行操作,如預(yù)訂航班、訂購食品等;準(zhǔn)確地執(zhí)行數(shù)學(xué)運(yùn)算。以上只是一些例子,還有更多的新用例等著你去發(fā)現(xiàn)。本書還將探討微調(diào)技術(shù)。正如你將看到的,微調(diào)可以提高現(xiàn)有模型在特定任務(wù)上的準(zhǔn)確性。微調(diào)過程涉及使用特定的一組新數(shù)據(jù)重新訓(xùn)練現(xiàn)有的GPT模型。新模型專為特定任務(wù)而設(shè)計(jì),這個(gè)額外的訓(xùn)練過程讓模型能夠調(diào)節(jié)其內(nèi)部參數(shù),以適應(yīng)給定的任務(wù)。經(jīng)過微調(diào)的模型應(yīng)該在該任務(wù)上表現(xiàn)得更好。比如,采用金融文本數(shù)據(jù)進(jìn)行微調(diào)的模型應(yīng)該能夠更好地回應(yīng)針對(duì)該領(lǐng)域的查詢并生成相關(guān)性更強(qiáng)的內(nèi)容。1.6小結(jié)從簡單的n-gram模型發(fā)展到RNN、LSTM,再到先進(jìn)的Transformer架構(gòu),LLM已經(jīng)取得了長足的進(jìn)步。LLM是可以處理和生成人類語言的計(jì)算機(jī)程序,它利用ML技術(shù)來分析大量的文本數(shù)據(jù)。通過使用自注意力機(jī)制和交叉注意力機(jī)制,Transformer極大地增強(qiáng)了模型的語言理解能力。本書探討如何使用GPT-4和ChatGPT,它們具備理解和生成上下文的高級(jí)能力。利用它們構(gòu)建應(yīng)用程序超越了傳統(tǒng)的BERT或LSTM模型的范疇,可以提供類似人類的互動(dòng)體驗(yàn)。自2023年初以來,GPT-4和ChatGPT在NLP方面展現(xiàn)出了非凡的能力。它們?yōu)榇龠M(jìn)各行各業(yè)的AI應(yīng)用程序快速發(fā)展做出了貢獻(xiàn)。從像BeMyEyes這樣的應(yīng)用程序到像Waymark這樣的平臺(tái),不同的行業(yè)案例證明,GPT模型有潛力從根本上改變我們與技術(shù)互動(dòng)的方式。不過,在使用LLM時(shí),要牢記可能存在風(fēng)險(xiǎn)。使用OpenAIAPI的應(yīng)用程序開發(fā)人員應(yīng)確保用戶了解錯(cuò)誤帶來的風(fēng)險(xiǎn),并能夠驗(yàn)證由AI生成的信息。第2章將介紹一些工具和信息,幫助你將GPT模型作為一種服務(wù),并讓你親身參與這場技術(shù)變革。

第2章深入了解GPT-4和ChatGPT的API本章詳細(xì)介紹GPT-4和ChatGPT的API,幫助你掌握這些API的使用方法,以便有效地將它們集成到Python應(yīng)用程序中。學(xué)完本章后,你將能夠熟練地使用這些API,并在自己的開發(fā)項(xiàng)目中充分利用它們的強(qiáng)大功能。首先,我們了解OpenAIPlayground。這將使你在編寫代碼之前更好地了解模型。接著,我們學(xué)習(xí)OpenAIPython庫。這部分內(nèi)容包括登錄信息和一個(gè)簡單的HelloWorld示例。然后,我們學(xué)習(xí)創(chuàng)建和發(fā)送API請(qǐng)求的過程,并了解如何處理API響應(yīng)。這將確保你知道如何解釋這些API返回的數(shù)據(jù)。最后,本章還會(huì)介紹諸如安全最佳實(shí)踐和成本管理等考慮因素。隨著學(xué)習(xí)的深入,你將獲得實(shí)用的知識(shí),這對(duì)使用GPT-4和ChatGPT進(jìn)行Python開發(fā)非常有幫助。你可以在隨書文件包1中找到本章涉及的所有Python代碼。1請(qǐng)?jiān)L問圖靈社區(qū),免費(fèi)下載隨書文件包:\h/book/3344?!幷咦⒃诶^續(xù)閱讀之前,請(qǐng)查看OpenAI的使用規(guī)則。如果還沒有賬戶,請(qǐng)?jiān)贠penAI主頁上創(chuàng)建一個(gè)。你也可以查看TermsandPolicies頁面上的內(nèi)容。第1章介紹的概念對(duì)于使用OpenAIAPI及其相關(guān)庫是必需的。2.1基本概念OpenAI提供了多個(gè)專為不同任務(wù)設(shè)計(jì)的模型,每個(gè)模型都有自己的定價(jià)。接下來,我們將詳細(xì)地對(duì)比這些模型并討論如何根據(jù)需求選擇模型。需要注意的是,模型的設(shè)計(jì)目的——無論是用于補(bǔ)全文本、聊天還是編輯——會(huì)影響你如何使用其API。比如,GPT-4和ChatGPT背后的模型基于聊天目的,并使用聊天端點(diǎn)。第1章介紹了“提示詞”這個(gè)概念。提示詞不僅適用于OpenAIAPI,而且是所有LLM的入口點(diǎn)。簡單地說,提示詞就是用戶發(fā)送給模型的輸入文本,用于指導(dǎo)模型執(zhí)行特定任務(wù)。對(duì)于GPT-4和ChatGPT背后的模型,提示詞具有聊天格式,輸入消息和輸出消息存儲(chǔ)在列表中。本章將詳細(xì)探討提示詞的格式。除了提示詞,第1章還介紹了標(biāo)記。標(biāo)記是詞或詞的一部分。據(jù)粗略估計(jì),100個(gè)標(biāo)記大約相當(dāng)于75個(gè)英語單詞。對(duì)OpenAI模型的請(qǐng)求是根據(jù)所使用的標(biāo)記數(shù)量來定價(jià)的,也就是說,調(diào)用API的成本取決于輸入文本和輸出文本的長度。有關(guān)管理和控制輸入標(biāo)記數(shù)量和輸出標(biāo)記數(shù)量的更多詳細(xì)信息,請(qǐng)參閱2.5節(jié)和2.6節(jié)。圖2-1總結(jié)了OpenAIAPI的基本概念。圖2-1:OpenAIAPI的基本概念了解基本概念之后,讓我們深入探討模型的細(xì)節(jié)。2.2OpenAIAPI提供的可用模型通過OpenAIAPI,你可以使用OpenAI開發(fā)的多個(gè)模型。這些模型可通過API作為服務(wù)使用(通過直接的HTTP調(diào)用或提供的庫),這意味著OpenAI在遠(yuǎn)程服務(wù)器上運(yùn)行模型,開發(fā)人員只需向其發(fā)送查詢請(qǐng)求即可。每個(gè)模型都有自己的功能和定價(jià)。本節(jié)將介紹OpenAI通過其API提供的LLM。需要注意的是,這些模型是專有的,你不能根據(jù)自己的需求直接修改模型的代碼。但是正如后文所述,你可以通過OpenAIAPI在特定數(shù)據(jù)上微調(diào)其中的一些模型。一些較舊的OpenAI模型(包括GPT-2模型)并不是專有的。你可以直接從HuggingFace或GitHub下載GPT-2模型,但無法通過API使用它。由于OpenAI提供的許多模型會(huì)不斷更新,因此本書很難給出完整的列表。要了解最新的模型列表,請(qǐng)查看OpenAI的在線文檔。本章將重點(diǎn)介紹以下幾個(gè)最為重要的模型。InstructGPT這個(gè)模型系列可以處理許多單輪文本補(bǔ)全任務(wù)。text-ada-001模型只能處理簡單的文本補(bǔ)全任務(wù),但它也是GPT-3系列中速度最快、價(jià)格最便宜的模型。text-babbage-001模型和text-curie-001模型稍微強(qiáng)大一些,但也更昂貴。text-davinci-003模型可以出色地執(zhí)行所有文本補(bǔ)全任務(wù),但它也是GPT-3系列2中最昂貴的。2截至2023年11月下旬的消息,InstructGPT系列將在2024年1月4日統(tǒng)一替換為最新的gpt-3.5-turbo-instruct模型?!g者注ChatGPTChatGPT背后的模型是gpt-3.5-turbo。作為一個(gè)聊天模型,它可以將一系列消息作為輸入,并生成相應(yīng)的消息作為輸出。雖然gpt-3.5-turbo的聊天格式旨在進(jìn)行多輪對(duì)話,但它也可用于沒有對(duì)話的單輪任務(wù)。在單輪任務(wù)中,gpt-3.5-turbo的性能與text-davinci-003相當(dāng)。由于gpt-3.5-turbo的價(jià)格只有text-davinci-003的十分之一3,而且兩者性能相當(dāng),因此建議默認(rèn)使用它來進(jìn)行單輪任務(wù)。gpt-3.5-turbo模型的上下文窗口大小約為4000個(gè)標(biāo)記,這意味著它可以接收約4000個(gè)標(biāo)記作為輸入。OpenAI還提供了另一個(gè)模型,名為gpt-3.5-turbo-16k。它具有與標(biāo)準(zhǔn)的gpt-3.5-turbo模型相同的功能,但上下文窗口大小是后者的4倍。3截至2023年11月下旬,最新版本的text-davinci-003價(jià)格是每千個(gè)標(biāo)記0.0200美元,gpt-3.5-turbo-0613的價(jià)格是每千個(gè)輸入標(biāo)記0.0030美元+每千個(gè)輸出標(biāo)記0.0040美元?!g者注GPT-4這是迄今為止OpenAI發(fā)布的最大的模型。由于在廣泛的文本和圖像多模態(tài)語料庫上進(jìn)行了訓(xùn)練,因此它精通許多領(lǐng)域。GPT-4能夠準(zhǔn)確地遵循復(fù)雜的自然語言指令并解決難題。它可用于聊天任務(wù)和單輪任務(wù),并具有相當(dāng)高的準(zhǔn)確性。OpenAI提供了兩個(gè)GPT-4模型4:gpt-4的上下文窗口大小為8192個(gè)標(biāo)記,gpt-4-32k的上下文窗口大小為32768個(gè)標(biāo)記。32768個(gè)標(biāo)記大約相當(dāng)于24576個(gè)英語單詞,即大約40頁的上下文。4截至2023年11月下旬,OpenAI已提供6個(gè)GPT-4模型,包括gpt-4-1106-preview、gpt-4-vision-preview、gpt-4、gpt-4-32k、gpt-4-0613、gpt-4-32k-0613?!g者注無論是GPT-3.5Turbo還是GPT-4,都在持續(xù)更新。當(dāng)提到gpt-3.5-turbo、gpt-3.5-turbo-16k、gpt-4和gpt-4-32k時(shí),我們指的是這些模型的最新版本5。5截至2023年11月下旬,文中提到的模型版本已更新至gpt-3.5-turbo-1106、gpt-3.5-turbo-0613、gpt-4-1106-preview、gpt-4-32k-0613?!g者注開發(fā)人員通常希望LLM版本具有良好的穩(wěn)定性和可見性,以便在應(yīng)用程序中使用它。對(duì)于開發(fā)人員來說,如果模型的版本在一夜之間發(fā)生變化,并且針對(duì)相同的輸入給出截然不同的回答,那么這樣的模型使用起來很困難。為此,OpenAI提供了這些模型的靜態(tài)快照版本。在我們撰寫本書之時(shí),上述模型最新的靜態(tài)快照版本分別是gpt-3.5-turbo-0613、gpt-3.5-turbo-16k-0613、gpt-4-0613和gpt-4-32k-0613。正如第1章所述,OpenAI建議使用InstructGPT系列而不是原始的GPT-3模型。這些模型仍然在API中以davinci、curie、babbage和ada的名稱提供。鑒于這些模型可能給出奇怪、錯(cuò)誤和具有誤導(dǎo)性的回答,我們建議在使用時(shí)要謹(jǐn)慎。然而,由于這些模型是僅有的幾個(gè)可以針對(duì)你的數(shù)據(jù)進(jìn)行微調(diào)的模型,因此它們?nèi)匀豢捎谩=刂帘緯⑽陌娉霭嬷畷r(shí),OpenAI已宣布將于2024年提供GPT-3.5Turbo和GPT-4的微調(diào)功能。66截至2023年11月下旬,GPT-3.5微調(diào)功能已完全開放,GPT-4微調(diào)功能可通過申請(qǐng)權(quán)限開放。——譯者注第1章介紹的SFT模型在經(jīng)過SFT階段后獲得,該模型沒有經(jīng)過RLHF階段,也可以通過API以davinci-instruct-beta的名稱使用。2.3在OpenAIPlayground中使用GPT模型OpenAIPlayground是一個(gè)基于Web的平臺(tái)。你可以使用它直接測試OpenAI提供的語言模型,而無須編寫代碼。在OpenAIPlayground上,你可以編寫提示詞,選擇模型,并輕松查看模型生成的輸出。要測試OpenAI提供的各種LLM在特定任務(wù)上的表現(xiàn),OpenAIPlayground是絕佳的途徑。以下是訪問OpenAIPlayground的步驟。訪問OpenAI主頁,然后依次單擊Developers→Overview。如果你已經(jīng)擁有一個(gè)賬戶但未登錄,請(qǐng)單擊屏幕右上方的Login。如果還沒有OpenAI賬戶,那么你需要?jiǎng)?chuàng)建賬戶才能使用Playground和OpenAI的大部分功能。請(qǐng)注意,由于Playground和API是收費(fèi)的,因此你在注冊(cè)賬戶時(shí)需要提供支付方式。登錄后,你將在網(wǎng)頁的頂部看到加入Playground的鏈接。單擊該鏈接,你應(yīng)該會(huì)看到圖2-2所示的內(nèi)容。ChatGPTPlus選項(xiàng)與使用API或Playground無關(guān)。如果你是ChatGPTPlus用戶,那么仍需要支付費(fèi)用才能使用API和Playground。圖2-2:OpenAIPlayground補(bǔ)全模式下的界面77OpenAIPlayground在2023年11月7日的OpenAI首屆開發(fā)者大會(huì)后已更新版本。最新版本的界面與圖2-2中的界面存在差異,請(qǐng)以最新版本為準(zhǔn)?!g者注界面中的主要空白處用于輸入消息。編寫完消息后,單擊Submit按鈕以生成輸出。在圖2-2所示的示例中,我們編寫消息“AsDescartessaid,Ithinktherefore”(正如笛卡兒所說,我思故),然后單擊Submit按鈕。模型用“Iam”(我在)補(bǔ)全了文本。每次單擊Submit按鈕時(shí),OpenAI都會(huì)收取相應(yīng)的費(fèi)用。本章稍后會(huì)提供有關(guān)費(fèi)用的更多信息。就本例而言,成本約為0.0002美元。界面的底部和右側(cè)有許多選項(xiàng)。我們從底部開始。在Submit按鈕右側(cè)的是撤銷按鈕(在圖中標(biāo)記為A),用于刪除最后生成的文本。在本例中,它將刪除“Iam”。接下來是重新生成按鈕(在圖中標(biāo)記為B),用于重新生成剛剛刪除的文本。再往后是歷史按鈕(在圖中標(biāo)記為C),它會(huì)給出過去30天內(nèi)的所有請(qǐng)求。請(qǐng)注意,一旦進(jìn)入歷史菜單,你就可以出于隱私原因輕松地刪除請(qǐng)求。右側(cè)的選項(xiàng)面板提供與界面和所選模型相關(guān)的各種設(shè)置。我們?cè)诖酥唤忉屍渲械囊恍┻x項(xiàng),后文會(huì)陸續(xù)介紹其他選項(xiàng)。右側(cè)的第一個(gè)下拉列表是模式列表(在圖中標(biāo)記為D)。在我們撰寫本書之時(shí),可用的模式有聊天(默認(rèn)選項(xiàng))、補(bǔ)全和編輯。補(bǔ)全模式和編輯模式已被標(biāo)記為遺留模式,可能會(huì)在2024年1月消失。如前所示,語言模型在Playground的補(bǔ)全模式下努力補(bǔ)全用戶的輸入。圖2-3展示了在聊天模式下使用Playground的示例。界面左側(cè)是系統(tǒng)面板(在圖中標(biāo)記為E)。在這里,你可以描述聊天系統(tǒng)的行為方式。比如,在圖2-3中,我們要求它成為一個(gè)喜歡貓的有用助手。我們還要求它只談?wù)撠?,并給出簡短的回答。根據(jù)設(shè)置的這些參數(shù)所生成的對(duì)話顯示在界面中央。如果想繼續(xù)與系統(tǒng)對(duì)話,你可以單擊Addmessage(在圖中標(biāo)記為F),輸入消息,然后單擊Submit按鈕(在圖中標(biāo)記為G)。還可以在右側(cè)定義模型(在圖中標(biāo)記為H),這里使用GPT-4。請(qǐng)注意,并非所有模型在所有模式下都可用。比如,只有GPT-4和GPT-3.5Turbo在聊天模式下可用8。8截至2023年11月下旬,OpenAIPlayground聊天模式可用的模型包括gpt-3.5-turbo、gpt-3.5-turbo-0301、gpt-3.5-turbo-0613、gpt-3.5-turbo-1106、gpt-3.5-turbo-16k、gpt-3.5-turbo-16k-0613?!g者注圖2-3:OpenAIPlayground聊天模式下的界面Playground還提供了編輯模式。如圖2-4所示,在這種模式下,你提供一些文本(在圖中標(biāo)記為I)和指令(在圖中標(biāo)記為J),模型將嘗試修改文本。在圖2-4所示的例子中,我們給出了一段描述一個(gè)年輕男子要去旅行的文本。同時(shí),我們指示模型將文本中的主人公更改為一位年長的女士??梢钥吹剑Y(jié)果(在圖中標(biāo)記為K)符合指令。圖2-4:OpenAIPlayground編輯模式下的界面在Playground界面的右側(cè)、模式下拉列表下方的是模型下拉列表(在圖中標(biāo)記為L)。正如你已經(jīng)看到的,這是你選擇LLM的地方。該下拉列表中可用的模型取決于所選的模式。在模型下拉列表下方的是參數(shù),例如溫度(在圖中標(biāo)記為M),它定義模型的行為。我們不會(huì)在此詳細(xì)討論這些參數(shù)。在詳細(xì)討論不同模型的工作原理時(shí),我們會(huì)探索這里的大部分參數(shù)。界面頂部有一個(gè)加載預(yù)設(shè)項(xiàng)的下拉列表(在圖中標(biāo)記為N)和4個(gè)按鈕。在圖2-2中,我們使用LLM來補(bǔ)全句子,但是通過使用適當(dāng)?shù)奶崾驹~,我們也可以讓模型執(zhí)行特定的任務(wù)。圖2-5顯示了模型可以執(zhí)行的常見任務(wù)。圖2-5:模型可以執(zhí)行的常見任務(wù)應(yīng)注意,預(yù)設(shè)項(xiàng)不僅定義了提示詞,還定義了界面右側(cè)的一些選項(xiàng)。如果選擇“GrammaticalStandardEnglish”(語法標(biāo)準(zhǔn)的英語),那么你將在主窗口中看到圖2-6所示的提示詞。圖2-6:預(yù)設(shè)項(xiàng)GrammaticalStandardEnglish的提示詞示例如果單擊Submit按鈕,那么你將得到以下結(jié)果:“Shedidnotgotothemarket”(她沒有去市場)。雖然可以從下拉列表中的提示詞入手,但是你應(yīng)該修改它們以使其適合你的問題。OpenAI為不同的任務(wù)提供了完整的示例列表,詳見OpenAI網(wǎng)站的Examples頁面。在圖2-4中的“Loadapreset”下拉列表旁邊的是Save按鈕(在圖中標(biāo)記為O)。想象一下,你已經(jīng)為任務(wù)定義了有價(jià)值的提示詞,也選擇了模型及其參數(shù),并且希望以后在Playground中輕松復(fù)用它們。Save按鈕的功能是把Playground的當(dāng)前狀態(tài)保存為一個(gè)預(yù)設(shè)狀態(tài)。你可以為預(yù)設(shè)狀態(tài)命名并添加描述信息。一旦保存,你的預(yù)設(shè)狀態(tài)就將出現(xiàn)在“Loadapreset”下拉列表中。Save按鈕右側(cè)的是Viewcode按鈕(在圖中標(biāo)記為P)。它提供了在Playground中直接運(yùn)行測試代碼的腳本。你可以請(qǐng)求Python、Node.js或cURL代碼,以便在Linux終端中直接與OpenAI遠(yuǎn)程服務(wù)器交互。如果用Python代碼給出提示詞“AsDescartessaid,Ithinktherefore”,那么我們將得到以下結(jié)果:

importopenai

openai.api_key=os.getenv("OPENAI_API_KEY")

response=openai.Completion.create(

model="text-davinci-003",

prompt="AsDescartessaid,Ithinktherefore",

temperature=0.7,

max_tokens=3,

top_p=1,

frequency_penalty=0,

presence_penalty=0,

)

現(xiàn)在你應(yīng)該了解了如何在沒有編碼的情況下使用Playground來測試OpenAI的語言模型。接下來,讓我們討論如何獲取和管理OpenAI服務(wù)的API密鑰。2.4開始使用OpenAIPython庫本節(jié)重點(diǎn)介紹如何在一個(gè)小型Python腳本中使用API密鑰,并展示如何使用OpenAIAPI進(jìn)行第一次測試。OpenAI將GPT-4和ChatGPT作為服務(wù)提供。這意味著用戶無法直接訪問模型代碼,也無法在自己的服務(wù)器上運(yùn)行這些模型。OpenAI負(fù)責(zé)部署和運(yùn)行其模型,只要用戶擁有OpenAI賬戶和API密鑰,就可以調(diào)用這些模型。在執(zhí)行以下步驟之前,請(qǐng)確保你已登錄OpenAI賬戶。2.4.1OpenAI訪問權(quán)限和API密鑰OpenAI要求你必須擁有API密鑰才能使用其服務(wù)。此密鑰有兩個(gè)用途:它賦予你調(diào)用API方法的權(quán)利;它將你的API調(diào)用與你的賬戶關(guān)聯(lián),用于計(jì)費(fèi)。你必須擁有此密鑰才能在應(yīng)用程序中調(diào)用OpenAI服務(wù)。要獲取密鑰,請(qǐng)?jiān)L問OpenAI的平臺(tái)頁面。單擊頁面右上角的賬戶名,然后選擇“ViewAPIkeys”(查看API密鑰),如圖2-7所示。圖2-7:在OpenAI菜單中選擇查看API密鑰進(jìn)入API密鑰頁面后,請(qǐng)單擊“Createnewsecretkey”(創(chuàng)建新密鑰)并復(fù)制密鑰。該密鑰是以sk-開頭的一長串字符。請(qǐng)妥善保管密鑰,因?yàn)樗苯优c你的賬戶相關(guān)聯(lián)。如果密鑰丟失,可能會(huì)導(dǎo)致不必要的費(fèi)用。一旦獲得了密鑰,最好將其導(dǎo)出為環(huán)境變量。這樣一來,你的應(yīng)用程序就能夠在不直接將密鑰寫入代碼的情況下使用它。以下說明具體如何做。對(duì)于Linux或macOS:#設(shè)置當(dāng)前會(huì)話的環(huán)境變量OPENAI_API_KEY

exportOPENAI_API_KEY=sk-(...)

#檢查是否設(shè)置了環(huán)境變量

echo$OPENAI_API_KEY

對(duì)于Windows:#設(shè)置當(dāng)前會(huì)話的環(huán)境變量OPENAI_API_KEY

setOPENAI_API_KEY=sk-(...)

#檢查是否設(shè)置了環(huán)境變量

echo%OPENAI_API_KEY%

以上代碼片段將設(shè)置一個(gè)環(huán)境變量,并使密鑰對(duì)從同一shell會(huì)話啟動(dòng)的其他

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論