Select Page
如何使用2024年提示詞冠軍的CO-STAR框架優化Prompt

如何使用2024年提示詞冠軍的CO-STAR框架優化Prompt

在人工智慧生成內容的領域,提示詞(Prompt)設計的好壞往往決定了最終結果的質量。隨著語言模型的進步,越來越多的研究者與開發者開始探索更高效的提示詞架構。在新加坡舉辦的一場GPT-4提示詞設計競賽中,Sheila Tao通過CO-STAR的提示詞架構獲得了冠軍。這個架構為設計有效的提示詞提供了一個明確的框架,幫助使用者更精準地引導語言模型生成期望的內容。

CO-STAR框架介紹

CO-STAR是一種設計提示詞結構的模板,包含六個關鍵要素:上下文(Context)、目標(Objective)、風格(Style)、語氣(Tone)、受眾(Audience)和響應(Response)。通過這六個要素的協同作用,使用者可以更好地控制生成的內容,確保其符合特定的需求。

1. 上下文(Context)

上下文是提示詞的基礎,它提供了生成內容的背景資訊。這一部分的設計旨在讓語言模型理解當前任務的情境。上下文可以包括已有的文本、問題的背景描述,或是其他可能影響生成結果的資訊。

範例:如果你要生成一篇關於氣候變遷的文章,可以在上下文中提供相關的背景數據和問題描述,讓模型更好地理解這個主題。

2. 目標(Objective)

目標定義了提示詞的核心需求,即希望模型達成的結果。這部分明確指出你希望生成的內容應該涵蓋哪些主題或回答哪些問題。

範例:你可能會指示模型撰寫一篇關於氣候變遷的教育性文章,目的是讓大眾了解這一問題的嚴重性。

3. 風格(Style)

風格決定了生成內容的表達方式,涵蓋了文本的結構、用詞選擇等方面。不同的風格可能會影響讀者對文本的理解和感受。

範例:你可以指定內容應該以學術性的風格來撰寫,這樣會使得內容更加嚴謹和專業。

4. 語氣(Tone)

語氣影響了文本的情感表達方式,這在塑造讀者的感受方面至關重要。根據內容的不同,語氣可以是正式、非正式、幽默或是嚴肅的。

範例:在撰寫一篇新聞報導時,你可能會要求語氣保持中立和客觀。

5. 受眾(Audience)

受眾是提示詞設計中常被忽視的一個部分,但它至關重要。了解你希望吸引的讀者群體可以幫助你調整提示詞的其他要素,確保生成的內容適合這一群體的需求。

範例:如果你的文章是針對青少年,那麼語言應該更簡單易懂,風格可以更輕鬆。

6. 響應(Response)

響應是提示詞的最終結果,這是你希望模型生成的內容形式。響應可以是段落、清單、對話等多種形式,具體取決於你的需求。

範例:你可能要求模型生成一個包含多個段落的詳細分析,或是提供一個簡單的要點清單。

為什麼CO-STAR框架如此有效?

CO-STAR框架的成功在於它的結構化方法,這使得提示詞設計變得更加精確和有針對性,也就是說你已經抓到了如何當一個好的主管的精隨。當你明確了每個要素,模型能夠更好地理解你的需求,從而生成符合期望的內容。此外,這個框架也能幫助你在提示詞的不同層面上進行調整,進一步優化結果。

舉例來說,如果你對生成的內容不滿意,可能是因為上下文提供的信息不足,或是語氣與目標不符。通過CO-STAR框架,你可以更容易地找出問題所在,並進行相應的調整。

如果還不甚滿意LLM的輸出結果,建議用自己的訓練資料,並且做出關聯圖,讓語言模型好理解,我最常採用 GraphRAG 處理他

CO-STAR 注意事項

使用分隔符:

分隔符幫助語言模型(LLM)區分提示中的不同部分,尤其是指令區塊和數據區塊對於複雜任務尤其重要。

LLM防護網:

這是一種附加的額外提示,用於指示LLM應如何行為,包括任務定義、輸出格式和防護圍欄(防止LLM生成不當內容),例如要求大語言模型用指定語言輸出

使用LLM分析數據集:

不使用插件或代碼,僅採用LLM來分析數據集,這在模式識別任務中特別有用。

猜解複雜的指令:

太過長的文章以及複雜的句型,是需要被理解的,但連人類都很常誤會意思,何況是LLM,所以分割成小塊且清楚的指令才能幫助模型理解和回答

使用CO-STAR框架的示例與對比

為了更好地理解CO-STAR框架的實際應用,我們用一個具體的例子來說明它如何改善提示詞的設計。

假設我們需要生成一篇關於「如何保持工作與生活的平衡」的文章,我們將展示在沒有使用CO-STAR框架和使用後的效果對比。

沒有使用CO-STAR框架的提示詞

在沒有使用CO-STAR框架的情況下,我們可能只會簡單地輸入一個直接的提示詞:

提示詞
“寫一篇關於如何保持工作與生活平衡的文章。”

生成的內容

保持工作與生活平衡是一項挑戰,尤其是在快節奏的現代社會。人們應該設定明確的工作時間,並確保下班後有足夠的休息時間。安排時間進行娛樂活動也很重要,比如運動或與朋友聚會。這有助於減少壓力並提高整體生活質量。

分析: 這篇文章雖然提供了一些基本的建議,但內容過於簡單,沒有考慮到讀者的特定需求或語境,語氣也較為中立,缺乏吸引力,說白了,就是無聊雞肋且廢話太多的一句話,簡稱廢文。

使用CO-STAR框架的提示詞

現在,我們運用CO-STAR框架來重新設計這個提示詞,以提高生成內容的質量。

CO-STAR提示詞

  • Context(上下文):這篇文章將發布在一個專為職場人士設計的IG平台上,主要讀者是希望改善工作與生活平衡的職場中高層管理者。
  • Objective(目標):提供實際且具體的策略,幫助讀者在高壓的工作環境中維持健康的工作與生活平衡。
  • Style(風格):專業且有說服力,引用實際案例和研究數據支持論點。
  • Tone(語氣):積極且鼓勵人心,給予讀者信心去實踐建議。
  • Audience(受眾):中高層管理者,他們時間緊張,承受較大的職場壓力,但希望改善生活質量。
  • Response(響應):生成一篇包含具體步驟和案例的文章,提供可行的建議,幫助讀者實現工作與生活的平衡。

提示詞
“為職場中高層管理者撰寫一篇專業的文章,討論如何在高壓環境下維持工作與生活的平衡。這篇文章應該包括具體的策略和案例研究,並引用最新的研究數據。語氣應積極且鼓勵人心,風格應專業且有說服力。”

建議用格式化過的方法編排提示詞後,再傳給LLM

# Context #
這篇文章將發布在一個專為職場人士設計的IG平台上,主要讀者是希望改善工作與生活平衡的職場中高層管理者。

# Objective #
提供實際且具體的策略,幫助讀者在高壓的工作環境中維持健康的工作與生活平衡。

# Style #
專業且有說服力,引用實際案例和研究數據支持論點。

# Tone #
積極且鼓勵人心,給予讀者信心去實踐建議。

# Audience #
中高層管理者,他們時間緊張,承受較大的職場壓力,但希望改善生活質量。

# Response #
生成一篇包含具體步驟和案例的文章,提供可行的建議,幫助讀者實現工作與生活的平衡。

生成的內容

在現代職場中,中高層管理者往往面臨著巨大的工作壓力,如何在這樣的環境中維持工作與生活的平衡成為一項關鍵挑戰。根據哈佛商學院的最新研究,超過70%的管理者表示,壓力已經嚴重影響了他們的生活質量。為了應對這一問題,我們可以採取以下三個具體策略:

  1. 設立明確的界限:管理者應該為自己設定明確的工作時間和個人時間界限,並嚴格遵守。例如,可以在晚餐後將手機設置為勿擾模式,專注於與家人共度的時光。
  2. 尋求支持系統:建立一個由同事、家人和朋友組成的支持系統,這可以幫助管理者在壓力過大時及時得到情感和實際的支持。
  3. 實行主動管理:制定每週的工作與生活計畫,確保每週都有足夠的時間進行休閒活動,這不僅有助於減輕壓力,還能提高工作效率。

這些策略不僅能幫助管理者更好地平衡工作與生活,還能提升他們的整體生活質量。根據美國心理學會的研究,採取這些策略的管理者在工作滿意度和幸福感上都有顯著提高。

分析: 使用CO-STAR框架後,生成的內容更加具體、針對性強,並且提供了實際可操作的建議。語氣積極鼓勵,風格專業且可信,與中高層管理者的需求高度契合。

對比總結

通過這個示例,我們可以明顯看出CO-STAR框架的優勢,它不僅幫助你設計出更精確的提示詞,還確保了生成的內容更具質量和價值,相比於簡單的提示詞,CO-STAR框架能夠大幅度提升內容的針對性和專業度,使其更能滿足特定受眾的需求,話說,現在的小朋友必學提示詞的技巧,才不會淹沒在浪潮中。

參考資料

https://towardsdatascience.com/how-i-won-singapores-gpt-4-prompt-engineering-competition-34c195a93d41

https://hub.baai.ac.cn/view/37050

延伸閱讀

LivePortrait:蒙娜麗莎笑起來

LivePortrait:蒙娜麗莎笑起來

LivePortrait 是一個先進且有趣的影像生成技術,它不僅讓靜態肖像圖片動起來,變得栩栩如生,還能讓用戶在不同的角色之間進行變換,甚至能做到將一位大叔轉變成美女,美女變會跳舞的效果。這項技術目前在GitHub上獲得了10K顆星的高度關注,顯示了它在開源社群中的受歡迎程度。

什麼是 LivePortrait?

LivePortrait 是一個能夠讓靜態人像圖片進行動畫化的技術。該技術的核心是將人臉動作從一個人像轉移到另一個人像上,從而實現讓靜態圖片「動起來」的效果。與傳統的動畫技術相比,LivePortrait 的計算效率更高,並且生成的影像更加自然、流暢。

主要特點

  1. 縫合與重定位控制:LivePortrait 的關鍵特點之一是它的縫合與重定位控制技術。這讓用戶可以將不同的面部特徵縫合到一個目標人像上,並進行動畫化。例如,將一位大叔的臉與美女的臉部特徵進行結合,然後動畫化,達到讓大叔秒變美女的有趣效果。
  2. 高效的處理能力:這個技術使用了一種高效的算法,能夠在較短的時間內生成高質量的動畫效果,適合用於即時應用或者在線處理需求。
  3. 開源社群的熱烈反響:LivePortrait 的 GitHub 項目自發布以來,已經累積了7.9K顆星,成為了開源社群中的一個熱門項目。這顯示了技術人員與開發者對這項技術的認可與支持。

應用場景

LivePortrait 的應用場景非常廣泛,從娛樂到專業用途都有所涉及。舉例來說,它可以用於製作逼真的動畫表情,為虛擬角色賦予生命,或者在影像特效中實現面部交換等功能。其高度的可定製性也讓它成為許多創意工作者的工具首選。

安裝方法

原始項目網址 https://github.com/KwaiVGI/LivePortrait

安裝程式

git clone https://github.com/KwaiVGI/LivePortrait
cd LivePortrait

# create env using conda
conda create -n LivePortrait python=3.9
conda activate LivePortrait

# 安裝相關依賴
pip install -r requirements.txt

下載預訓練資料

# !pip install -U "huggingface_hub[cli]"
huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"

如果不能存取 Huggingface

# !pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download KwaiVGI/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"

執行視窗

# For Linux and Windows users
python inference.py

# For macOS users with Apple Silicon (Intel is not tested). NOTE: this maybe 20x slower than RTX 4090
PYTORCH_ENABLE_MPS_FALLBACK=1 python inference.py

指令碼

# source input is an image
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4

# source input is a video ✨
python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4

# more options to see
python inference.py -h

超酷的寵物模式

image

先安裝寵物模式

cd src/utils/dependencies/XPose/models/UniPose/ops
python setup.py build install
cd - # equal to cd ../../../../../../../

要使用的時候只需要下

python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching

Huggingface 上使用

https://huggingface.co/spaces/KwaiVGI/LivePortrait

參考資料

將你的Python程式碼改成 web api

現在AI的時代,實在是離不開python,有時候想要快速的驗證程式設計,並且對外服務,給外部的人測試,這時候可以考慮把在 CLI 執行的 python code ,改成 web api,讓外部的人測試看看,改法如下

步驟 1: 安裝 Flask

pip install Flask

步驟 2 : 建立一個 Web APP

可以建立一個名為 webapi.py 的檔案,並且輸入以下程式碼,這樣就可以簡單地把 GraphRAG 的服務對外

from flask import Flask, request, jsonify
import subprocess
import shlex

app = Flask(__name__)

@app.route('/query', methods=['POST'])
def query():
    # 获取请求中的问题
    data = request.json
    question = data.get('question')
    
    if not question:
        return jsonify({'error': 'No question provided'}), 400
    
    # 构建 CLI 命令
    command = f"python -m graphrag.query --root ./ragtest --method local \"{question}\""
    # 安全地处理命令
    args = shlex.split(command)
    
    # 执行命令
    try:
        result = subprocess.run(args, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        response = result.stdout
        # 假设输出中包含 "SUCCESS:" 和我们需要的答案
        if "SUCCESS:" in response:
            answer = response.split("SUCCESS:")[1].strip()  # 取得成功后的文本作为答案
            return jsonify({'answer': answer})
        else:
            return jsonify({'error': 'Failed to get a valid response from the CLI tool'}), 500
    except subprocess.CalledProcessError as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True, port=5000)

步驟 3 : 開啟服務

python webapi.py

步驟 4 : 使用 API

curl -X POST http://localhost:5000/query -H "Content-Type: application/json" -d "{\"question\": \"新修正之勞工特別休假日數有多少?\"}"

延伸閱讀

GraphRAG與我踩過的坑

GraphRAG與我踩過的坑

2024/07 相信 AI 界最火的是 Microsoft 推出的 GraphRAG 了,看起來很簡單,但坑也不少,網路上教學很多,我這邊專門做一集推坑以及救贖的文章

訓練價格過高

用便宜模型 gpt-4o-mini

llm:
  api_key: ${GRAPHRAG_API_KEY}
  type: openai_chat # or azure_openai_chat
  model: gpt-4o-mini
  model_supports_json: true # recommended if this is available for your model.

用 local ollama, vllm, LM Studio

要用 ollama 的話,要先安裝 ollama 的庫

pip install ollama

並且用別人已經改好的程式碼

git clone https://github.com/TheAiSingularity/graphrag-local-ollama.git

執行細節可以看

https://medium.com/@vamshirvk/unlocking-cost-effective-local-model-inference-with-graphrag-and-ollama-d9812cc60466

視覺化模型

請下載 Gephi

打開 settings.yaml 並且找到 snapshots 將 graphml 打開,這樣子在 index 的時候就會幫你生成 .graphml 的檔案,之後就可以用 Gephi 去編輯他

snapshots:
  graphml: true
  raw_entities: true
  top_level_nodes: true

參考資料

GraphRAG Github

https://github.com/microsoft/graphrag

探索免費的設計網站-大量資源與專業模板免費使用-Resourceboy

探索免費的設計網站-大量資源與專業模板免費使用-Resourceboy

Resourceboy提供了免費的設計資源,強大的工具和豐富的資源,讓任何人都能輕鬆創建專業級的設計作品。這些網站的最大特色包括提供大量的免費高清且有質感的圖檔、能夠設計特效文字,以及擁有實用的行業模板

https://resourceboy.com

主要功能

1. 大量的免費高清圖檔

這些網站通常擁有龐大的圖庫,涵蓋了從自然風光到現代建築的各種類型的高清圖片,且都可以免費下載使用。這些高質感的圖檔非常適合用於商業宣傳、社交媒體貼文或任何需要視覺吸引力的項目。

2. 設計特效字

除了基本的文字編輯工具,這些網站還提供了設計特效字的功能,用戶可以選擇不同的字體、顏色和特效來創建獨特的視覺風格。這使得文字不僅傳達信息,更增添了藝術美感。

3. 實用的行業模板

無論是需要設計書本封面、產品包裝還是其他專業文件,用戶都可以在這些網站找到各種行業的模板。這些模板不僅設計精美,還非常實用,可大大縮短設計時間並提升專業度。

延伸閱讀