隨著生成式人工智慧技術的蓬勃發展,提示工程的技巧日益重要。本文旨在提供一套有效與生成式 AI 協同工作的實務方法,涵蓋從基礎概念到進階應用的完整。透過學習提示工程的五大原則:清晰明確、具體詳細、合理限制、結構化輸入和迭代最佳化,讀者可以有效提升 AI 模型的輸出品質與可靠性,並將這些技巧應用於產品命名、行銷文案創作、客戶服務自動化等實際場景。本文以 Python 程式碼範例搭配 OpenAI API 說明,引導讀者逐步掌握提示工程的精髓,並鼓勵讀者在虛擬環境中實際操作,以加深理解。

生成式人工智慧的快速發展與提示工程的重要性

生成式人工智慧(Generative AI)正以驚人的速度改變我們的生活和工作方式。近期,人工智慧領域的研究和應用呈現指數級增長,像Stable Diffusion這樣的開源專案迅速崛起,而Midjourney的Discord社群甚至超越了最大的遊戲社群。OpenAI推出的ChatGPT更是創下了史上最快達到1億使用者的消費應用紀錄,僅用了兩個月的時間。這一切都顯示出,學習如何與人工智慧協同工作已經成為當今最受歡迎的技能之一。

提示工程的興起

在專業使用人工智慧的過程中,人們很快發現輸出的品質在很大程度上取決於輸入的品質。於是,「提示工程」(Prompt Engineering)作為一門最佳實踐學科應運而生,旨在提高人工智慧模型的可靠性、效率和準確性。中國科技巨頭百度公司的聯合創始人兼執行長Robin Li甚至預測,未來十年內,全球一半的工作將與提示工程相關。然而,我們更傾向於認為,提示工程將成為許多工作職位所需具備的技能之一,就像熟練使用Microsoft Excel一樣,而非一個獨立的熱門職業。

人工智慧帶來的挑戰

這波人工智慧帶來的變革正在顛覆我們對電腦和程式設計的傳統認知。我們過去習慣編寫每次執行結果都相同的演算法,但人工智慧的輸出卻是非確定性的。成本和延遲再次成為需要考慮的現實因素,因為摩爾定律(Moore’s Law)在過去幾十年中讓我們對即時運算習以為常。如今,生成式人工智慧的最大挑戰之一是其傾向於「幻覺」(hallucination),即自信地編造事實,這迫使我們重新思考如何評估工作的準確性。

本文的目的與原則

自2020年GPT-3測試版推出以來,我們一直在研究和應用生成式人工智慧。隨著模型的進步,我們發現許多早期的提示技巧逐漸變得不再必要。然而,在此過程中,我們總結出了一套跨越文字和影像生成的、持久有效的原則。本文正是根據這些經得起時間考驗的原則編寫而成,旨在幫助讀者掌握可轉移的技能,這些技能在未來五年內都將持續具有價值。

OpenAI的聯合創始人Sam Altman曾表示,與人工智慧協同工作的關鍵不在於「如何透過在提示末尾新增一個神奇詞彙來改變一切」,而在於「創意的品質和對目標的清晰理解」。無論未來是否仍將其稱為「提示工程」,能夠有效地與生成式人工智慧協同工作將變得越來越重要。

本文的軟體需求

本文中的所有程式碼均使用Python編寫,設計為在Jupyter Notebook或Google Colab筆記本中執行。雖然本文主要關注提示技術而非傳統的程式設計技能,但所教授的概念同樣適用於JavaScript或其他程式語言。所有的程式碼都可以在GitHub上找到,我們將在相關章節中提供連結,強烈建議讀者在閱讀本文的同時,利用GitHub倉函式庫執行提供的示例。

對於非筆記本示例,可以在終端中使用python content/chapter_x/script.py的格式執行指令碼,其中x代表章節編號,script.py是指令碼的名稱。在某些情況下,需要將API金鑰設定為環境變數,我們會在相關部分進行說明。由於所使用的套件更新頻繁,因此建議在虛擬環境中安裝我們的requirements.txt檔案後再執行程式碼範例。

requirements.txt檔案是為Python 3.9生成的。如果您希望使用不同版本的Python,可以透過執行以下命令,從GitHub倉函式庫中的requirements.in檔案生成新的requirements.txt

pip install pip-tools
pip-compile requirements.in

設定虛擬環境

Mac使用者:
  1. 開啟終端機應用程式。
  2. 使用cd命令導航至您的專案資料夾,例如:cd path/to/your/project
  3. 使用命令python3 -m venv venv建立名為venv的虛擬環境。
  4. 使用命令source venv/bin/activate啟用虛擬環境。
  5. 在虛擬環境中,使用pip install -r requirements.txt安裝所需的套件。
  6. 完成後,使用deactivate命令離開虛擬環境。
Windows使用者:
  1. 開啟命令提示字元(Command Prompt)。
  2. 使用cd命令導航至您的專案資料夾,例如:cd path\to\your\project
  3. 使用命令python -m venv venv建立名為venv的虛擬環境。
  4. 使用命令.\venv\Scripts\activate啟用虛擬環境。
  5. 在虛擬環境中,使用pip install -r requirements.txt安裝所需的套件。
  6. 完成後,使用deactivate命令離開虛擬環境。

其他設定提示:

  • 請確保您的Python版本是最新的,以避免相容性問題。
  • 在進行專案時,請記得啟用虛擬環境。
  • requirements.txt檔案應與您建立虛擬環境的目錄相同,或者在使用pip install -r時指設定檔案路徑。

本文假設讀者擁有OpenAI開發者帳戶,並且已將OPENAI_API_KEY設定為環境變數,以便執行使用OpenAI函式庫的範例。我們使用的是1.0版本的OpenAI函式庫。有關如何設定開發環境的快速入門,請參閱OpenAI官方網站上的檔案。

此外,為了執行本文中的部分程式碼,您需要在OpenAI帳戶中啟用帳單功能並附加有效的付款方式。本文中的範例預設使用GPT-4模型,不過我們也會簡要介紹Anthropic的Claude3模型,以及Meta的開源Llama3和Google Gemini模型。

程式碼範例與環境變數設定

為了順利執行本文中的程式碼範例,請確保遵循以下步驟:

  1. 安裝必要的套件:在虛擬環境中使用pip install -r requirements.txt命令安裝所需的套件。
  2. 設定API金鑰:將您的OpenAI API金鑰設定為名為OPENAI_API_KEY的環境變數。具體設定方法取決於您的作業系統,可以在相關檔案中查詢。
  3. 啟用OpenAI帳單功能:登入您的OpenAI帳戶,確保帳單功能已啟用並綁定了有效的付款方式。

透過以上步驟,您就可以順利執行本文中的程式碼範例,深入學習生成式人工智慧的相關技術和應用。

import os
import openai

# 設定OpenAI API金鑰
openai.api_key = os.getenv("OPENAI_API_KEY")

# 使用OpenAI API進行簡單的文字生成
response = openai.Completion.create(
    model="gpt-4",
    prompt="請生成一段關於生成式人工智慧的介紹。",
    max_tokens=100
)

print(response.choices[0].text.strip())

內容解密:

上述程式碼展示瞭如何使用OpenAI的API進行簡單的文字生成。首先,我們匯入了必要的osopenai模組,並將OpenAI API金鑰設定為環境變數OPENAI_API_KEY的值。接著,我們呼叫了openai.Completion.create方法,指定使用gpt-4模型,並提供了一個提示(prompt)來生成一段關於生成式人工智慧的介紹。最後,我們列印出了生成的文字內容。

本文的結構與內容安排

本文將分為多個章節,探討生成式人工智慧的技術原理、應用場景、提示工程的最佳實踐,以及如何在實際工作中有效地與人工智慧協同工作。我們將結合具體的程式碼範例和案例分析,幫助讀者更好地理解和掌握相關技能。

無論您是人工智慧領域的研究人員、開發者,還是對生成式人工智慧感興趣的讀者,本文都將為您提供寶貴的知識和實用的技能,幫助您在這個快速發展的領域中保持領先。以下為本文的章節安排與主要內容:

第一章:生成式人工智慧的基礎

  • 技術原理:深入解析生成式人工智慧的核心技術,包括深度學習、神經網路等。
  • 應用場景:介紹生成式人工智慧在不同領域的應用,如自然語言處理、影像生成等。

第二章:提示工程的最佳實踐

  • 提示設計原則:探討如何設計有效的提示,以獲得更高品質的輸出。
  • 案例分析:透過具體的案例,展示提示工程在實際應用中的效果。

第三章:與人工智慧協同工作

  • 協同工作的策略:介紹如何在實際工作中有效地與生成式人工智慧協同工作,提高生產效率。
  • 挑戰與解決方案:討論在使用生成式人工智慧過程中可能遇到的挑戰,並提供相應的解決方案。

生成式人工智慧的提示工程:五大原則與應用

提示工程(Prompt Engineering)是生成式人工智慧(Generative AI)領域中的關鍵技術,旨在設計和最佳化輸入提示(Prompt),以引導 AI 模型產生符合預期的輸出結果。隨著大語言模型(LLM)和擴散模型(Diffusion Model)的快速發展,提示工程成為提升 AI 應用效能的重要手段。

提示工程的基本概念

提示是指使用者與 AI 模型互動時提供的輸入內容,通常是文字指令,用於指導模型生成預期的回應。提示工程的核心目標是發現和設計有效的提示,以提高 AI 模型的輸出品質和可靠性。

五大提示原則

本章將探討提示工程的五大原則,這些原則是設計高效提示的基礎。瞭解並掌握這些原則,可以幫助開發者更好地利用 AI 模型,實作更精準的應用。

原則一:清晰明確

清晰明確的提示能夠減少 AI 模型的理解誤差,提高輸出結果的準確性。

def generate_product_names(prompt):
    # 使用 LLM 生成產品名稱
    response = llm_model.generate(prompt)
    return response

# 清晰明確的提示範例
prompt = "請為一雙可以適應任何腳型的鞋子生成十個產品名稱。"
product_names = generate_product_names(prompt)
print(product_names)

內容解密:

此範例展示瞭如何使用清晰明確的提示來生成產品名稱。透過提供具體的產品特徵描述(如「適應任何腳型」),模型能夠更準確地理解需求並生成相關的名稱。

原則二:具體詳細

具體詳細的提示能夠提供足夠的上下文資訊,幫助 AI 模型更好地理解任務需求。

def generate_marketing_copy(prompt):
    # 使用 LLM 生成行銷文案
    response = llm_model.generate(prompt)
    return response

# 具體詳細的提示範例
prompt = "請為一雙名為 'UniFit' 的鞋子撰寫一段行銷文案,強調其舒適性和適應性。"
marketing_copy = generate_marketing_copy(prompt)
print(marketing_copy)

內容解密:

此範例展示瞭如何使用具體詳細的提示來生成行銷文案。透過提供產品名稱和需要強調的特點,模型能夠生成更具針對性的內容。

原則三:合理限制

在提示中加入合理的限制條件,可以引導 AI 模型生成更符合特定需求的結果。

def generate_product_descriptions(prompt):
    # 使用 LLM 生成產品描述
    response = llm_model.generate(prompt)
    return response

# 包含合理限制的提示範例
prompt = "請為 'UniFit' 鞋子撰寫一段不超過50字的產品描述,重點介紹其主要特點。"
product_description = generate_product_descriptions(prompt)
print(product_description)

內容解密:

此範例展示瞭如何在提示中加入字數限制,以控制輸出的長度。這種限制有助於生成簡潔扼要的產品描述。

原則四:結構化輸入

結構化的提示能夠提供更清晰的指令,有助於 AI 模型理解複雜任務。

def generate_structured_output(prompt):
    # 使用 LLM 生成結構化輸出
    response = llm_model.generate(prompt)
    return response

# 結構化的提示範例
prompt = """
請按照以下格式生成產品資訊:
1. 產品名稱
2. 主要特點
3. 適用場景
"""
structured_output = generate_structured_output(prompt)
print(structured_output)

內容解密:

此範例展示瞭如何使用結構化的提示來生成格式化輸出。透過提供明確的輸出結構,模型能夠生成更具條理性的內容。

原則五:迭代最佳化

提示工程是一個迭代的過程,需要不斷測試和最佳化提示,以獲得最佳的輸出結果。

def optimize_prompt(initial_prompt, iterations=3):
    for i in range(iterations):
        response = llm_model.generate(initial_prompt)
        # 根據輸出結果評估並最佳化提示
        initial_prompt = refine_prompt(initial_prompt, response)
    return initial_prompt

# 初始提示
initial_prompt = "請為一雙舒適的鞋子生成產品名稱。"
optimized_prompt = optimize_prompt(initial_prompt)
print(optimized_prompt)

內容解密:

此範例展示瞭如何透過迭代最佳化提示來獲得更好的輸出結果。透過不斷評估和改進提示內容,可以提高 AI 模型的輸出品質。

提示工程的應用場景

提示工程在多個領域中具有廣泛的應用前景,包括但不限於:

  1. 產品命名與描述生成:利用 AI 模型自動生成創意產品名稱和詳細描述。
  2. 行銷文案創作:根據產品特點和目標受眾,生成具有吸引力的行銷文案。
  3. 客戶服務自動化:設計高效的提示來引導 AI 模型提供準確的客戶服務回應。
  4. 內容創作輔助:利用 AI 模型生成初稿或提供創作靈感,輔助人類創作者。

挑戰與未來發展

儘管提示工程在 AI 應用中展現了巨大的潛力,但仍面臨一些挑戰,如:

  • 提示設計的複雜性:設計有效的提示需要深入瞭解 AI 模型的運作機制和任務需求。
  • 輸出結果的不確定性:AI 模型的輸出結果可能存在變異性,需要透過迭代最佳化來提高穩定性。

未來,隨著 AI 技術的持續進步,提示工程將更加智慧化和自動化,為各行各業帶來更多創新應用。