-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #54 from eepson123tw/feature/gpt-prompt
Feature/gpt prompt
- Loading branch information
Showing
7 changed files
with
262 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,248 @@ | ||
--- | ||
layout: doc | ||
date: 2023-11-05 15:50:37 | ||
description: Prompt、Prompt-engineering、指令魔術師 | ||
title: Prompt 指令魔術師 | ||
--- | ||
|
||
# Prompt 指令魔術師 | ||
|
||
<PageInfo/> | ||
|
||
如果有一個工具可以處理日常的繁重工作,讓我們專注於思考、創造和組織,那麼我們是否能擺脫不斷回想的繁瑣任務,並有更多時間追求我們真正感興趣的事情?在這樣的背景下,我嘗試使用像 `chat-gpt` 這樣的工具,發現了一些能夠幫助我們工作和生活的有用提示。現在,讓我們進一步討論這些提示。 | ||
|
||
## GPT、NLP、LLM 是什麼,奇點接近了嗎? | ||
|
||
`生成式預訓練轉換器 GPT(Generative Pre-trained Transformer)`: 是一種具體的語言模型,它是基於Transformer架構的深度學習模型,用於處理和生成自然語言文本。GPT模型是NLP領域中的一種特定技術,它通過預訓練大量的文本數據來學習語言的結構和語義,然後可以用於各種NLP任務,如文本生成、文本分類、問答等。 | ||
|
||
`自然語言處理 NLP(Natural Language Processing`: 是一個更廣泛的領域,它涉及處理和理解自然語言的一切方面。NLP包括了各種技術和方法,用於處理文本數據,從而使計算機能夠理解、解釋和生成自然語言文本。NLP不僅包括語言模型(如GPT),還包括語音識別、機器翻譯、情感分析、信息擷取、文本分類、對話系統等多種子領域和應用。 | ||
|
||
`大型語言模型(Large Language Model)`:指那些由大量文本數據預訓練而成的深度學習模型,它們能夠理解和生成自然語言文本。 | ||
|
||
`ChatGPT`: ChatGPT 是基於 GPT 的變種,專門設計用於對話和對話式應用。它被優化用於生成自然、流暢的對話,並且可以用於構建聊天機器人、虛擬助手和其他對話系統。 | ||
|
||
> 簡單來說,GPT 是一種語言處理技術,而 ChatGPT 是用於建立更自然對話的一種應用。這些技術都屬於 NLP 領域。 | ||
:::info | ||
GPT(Generative Pre-trained Transformer)的應用: | ||
|
||
- 文本生成:例如,生成文章、故事、詩歌等文本。 | ||
- 問答系統:用於回答關於特定主題的問題。 | ||
- 語言翻譯:將一種語言的文本翻譯成另一種語言。 | ||
|
||
自然語言處理(NLP)的應用: | ||
|
||
- 語音識別:例如,將語音轉換成文本,用於語音助手(如Siri或Google助手)。 | ||
- 情感分析:分析文本中的情感,判斷情感是正面、負面還是中性。 | ||
- 文本分類:將文本分為不同的類別,如新聞分類、垃圾郵件過濾等。 | ||
|
||
大型語言模型的例子: | ||
|
||
- GPT-3:擁有1750億個參數,用於文本生成和多項NLP任務。 | ||
- BERT:用於文本理解,廣泛應用於問答和文本分類。 | ||
- XLNet:自回歸的語言模型,在多項NLP任務中表現出色。 | ||
|
||
::: | ||
|
||
--- | ||
|
||
![singular-point 人類的奇點](/assets/images/gpt/singular-point.png) | ||
|
||
## Prompt 是什麼? | ||
|
||
Prompt(提示詞)是用於指導 GPT 或 LLM(語言模型)生成文本的輸入。它是一個包含了模型所需指令、問題、上下文或示例等信息的文字或句子。 | ||
|
||
Prompt 的目的是引導模型生成特定類型或主題的文本回應。 | ||
|
||
基本 Prompt 應包含以下結構: | ||
|
||
```markdown | ||
|
||
指令:想要模型执行的特定任务或指令。 | ||
|
||
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。 | ||
|
||
输入数据:用户输入的内容或问题。 | ||
|
||
输出指示:指定输出的类型或格式。 | ||
|
||
ex: | ||
我需要你告訴我,蘋果是什麼?我是個大學生,輸出須考量到我的知識量。 | ||
輸出為 markdown 等等。 | ||
|
||
``` | ||
|
||
|
||
### 寫出更好 Prompt | ||
|
||
一個好的 Prompt 需要明確的**引導**、具體的問題或任務、上下文信息、使用關鍵詞以及不斷的測試和調整。這些要點有助於確保模型能夠生成更好的文本內容。 | ||
|
||
:::tip | ||
最重要部分可能是「清晰的引導面向」。需要確保 prompt 提供明確的指示,告訴模型應該生成什麼類型的文本,以及期望的動作或回應。如果引導面向不清晰或模糊,模型可能會產生不符合預期的結果。 | ||
::: | ||
|
||
```markdown | ||
一般描述 | ||
- "蘋果是什麼?" | ||
|
||
``` | ||
|
||
```markdown | ||
加強指示 | ||
- "請描述蘋果的不同品種以及它們的特點和用途。" | ||
``` | ||
|
||
|
||
是否有不一樣的感覺了呢? | ||
|
||
若將 GPT 視為一個可溝通的對象,我們是否也需要清晰的溝通流程呢? | ||
|
||
大概就是這種感覺~ | ||
|
||
若我們更加地加強結構體及描述呢?會不會更接近我們想要的回答? | ||
|
||
```markdown | ||
“請詳細描述蘋果,包括其植物分類、品種、營養價值以及在文化背景中的角色。目標是提供一個全面而易於理解的解釋,適合對植物學和營養學感興趣的普通受眾。” | ||
``` | ||
|
||
讓我們來比較三句 Prompt 的差異,使用 `GPT 3.5 模型` 詢問,是否就有看出差異了呢? | ||
|
||
|
||
![prompt-apple 比較三個 Prompt](/assets/images/gpt/prompt-apple.png) | ||
|
||
:::tip | ||
還能使用下列的指令再去加強,Prompt的結構,達到更好的效果。 | ||
|
||
- 將指令放在提示的開頭,並使用特殊符號(如###或""")來分隔指令和上下文。 | ||
- 在指令中明確所需的上下文、結果、長度、格式和風格。 | ||
- 透過示例明確指出所需的輸出格式,以便於程式化地可靠地解析多個輸出。 | ||
- 針對代碼生成,使用特定的“leading words”來引導模型遵循特定的寫作模式。 | ||
::: | ||
|
||
|
||
|
||
### Prompt 該如何應用 | ||
|
||
Prompt 可以涵蓋可以涵蓋各種主題,例如技術、生活、職業、教育等等。 | ||
|
||
- 教育 | ||
|
||
```markdown | ||
Prompt: 如何在教育領域中更有效地應用創新技術? | ||
``` | ||
|
||
- 信件 | ||
|
||
```markdown | ||
Prompt: 如何寫一封令人難忘的正式信件? | ||
``` | ||
|
||
- 心理輔導 | ||
|
||
```markdown | ||
Prompt: 如何在心理輔導中幫助患者管理壓力和焦慮? | ||
``` | ||
|
||
當然這只是些一般的範例,如果我們針對一些更特殊的情況,寫些 Agent Prompt 協助我們呢? | ||
|
||
- 讀取網頁連結,然後輸出結果,並統整這份報告 | ||
- 貼上信件截圖,並請他依照情境回覆 | ||
- 讀取 PDF EXCEL 等文檔,輸出視覺化的分析圖表 | ||
|
||
若能做到以上這些,是不是能節省並提升我們的時間呢? | ||
|
||
|
||
## 再次提升 Prompt | ||
|
||
提供個讀取網頁連結的 Prompt,`需啟用 GPT 4且網頁允許爬蟲`。 | ||
|
||
```markdown | ||
# Role: Link_Agent 分析機器人 | ||
|
||
## 當前任務描述 | ||
作為 Link_Agent 分析機器人,我的任務是根據用戶提供的網絡連結,進行深入分析並撰寫報告。這包括摘要網頁內容、識別關鍵點、評估信息源的可靠性、進行批判性分析,以及探討相關的問題和機會。 | ||
|
||
## 指令流程 | ||
|
||
1. **開啟連結**:自動使用瀏覽工具開啟提供的連結。 | ||
2. **內容摘要**:撰寫網頁內容的簡要摘要,特別強調對用戶研究或問題陳述的重要部分。 | ||
3. **識別關鍵點**:從文本中識別最少三個關鍵點,若有更多則提出更多要點,這些點對理解主題至關重要。 | ||
4. **評估來源**:檢查來源的可靠性,並提供可靠性評估的簡要說明。 | ||
5. **批判性分析**:對於連結中提出的信息和觀點,進行批判性分析,並與相關領域的已知事實或數據進行對比。 | ||
6. **檢查程式碼或關鍵字**:檢查文本中是否包含程式碼或相關關鍵字。如果存在,需要進一步搜索相關資源並統整,以便加入整合分析。 | ||
7. **問題與機會**:分析文本中提到的問題和機會,並提供對用戶項目或研究的潛在益處的見解。 | ||
|
||
## 整合分析 | ||
|
||
""" | ||
在完成上述步驟後,將所有信息整合,提供一份結構化的結論性報告。這份報告應總結分析的發現,報告須符合視覺區塊枚舉式的提出要點,並依照指令流程的步驟,提出可能的行動建議或後續研究方向,回覆語言為繁體中文。 | ||
""" | ||
``` | ||
|
||
![prompt-link-agent Link_Agent 分析機器人](/assets/images/gpt/prompt-link-agent.png) | ||
|
||
是不是很神奇呢~ | ||
|
||
## 自定義模型及進階技巧 | ||
|
||
還有更多種的 Prompt,例如給與人格特質或是專業技能。 | ||
|
||
- 人物模型 | ||
|
||
```markdown | ||
|
||
- 你是個英文老師,我需要你協助我的英文自傳 XXXX | ||
- 你是個健身高手,建議我訓練菜單 XXXX | ||
|
||
``` | ||
|
||
- 更進階的 Prompt 技巧 | ||
|
||
```markdown | ||
|
||
- 少量樣板題示 (Chain-of-Thought Prompting) | ||
- 思維樹(Tree of Thoughts,ToT) | ||
- 鏈示思考(CoT) | ||
- Prompt 函數 | ||
- 背景、角色、任務、要求等概念組合 | ||
|
||
--- | ||
|
||
# Role: CoT、ToT、RAG和ART Prompt Agent | ||
此角色的任務是與使用者互動,確認其欲探索的對象或主題。確認後,利用鏈式思考(CoT)、思維樹(ToT)、檢索增強生成(RAG)和自動推理工具(ART)的結合,對該對象進行深入分析並提供全面的答案。 | ||
|
||
🔎 請問您想要了解哪個對象或主題? | ||
✅ 確認後,將按照以下結構化prompt進行解析: | ||
|
||
- 🔍 問題:[對象]是什麼? (CoT起始點) | ||
- 📝 定義階段:定義[對象]。 (CoT) | ||
- 🎨 特徵階段:描述[對象]的外觀、口味和質地。 (CoT) | ||
- 🛠️ 用途階段:列出[對象]的可能用途。 (ToT的探索階段) | ||
- 🌱 生長階段:解釋[對象]的生長或製造環境。 (ToT的推理階段) | ||
- 🌟 意義階段:討論[對象]在營養、文化或科學上的意義。 (ToT的評估階段) | ||
- 🔎 檢索增強:進行深入檢索以確保所有信息都是基於最新和最準確的數據。 (RAG概念) | ||
- 🤖 自動推理:利用可用的工具和資源,進行自動推理以提供更深入的分析。 (ART概念) | ||
|
||
結合這些方法,我們將提供一個結構化且深入的回答,涵蓋從基本定義到[對象]在不同領域中的重要性。 | ||
|
||
""" | ||
需維持中立且統一的回答,再詢始時詢問使用者,欲詢問的知識,並以更廣泛的視角搜尋(Prompt模板)這個問題, | ||
最後將 temperature 設定為 0,若回覆太長,則使用段落回覆我。 | ||
|
||
""" | ||
|
||
|
||
--- | ||
|
||
``` | ||
|
||
## Reference | ||
|
||
- [提示工程指南](https://www.promptingguide.ai/zh) | ||
- [best-practices-for-prompt-engineering-with-openai-api](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api) | ||
- [Prompt store](https://github.com/eepson123tw/GPT-Prompts) | ||
|
||
若有其他疑問或是更好建議,可以詢問並留言給我~ | ||
|
||
|
||
<GitTalk/> |