【極速上手】透過Prompt讓GPT更懂你的需求

Junliu
Aiii
Published in
9 min readJun 9, 2023

讀完讓你家吉娃娃都可以成為 Prompt Engineer!

2023年是人工智能發生巨變與飛躍的一年,自去年圖像生成技術的崛起,至OpenAI 推出革命性的 GPT-4,短短數月之內,AI 的巨浪以驚人的速度席捲全世界,GPT 無疑已成為全球開發者社群的關注焦點。

Photo by Choong Deng Xiang on Unsplash

認識GPT-3.5語言模型

GPT(Generative Pre-trained Transformer)是一種基於自然語言處理技術的對話模型,透過大量的文本訓練和深度學習,學會人類的對話方式,並進行自然流暢的對話。得益於模型中的 Transformer 架構,GPT 能夠處理長文本序列,從而更好地理解上下文和語境,進而生成符合語意和情境的回應。

雖然 GPT-4 在數學處理能力以及邏輯推理方面具有技術性的突破,進一步提高了模型的精準度,但就開發的角度而言,GPT3.5 的 API 價格是 GPT4 的二十分之一(詳見表一),對於大部分日常生活問答的應用來說,GPT3.5 的表現已然足夠優秀,成為了許多開發者首選的語言模型。

表一:各模型 API 成本 (截至2022年5月的價格)

GPT 可以完成哪些任務?

  1. 文本生成:根據給定的語境生成關聯性強的文本。應用範圍廣泛,從回答具體問題,到創作文章、生成新聞報導,甚至是製作詩詞。
  2. 對話助手:作為一種對話助手,GPT 能與人進行自然語言對話,並且具有記憶性,同時提供有用的信息或解答疑難問題。
  3. 語言翻譯:GPT 具備語言翻譯的能力,能夠實現多國語言之間的互譯。
  4. 內容編輯與校對:GPT 能夠檢測出文本中的拼寫和語法錯誤,幫助校對及修訂文本,提供語法修正和風格建議。
  5. 訊息摘要:GPT 能夠從大量訊息中提取要點,並將其總結為簡明而清晰的摘要,以幫助人們迅速地理解內容。

當然,GPT 能夠完成的任務遠不止於此,這邊只是列出了一些最常見的功能。實際上,隨著技術的持續發展,GPT 的應用範疇將會不斷擴大。從創作獨特的文學作品,到解析複雜的數據,再到預測未來趨勢,GPT 無疑具有極大的潛力,能在各種領域中發揮關鍵性的作用。

優化生成結果的五大原則

在 GPT 持續發展的驅動下,開發者們開始探索其在特定場景和任務中的應用。其中,轉化問題為提示語(prompt)微調模型的方法受到了開發者的廣泛歡迎。這種方法可以讓模型更深入地學習和理解特定的任務,進一步提升結果的質量,也就是所謂的”in-context learning”(上下文學習)。

生成文本的品質很大程度上取決於提示語,只要掌握五大原則,你也可以得心應手地運用 GPT!以下會用 ChatGPT 網頁版本的形式提供相關示例。

原則一:角色扮演

GPT 的訓練依賴於其背後龐大的資料庫,因此指定特定的背景或角色特徵可以使 GPT 迅速提取相關信息,從而更有效地產生符合需求的答案。例如,如果你設定了一個外科醫生的角色,GPT 可以提供更專業的知識和反應;如果你想模擬中世紀的環境,GPT 能創造出符合該時代語言和社會情景的對話。在進行角色扮演時,提供角色的背景、行為特徵、當前環境等資訊,可以使其更精確地適應你的設定。

原則二:提供清晰且具體的提示語

許多人常誤解明確的提示等於簡短,然而在許多情況下,較長的提示反而能提供更清晰的上下文,當模型回答問題或產生文本時,它會參考提示中的所有資訊(包含原則一提到的背景和角色設定)。因此,較詳盡的提示可能會引導出更詳細的回答。比如,你可以問「假設你是一位資深的行銷人員,請說明如何利用LINE平台進行有效的數位行銷,並提出五個具體的策略。」,而非僅問「如何在LINE上做行銷?」。這樣的問題設定會提供更多上下文,有助於模型產出更精準的答案。

原則三:逐步拆解問題

如果你有一個複雜的任務需要多個步驟來進行回答,可以嘗試將問題分成幾個步驟,並逐步詢問模型。透過逐步拆解優化的 Prompt,有助於 GPT 更有邏輯地處理問題,而非僅僅蒙對了結果。這樣的逐步拆解問題方法有助於提高 GPT 在正確性方面的準確度。

以「如何制定一個成功的數位行銷策略?」為例,可以將問題拆解為以下幾個部分:

步驟1:詢問「什麼是數位行銷策略的基本元素?」

步驟2:在得到步驟1的答案後,可以接著了解「如何確定目標市場並理解他們的需求和行為?」

步驟3:進一步詢問 「如何選擇合適的數位行銷渠道來接觸目標市場?」

步驟4:在了解渠道後,我們可以問 「如何製定和優化數位行銷內容來吸引和保留目標市場?」

步驟5:最後,我們可以詢問 「如何進行數位行銷的效果評估和調整?」

透過這樣的逐步詢問,我們可以從大範疇的問題中,得到更詳細、更具操作性的答案。同時,也可以讓模型更好地理解問題,並提供更準確的回答。

原則四:善用分隔符號

使用分隔符號可以區隔你希望模型識別的文本和其他提示,幫助模型清楚辨識不同的輸入部分。常見的分隔符號有「」、<>、```等,能有效地標註出獨立的段落。此外,使用分隔符號也是一種防止「提示注入」(prompt injection)的實用技術,我們可以使用分隔符號來確定指令的邊界,防止指令被惡意修改。

什麼是 Prompt Injection?
該現象是指用戶在指令中加入某些特殊輸入,可能導致模型的回答偏離預期。具體來說,模型可能會根據這些新增的、與原始目標產生衝突的指令進行操作,而不是依照用戶原本希望的方式執行。在這種情況下,你的原意可能被輸入中的其他指令所覆蓋。

Prompt Injection 示例

惡意使用者會透過 Prompt Injection 的方式獲得你的提示語,對於公司行號的開發者來說,可能會造成內部的機密洩漏,不可不防!

原則五:提供範例

範例可以引導模型理解特定任務的要求,並學習適當的語言風格與回答格式。透過提供一些具體的示例,模型可以根據這些情境適應不同的任務,以達到一致與準確的表現,實現少數示例學習(Few-Shot Learning)。

在這個示例中,我們向模型說明了如何用一致的邏輯回答問題。模型透過這種方式理解詞語之間的關係,而非直接解釋概念。因此,當我們提出下一個詞語,如「超商」,模型就會以相同的邏輯回答「店員」。

程式碼實作

最後,讓我們實際以程式碼來進行實作吧!

首先,先到OpenAI官網申請一組屬於你的金鑰,在串接程式碼的時候會用到。接著安裝OpenAI套件後就可以開始建置屬於你的機器人囉!

API 提供三種自訂角色,system 通常指的是特定的對話情景或是讓機器人進行角色扮演; assistant 代表的是 AI 機器人的回覆,具體來說是在網頁版本中自動回話的機器端回話;而 user 指的是提問者,對應網頁版本指的是在電腦前鍵入對話的使用者。

import openai

openai.api_key = f'此處貼上你自己的API KEY'
prompt = """"
你的提示語內容
"""

response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt},
],
temperature=0,
)

model:指定語言模型,除了 gpt-3.5-turbo 外,gpt-4 或是 text-davinci-003 都是常用的模型。
message:訊息參數,每個 object 包含角色和內容。在 content 的部分,可以使用上面提及的技巧生成更完整的提示語。
temperature:介於0~2之間,越高的值表示產出結果越隨機。
max_tokens:完成時生成結果的最大 tokens 數。gpt-3.5-turbo 模型的限制是 4096 個 tokens(中文一個字約 2~3 個 tokens )。

最後解析回覆結果:

response['choices'][0]['message']['content']

客製化機器人

然而,面對實際應用場景,我們時常遇到挑戰:如何導入特定的公司規格書或個人文件內容到機器人的回覆中,以滿足客戶對特定問題的解答需求。為實現此目標,我們須研究如何突破 GPT 的最大 tokens 數限制,讓機器人能更深入地學習並適應個別的文件。

如果您有進一步的興趣或討論,歡迎參考以下文章,我們將提供最適合您的解決方案。

關於 Prompt 的介紹到此結束!感謝您的閱讀,如果這篇文章對您有點幫助,希望不吝於您的掌聲(歡迎長按拍手連擊50下~)這將是筆者最大的動力。如果您有任何疑問或想法,也非常歡迎您在留言區和我們分享。

--

--

Junliu
Aiii
Writer for

吉娃娃狂熱份子。沒有一隻吉娃娃解決不了的事,如果有,那就兩隻。