面向Java開發(fā)者的ChatGPT提示詞工程(1)
各位Java開發(fā)者們,歡迎來到萬貓學(xué)社!在這里,我將和大家分享ChatGPT提示詞工程的系列文章,希望能夠和大家一起學(xué)習(xí)和探討提示詞的最佳實踐。
雖然互聯(lián)網(wǎng)上已經(jīng)有很多有關(guān)提示詞的材料,比如那些“每個人都必須知道的30個提示”,但是這些材料大都集中在ChatGPT的用戶界面上,主要用于完成特定的、經(jīng)常是一次性的任務(wù)。然而,我認(rèn)為大型語言模型(LLM)的真正價值在于作為Java開發(fā)者使用API調(diào)用大型語言模型來快速構(gòu)建軟件應(yīng)用程序。
這個優(yōu)勢被低估了,大型語言模型的API能夠讓開發(fā)人員非??焖俚貥?gòu)建應(yīng)用程序,這是非常令人興奮的。因此,在本系列文章中,我們將會分享一些可能性以及如何實現(xiàn)它們的最佳實踐,希望能夠幫助各位Java開發(fā)者更好地利用大型語言模型來提高開發(fā)效率。
大型語言模型的分類
在研究大型語言模型的過程中,發(fā)現(xiàn)了兩種常見類型的模型,分別為基礎(chǔ)大型語言模型(Base LLM)和指令調(diào)整大型語言模型(Instruction Tuned LLM)。
基礎(chǔ)大型語言模型
基礎(chǔ)大型語言模型是基于大量文本數(shù)據(jù)訓(xùn)練出來的,它可以根據(jù)之前的文本預(yù)測下一個單詞。而指令調(diào)整大型語言模型則可以根據(jù)給定的指令或任務(wù)進行微調(diào),以更好地適應(yīng)特定任務(wù)的需求。
以基礎(chǔ)大型語言模型為例,當(dāng)我們輸入“從前有一只獨角獸”時,模型可以根據(jù)之前的文本預(yù)測接下來的單詞,如“它和所有獨角獸朋友一起生活在一個神奇的森林中”。
從前有一只獨角獸
它和所有獨角獸朋友一起生活在一個神奇的森林中
但是,如果我們輸入“法國的首都是什么”,模型可能會回答“法國最大的城市是什么”或“法國的人口是多少”,因為它是基于大量的互聯(lián)網(wǎng)文章訓(xùn)練出來的,這些文章往往是問答題目列表,而不是簡單的事實陳述。
法國的首都是什么
法國最大的城市是什么
法國的人口是多少
指令調(diào)整大型語言模型
相比之下,一個經(jīng)過指令調(diào)整的大型語言模型已經(jīng)被訓(xùn)練成遵循指令的模型。因此,如果你問它“法國的首都是什么”,它更有可能輸出“法國的首都是巴黎”。
法國的首都是什么
法國的首都是巴黎
指令調(diào)整的大型語言模型首先使用已經(jīng)訓(xùn)練好了大量文本數(shù)據(jù)的基礎(chǔ)型語言模型,然后使用輸入和輸出作為指令來進一步訓(xùn)練和微調(diào)它。這樣訓(xùn)練出的大型語言模型經(jīng)過指令調(diào)整后,已經(jīng)被訓(xùn)練成為有幫助、誠實和無害的。相比于基礎(chǔ)大型語言模型,它們更不可能輸出有問題的文本,例如有害的輸出。為了使系統(tǒng)更能夠提供幫助并遵循指令,通常會使用一種稱為RLHF(Reinforcement Learning from Human Feedback,人類反饋強化學(xué)習(xí))的技術(shù)進一步優(yōu)化。這種方法可以在保證語言模型的準(zhǔn)確性和安全性的同時,提高其輸出的質(zhì)量和可用性。
在實際應(yīng)用中,許多場景已經(jīng)開始使用指令調(diào)整的大型語言模型。盡管在互聯(lián)網(wǎng)上可能可以找到一些針對基礎(chǔ)大型語言模型的最佳實踐,但我們認(rèn)為,針對大多數(shù)實際應(yīng)用,大多數(shù)人應(yīng)該集中精力使用指令調(diào)整的大型語言模型。這些模型更易于使用,而且由于OpenAI和其他大型語言模型公司的工作變得更加安全和對齊,這些模型也更加可靠。因此,我們建議在大多數(shù)應(yīng)用中使用指令調(diào)整的大型語言模型,并專注于使用這些模型的最佳實踐。
當(dāng)使用指令調(diào)整大型語言模型時,可以看作向一個聰明但不了解您任務(wù)具體細(xì)節(jié)的人提供指令。因此,如果模型無法按照您的期望工作,很可能是因為提示詞不夠清晰。舉個例子,如果您只說“請寫一些關(guān)于艾倫·圖靈的東西”,這并不足夠明確。
請寫一些關(guān)于艾倫·圖靈的東西
更明確地指定您想要文本重點關(guān)注艾倫·圖靈的科學(xué)工作、個人生活、歷史角色或其他內(nèi)容,會更有助于模型理解您的意圖。此外,如果您要指定文本的語氣,您想讓它像專業(yè)記者寫的文章,還是更像隨意便條?如果您想讓一名新畢業(yè)的大學(xué)生為您完成這項任務(wù),提前指定他們需要閱讀哪些文本片段,將有助于為這個新畢業(yè)生的成功做好準(zhǔn)備。
總結(jié)
有了以上的鋪墊,我們將進行后續(xù)的學(xué)習(xí):
首先,您將學(xué)習(xí)一些Java開發(fā)中的提示詞最佳實踐。然后,我們將涵蓋一些常見的用例:總結(jié)、推斷、轉(zhuǎn)換、擴展。然后,您將使用大型語言模型構(gòu)建一個聊天機器人。我們希望這將激發(fā)您對可以構(gòu)建的新應(yīng)用程序的想象力。
在下一篇文章中,你將看到如何促使大型語言模型工作的兩個原則,期待您的閱讀。
作者:萬貓學(xué)社
歡迎關(guān)注微信公眾號 :萬貓學(xué)社