我是一個自動駕駛行業的產品經理,也是ChatGPT的第一批用戶。第一次遇見ChatGPT是在去年十二月的第一個星期,有一個搞AI的朋友在群里發了一張與ChatGPT的聊天截圖,引起了我的興趣,從此我便一髮不可收拾。 剛開始,我與ChatGPT的交互主要限於找樂子:我和ChatGPT一起寫小說,叫它讀我朋友寫的詩,用它和樓上一大早就開始裝修的鄰居吵架。 △一些關於風水的友好建議 後來,我用它畫流程圖,做數據分析,幫我讀懂技術與代碼,它已經成為了我工作中不可或缺的生產力工具。 △該時序圖的內容生成+繪圖相關工作由chatGPT完成 我也發現了各種使用ChatGPT的技巧,甚至形成了一套可操作,可重復的ChatGPT方法論”BORE”。用這套方法論,每個人都可以成為ChatGPT的進階玩家。 一眼看下去是不是有點複雜?別擔心,後面的文章里,我會為大家講清楚這套方法,並結合例子教會大家它怎麼在工作中發揮ChatGPT的威力,接下來我們就一起開始看看吧 BORE:一套ChatGPT提示設計流程 眾所周知,一個描述不好需求、講話糊裡糊塗的產品會讓程序員痛苦無比,不僅影響程序員的心情,也直接影響產出的質量。從這個角度看,用戶在與ChatGPT的交互中就充分扮演了產品經理「給程序員派活」的角色,寫得稀爛的需求自然只能得到稀爛的回應,而如果「需求」設計得當,ChatGPT會給你超乎期待的驚喜。 △我的大學捨友,一位熱情洋溢的程序員朋友 寫好「需求」是一門技術,在自然語言處理中這門技術其實已經有了自己的名字,我們的輸入被叫做”prompt”,也就是提示。而寫好提示的技術就叫做「prompt engineering」,也就是提示工程。這是一門高度依賴經驗的技術,我在接下來的文章中會總結我的提示工程實踐,教大家如何為這個「程序員」寫好「需求」。我總結的技巧中會包含一些具體的應用場景,幫助大家更好地理解。 講清楚背景,為ChatGPT提供充足信息 在我們告知它之前,ChatGPT對於各種具體的業務場景(背景)所知甚少。講清楚背景是發揮ChatGPT強大能力的關鍵。 應用場景1:乾活前先讓ChatGPT進入角色 「幹線物流自動駕駛「目前在自動駕駛領域是一個很火的方向,那麼現在我們就以這個方向作為例子,假裝自己是一家幹線物流駕駛公司的產品。 來看看應用場景1,由於我們現在假裝自己是一家幹線物流自動駕駛企業的產品,可以在需要chatGPT輔助我工作前先運行這條prompt: “我們公司研發L4級別的自動駕駛卡車系統。我們的車輛擁有一輛L4自動駕駛車輛所需要的算力,傳感器與能力,但是目前車上會有司機作為安全員,自動駕駛系統會輔助司機的駕駛,幫助卡車司機開車更輕鬆,更安全,更節油。我將提供產品經理日常工作中的一些實際問題。這可能涉及設計具體的自動駕駛功能,進行數據分析,分析具體的行駛場景並提供有效的反饋等。你能夠明白這件事嗎?」 這個例子中,我們告訴了ChatGPT宏觀的業務背景,並順便檢驗了prompt的效果。在讀到上面的內容後,ChatGPT就自動代入了自動駕駛產品經理的角色。後文的所有其他例子都是在ChatGPT進入角色的前提下進行的。 我們來詳細拆解這條prompt的設計: 1.闡述背景,點明當前的業務範圍及業務目標:「我們公司研發L4級別的自動駕駛卡車系統。」然後進一步告知當前業務的細節:「我們的車輛擁有一輛L4自動駕駛車輛所需要的算力,傳感器與能力,但是目前車上會有司機作為安全員,自動駕駛系統會輔助司機的駕駛,幫助卡車司機開車更輕鬆,更安全,更節油。」告訴chatGPT大致的任務範圍:「我將提供產品經理日常工作中的一些實際問題。這可能涉及設計具體的自動駕駛功能,進行數據分析,分析具體的行駛場景並提供有效的反饋等。」 2.確定效果,我一般會反問一句它是否理解,以此來檢驗傳達的信息是否清楚,有沒有被正確地理解。 下面是場景1的運行結果: 應用場景2:起草文檔的結構與框架 熟悉了業務,就要開始乾活了。ChatGPT進入角色後,我們來試試讓它提供一個產品試乘報告的框架。我們為ChatGPT提供了「背景」,定義了「任務目標」: “現在,作為一個產品經理,你需要去試乘我司的產品,用敏銳的目光去發現改進點,並提供建議。請為我提供一個試乘體驗報告框架模板,模版要涵蓋產品體驗的不同方面,使用邏輯嚴密,清楚的語言,有優雅,清晰,易於理解的結構。這是一款自動駕駛卡車。這輛卡車上有司機,它將在一條主要是高速的長途貨運路線上裝載貨物運營。” 我們給ChatGPT的prompt可以被拆解成以下的部分 下面是場景2的運行結果: △場景2的運行結果 小作業:ChatGPT非常細心,可以捕捉到微小的細節,所以「寫背景」這件事很重要。不信把場景1中的”我們公司研發L4級別的自動駕駛卡車系統」換成」我們公司研發L4級別的自動駕駛卡車「,再運行場景2試試。 給ChatGPT打績效:定義目標&關鍵結果,試驗並調整 各位在科技公司工作的同學們一定對OKR非常熟悉:這是一個標準績效管理工具,我相信這篇文章的很多讀者都寫過OKR,被OKR打過績效。不過在這裡,我們主要是運用OKR來描述任務目標,管理任務的預期結果,並在任務的目標和期望上與ChatGPT達成共識。 那麼,OKR是什麼呢?我們先來回顧OKR的內容:OKR的英文是Objectives and Key Results,由兩個部分,”Objectives”,任務目標和”Key Result”,關鍵結果組成。定義「任務目標」表達了我們希望實現什麼,而定義「關鍵結果」則讓ChatGPT知道實現目標所需要達成的具體、可衡量的結果。 我們在之前的場景中其實已經為ChatGPT定義了OKR,例如在「應用場景2 起草文檔的結構與框架」里,「提供一個試乘體驗報告框架模板」就是「O」,而”要涵蓋產品體驗的不同方面,使用邏輯嚴密,清楚的語言,有優雅\清晰\易於理解的結構”則可以看做「KR」。 添加細節在ChatGPT的prompting中會起到立竿見影的效果,ChatGPT會對這些小細節做出巨大的反應。例如,有研究人員發現在GPT-3(可以理解為ChatGPT的爸爸)的輸入前加入”Let’s think step by step”,就讓它的推理準確率從17.7%暴增到78.7% [1]。 現在,作為ChatGPT的使用者,各位自然是巴不得它能夠發揮出全部性能,又快又好地出活。既然已經有了順手的胡蘿蔔(OKR),那麼是時候請我們親愛的小毛驢(ChatGPT)拉磨了 △設定了好的目標就是成功了一半 接下來我們看一個具體的例子,更好地理解這種思想與ChatGPT提示工程的結合。 應用場景3:分析具體業務場景 我們來看應用場景3,自動駕駛產品經理在工作中常常要定義各種複雜場景,我們在這個prompt中要求ChatGPT協助我們定義一個簡單的他車激進切入場景: 「在我車在高速上行駛時,常常會有他車從相鄰車道從非常近的距離切入我車車道,造成碰撞風險。請用自然語言描述與定義這個場景。 語言風格:清晰,有邏輯性,可靠,容易使用計算機程序建模。 建模要求:描述清楚事情的過程和時序關係。注意用數字量來定義臨界點。將切入的步驟編好序號。建模要體現兩輛車的交互 我們的自動駕駛車輛被稱為ego,他車被稱為npc。」 在這個例子中,我們在闡述了背景,定義了任務目標的基礎上再給出對任務的詳細要求(也就是key