毫無(wú)疑問(wèn),GPT的出現(xiàn)以日新月異的速度改寫(xiě)了軟件開(kāi)發(fā)的工作方式。
興奮,也許也有點(diǎn)焦慮。作為開(kāi)發(fā)人員,如何在GPT時(shí)代與人工智能協(xié)作?在「萬(wàn)物皆有副駕駛」的年代,如何劃定分工邊界,讓GPT成為開(kāi)發(fā)人員的生產(chǎn)力魔盒?
作為微軟CVP、Deputy CTO的Sam Schillace基于其在一系列大語(yǔ)言模型(LLM)人工智能系統(tǒng)中的開(kāi)發(fā)經(jīng)驗(yàn)提出了九項(xiàng)原則,即Schillace Laws of Semantic AI(語(yǔ)義AI的Schillace法則)。這九大原則可視為Sam Schillace在利用GPT技術(shù)革新軟件開(kāi)發(fā)的前沿實(shí)操總結(jié),也許對(duì)正在思考如何重構(gòu)軟件工程領(lǐng)域的你也會(huì)有所啟迪——
#1
如果模型可以做到
就不要寫(xiě)代碼
模型會(huì)進(jìn)化會(huì)變得更好,但編譯之后代碼不會(huì)。系統(tǒng)設(shè)計(jì)的總目標(biāo),應(yīng)該是利用LLM的規(guī)劃和理解意圖的能力來(lái)構(gòu)建具備杠桿效應(yīng)的應(yīng)用程序。開(kāi)發(fā)者很容易陷入更加命令式的思維模式,并為程序的某些方面編寫(xiě)代碼。要抵制這種誘惑——在您能夠讓模型可靠地執(zhí)行某些操作的程度上,隨著模型的發(fā)展,它將變得更好、更穩(wěn)健。
#2
用精度換取代碼杠桿
用交互來(lái)優(yōu)化
沿著上一原則的思索,編寫(xiě)LLM時(shí)的正確心態(tài)不是“讓我們看看我們能讓跳舞的熊做什么”,而是盡可能地放大AI系統(tǒng)的能力。例如,可以先構(gòu)建非常通用的模式,如“從數(shù)據(jù)庫(kù)生成報(bào)告”或“編寫(xiě)一年的備課目錄”,再使用純文本提示詞進(jìn)行參數(shù)化,輕松地產(chǎn)生極具價(jià)值和差異化的結(jié)果。
#3
代碼用于語(yǔ)法和過(guò)程
模型用于語(yǔ)義和意圖
大模型有很多不同的表述方式,但從根本上說(shuō),當(dāng)模型被要求推理意義和目標(biāo)時(shí),它們更強(qiáng)大。而當(dāng)它們被要求執(zhí)行特定的計(jì)算和過(guò)程時(shí),則變現(xiàn)較弱。舉例而言,高級(jí)模型很容易寫(xiě)出一般性的數(shù)獨(dú)求解代碼,但很難讓它們自己解決數(shù)獨(dú)。每種類(lèi)型的代碼都有不同的優(yōu)勢(shì),因此使用正確類(lèi)型的代碼解決正確類(lèi)型的問(wèn)題非常重要。語(yǔ)法和語(yǔ)義之間的邊界是這些程序的難點(diǎn)。
#4
系統(tǒng)的脆弱程度
取決于其最脆弱的部分
這適用于任何一種代碼。我們正在努力實(shí)現(xiàn)靈活性和高度杠桿效應(yīng),因此謹(jǐn)記別地硬編碼任何東西。盡可能地在提示詞中加入推理和靈活性,并最小化使用命令式代碼,以使LLM發(fā)揮作用。
#5
聰明的問(wèn)題,
才能獲取聰明的答案
新興的LLM AI模型都非常強(qiáng)大,并顯得“受過(guò)良好教育”。但它們?nèi)狈ι舷挛暮椭鲃?dòng)性。如果您向它們提出簡(jiǎn)單或開(kāi)放式問(wèn)題,您將得到簡(jiǎn)單或通用的答案。如果您想要更多細(xì)節(jié)和精細(xì)度,問(wèn)題必須更加智能化——這是“垃圾進(jìn),垃圾出”在人工智能時(shí)代的回聲。
#6
不確定性是異常處理
因?yàn)槲覀冊(cè)谟镁_度換取代碼杠桿,所以當(dāng)模型對(duì)意圖不確定時(shí),我們需要依靠與用戶(hù)的交互來(lái)校正。當(dāng)我們?cè)诔绦蛑杏幸唤M嵌套的提示詞時(shí),并且其中一個(gè)提示詞在其結(jié)果上不確定時(shí)(“一個(gè)可能的方式是...”),正確的做法是等效于“異常處理”(Exception Throw)——將這種不確定性向上傳播,直到能夠澄清或與用戶(hù)交互的級(jí)別。
#7
文本是通用的傳輸協(xié)議
由于LLM善于解析自然語(yǔ)言、意圖以及語(yǔ)義,因此文本是在提示詞、模塊和基于LLM的服務(wù)之間傳遞指令的自然格式。自然語(yǔ)言對(duì)于某些用途來(lái)說(shuō)不夠精確,可以適當(dāng)?shù)厥褂媒Y(jié)構(gòu)化語(yǔ)言,如XML,但總體來(lái)說(shuō),在提示詞之間傳遞自然語(yǔ)言非常有效,并且對(duì)于大多數(shù)用途而言,自然語(yǔ)言比結(jié)構(gòu)化語(yǔ)言更加反脆弱。隨著這些基于模型的程序的不斷增多,這是一種自然的“未來(lái)證明”,可以使不同的提示詞能夠像人類(lèi)一樣相互理解。
#8
對(duì)人類(lèi)來(lái)說(shuō)很難的話(huà)
對(duì)模型一樣難
在給模型一個(gè)具有挑戰(zhàn)性的任務(wù)時(shí),常見(jiàn)的模式是它需要“仔細(xì)思考”。這看起來(lái)很有趣,非常有趣,但是當(dāng)將提示符作為程序的一部分使用時(shí)就會(huì)出現(xiàn)問(wèn)題,因?yàn)樵诔绦蛑兴枰闹皇峭评淼慕Y(jié)果。但是,使用一個(gè)“元”提示,將問(wèn)題和詳細(xì)答案給出,并要求提取答案,這樣做效果相當(dāng)好。
這是一項(xiàng)對(duì)人來(lái)說(shuō)更容易的認(rèn)知任務(wù)(可以想象只需要給某人一個(gè)通用任務(wù):“閱讀這個(gè)并找到答案”,并且在用戶(hù)沒(méi)有專(zhuān)業(yè)知識(shí)的情況下,這項(xiàng)任務(wù)可以在許多領(lǐng)域中完成,因?yàn)樽匀徽Z(yǔ)言非常強(qiáng)大)。因此,在編寫(xiě)程序時(shí),請(qǐng)記住,對(duì)人來(lái)說(shuō)困難的事情很可能對(duì)模型也很困難,將模式分解成更容易的步驟通常會(huì)得到更穩(wěn)定的結(jié)果。
#9
謹(jǐn)防“意識(shí)幻覺(jué)”
模型可以用來(lái)對(duì)抗它自己
我們很容易會(huì)想象LLM里面有一個(gè)所謂“頭腦”。但人類(lèi)思考與模型之間的差異是意義重大的。其中一個(gè)可以被利用的重要區(qū)別是,目前的模型無(wú)法記住幾分鐘前的交互。
因此,雖然我們永遠(yuǎn)不會(huì)要求一個(gè)人在他們剛剛編寫(xiě)的東西中查找漏洞或惡意代碼,但我們可以讓模型這樣做。它可能會(huì)在兩個(gè)地方犯同樣的錯(cuò)誤,但它無(wú)法“欺騙”我們,因?yàn)樗恢来a最初來(lái)自何處。這意味著我們可以在某些地方“利用模型對(duì)抗自己”——它可以用作代碼的安全監(jiān)控器、測(cè)試策略的組成部分、生成內(nèi)容的內(nèi)容過(guò)濾器等。
看完這9大通用性原則,是否對(duì)你的應(yīng)用開(kāi)發(fā)工作有所啟發(fā)?
現(xiàn)在,你還可以更進(jìn)一步,與同儕專(zhuān)家切磋GPT大模型智能應(yīng)用開(kāi)發(fā)模式,并快速上手實(shí)現(xiàn)開(kāi)發(fā)。聯(lián)系您的微軟客戶(hù)經(jīng)理,申請(qǐng)GPT App Innovation Workshop,由專(zhuān)家為您提供進(jìn)一步指導(dǎo)。