面向Java開發(fā)者的ChatGPT提示詞工程(1)

各位Java開發(fā)者們,歡迎來到萬貓學(xué)社!在這里,我將和大家分享ChatGPT提示詞工程的系列文章,希望能夠和大家一起學(xué)習(xí)和探討提示詞的最佳實(shí)踐。

雖然互聯(lián)網(wǎng)上已經(jīng)有很多有關(guān)提示詞的材料,比如那些“每個(gè)人都必須知道的30個(gè)提示”,但是這些材料大都集中在ChatGPT的用戶界面上,主要用于完成特定的、經(jīng)常是一次性的任務(wù)。然而,我認(rèn)為大型語言模型(LLM)的真正價(jià)值在于作為Java開發(fā)者使用API調(diào)用大型語言模型來快速構(gòu)建軟件應(yīng)用程序。


這個(gè)優(yōu)勢(shì)被低估了,大型語言模型的API能夠讓開發(fā)人員非常快速地構(gòu)建應(yīng)用程序,這是非常令人興奮的。因此,在本系列文章中,我們將會(huì)分享一些可能性以及如何實(shí)現(xiàn)它們的最佳實(shí)踐,希望能夠幫助各位Java開發(fā)者更好地利用大型語言模型來提高開發(fā)效率。


大型語言模型的分類
在研究大型語言模型的過程中,發(fā)現(xiàn)了兩種常見類型的模型,分別為基礎(chǔ)大型語言模型(Base LLM)和指令調(diào)整大型語言模型(Instruction Tuned LLM)。

基礎(chǔ)大型語言模型
基礎(chǔ)大型語言模型是基于大量文本數(shù)據(jù)訓(xùn)練出來的,它可以根據(jù)之前的文本預(yù)測(cè)下一個(gè)單詞。而指令調(diào)整大型語言模型則可以根據(jù)給定的指令或任務(wù)進(jìn)行微調(diào),以更好地適應(yīng)特定任務(wù)的需求。

以基礎(chǔ)大型語言模型為例,當(dāng)我們輸入“從前有一只獨(dú)角獸”時(shí),模型可以根據(jù)之前的文本預(yù)測(cè)接下來的單詞,如“它和所有獨(dú)角獸朋友一起生活在一個(gè)神奇的森林中”。

從前有一只獨(dú)角獸

它和所有獨(dú)角獸朋友一起生活在一個(gè)神奇的森林中
但是,如果我們輸入“法國(guó)的首都是什么”,模型可能會(huì)回答“法國(guó)最大的城市是什么”或“法國(guó)的人口是多少”,因?yàn)樗腔诖罅康幕ヂ?lián)網(wǎng)文章訓(xùn)練出來的,這些文章往往是問答題目列表,而不是簡(jiǎn)單的事實(shí)陳述。

法國(guó)的首都是什么

法國(guó)最大的城市是什么
法國(guó)的人口是多少
指令調(diào)整大型語言模型
相比之下,一個(gè)經(jīng)過指令調(diào)整的大型語言模型已經(jīng)被訓(xùn)練成遵循指令的模型。因此,如果你問它“法國(guó)的首都是什么”,它更有可能輸出“法國(guó)的首都是巴黎”。

法國(guó)的首都是什么

法國(guó)的首都是巴黎
指令調(diào)整的大型語言模型首先使用已經(jīng)訓(xùn)練好了大量文本數(shù)據(jù)的基礎(chǔ)型語言模型,然后使用輸入和輸出作為指令來進(jìn)一步訓(xùn)練和微調(diào)它。這樣訓(xùn)練出的大型語言模型經(jīng)過指令調(diào)整后,已經(jīng)被訓(xùn)練成為有幫助、誠(chéng)實(shí)和無害的。相比于基礎(chǔ)大型語言模型,它們更不可能輸出有問題的文本,例如有害的輸出。為了使系統(tǒng)更能夠提供幫助并遵循指令,通常會(huì)使用一種稱為RLHF(Reinforcement Learning from Human Feedback,人類反饋強(qiáng)化學(xué)習(xí))的技術(shù)進(jìn)一步優(yōu)化。這種方法可以在保證語言模型的準(zhǔn)確性和安全性的同時(shí),提高其輸出的質(zhì)量和可用性。

在實(shí)際應(yīng)用中,許多場(chǎng)景已經(jīng)開始使用指令調(diào)整的大型語言模型。盡管在互聯(lián)網(wǎng)上可能可以找到一些針對(duì)基礎(chǔ)大型語言模型的最佳實(shí)踐,但我們認(rèn)為,針對(duì)大多數(shù)實(shí)際應(yīng)用,大多數(shù)人應(yīng)該集中精力使用指令調(diào)整的大型語言模型。這些模型更易于使用,而且由于OpenAI和其他大型語言模型公司的工作變得更加安全和對(duì)齊,這些模型也更加可靠。因此,我們建議在大多數(shù)應(yīng)用中使用指令調(diào)整的大型語言模型,并專注于使用這些模型的最佳實(shí)踐。

當(dāng)使用指令調(diào)整大型語言模型時(shí),可以看作向一個(gè)聰明但不了解您任務(wù)具體細(xì)節(jié)的人提供指令。因此,如果模型無法按照您的期望工作,很可能是因?yàn)樘崾驹~不夠清晰。舉個(gè)例子,如果您只說“請(qǐng)寫一些關(guān)于艾倫·圖靈的東西”,這并不足夠明確。

請(qǐng)寫一些關(guān)于艾倫·圖靈的東西
更明確地指定您想要文本重點(diǎn)關(guān)注艾倫·圖靈的科學(xué)工作、個(gè)人生活、歷史角色或其他內(nèi)容,會(huì)更有助于模型理解您的意圖。此外,如果您要指定文本的語氣,您想讓它像專業(yè)記者寫的文章,還是更像隨意便條?如果您想讓一名新畢業(yè)的大學(xué)生為您完成這項(xiàng)任務(wù),提前指定他們需要閱讀哪些文本片段,將有助于為這個(gè)新畢業(yè)生的成功做好準(zhǔn)備。

總結(jié)
有了以上的鋪墊,我們將進(jìn)行后續(xù)的學(xué)習(xí):

首先,您將學(xué)習(xí)一些Java開發(fā)中的提示詞最佳實(shí)踐。然后,我們將涵蓋一些常見的用例:總結(jié)、推斷、轉(zhuǎn)換、擴(kuò)展。然后,您將使用大型語言模型構(gòu)建一個(gè)聊天機(jī)器人。我們希望這將激發(fā)您對(duì)可以構(gòu)建的新應(yīng)用程序的想象力。

在下一篇文章中,你將看到如何促使大型語言模型工作的兩個(gè)原則,期待您的閱讀。



作者:萬貓學(xué)社


歡迎關(guān)注微信公眾號(hào) :萬貓學(xué)社