歡迎PR & Star,讓更多人了解提示詞工程師
參考視頻課程:ChatGPT Prompt Engineering for Developers
中文字幕搬運:提示詞工程師入門指南【吳恩達】- 企聯AI開源字幕組- 歡迎PR翻譯字幕
實現語言:Python、Golang、NodeJs
語料語言:英文、中文
歡迎大家PR!
資料 | 語料 |
---|---|
教學視頻 | 中✅、英✅ |
Python | 中✅、英✅ |
NodeJS | 中✅、英✅ |
Golang | 中✅、英✅ |
字幕 | 中✅、英✅ |
LLM分成兩個基本大類:Base-LLM和Instruction-Tuned-LLM。
前者是基礎語言模型,基於預訓練數據預測下一個單詞。後者則針對指令進行微調,使其更可能完成人類的指令。
OpenAI的模型中,InstructGPT Models 列出了針對指令優化的模型。表格中也列出了不同的指令微調訓練方法,如SFT、FeedME、PPO等。
編寫指令的準則包括:
清晰和具體,但不一定要短。
使用定界符如"""、```、---、<>、。以防止prompt注入,給LLM產生混亂的理解。
使用結構化輸出,如要求以HTML或JSON格式輸出。
要求檢查:要求LLM先檢查是否滿足某個條件後再進行輸出,如果條件不滿足可以直接告知。
利用少樣本學習,展示一個期望的例子給LLM。
給模型一些思考時間,不要給它過於簡單或困難的問題。
按步驟來解答,設定分隔符,例如使用"Text:<>"來表示文本。
讓模型自己推導出過程,而不僅僅是結果。展示一個帶有解題過程的例子給LLM。
避免模型產生幻覺:要告訴模型先查找相關資料,再根據相關資料來回答問題。 (但模型產生幻覺很難避免,也是目前模型研究領域努力的方向)
編寫Prompt的過程是不斷迭代的。
基本步驟:
編寫Prompt
進行測試,
分析原因
修訂Prompt(澄清思路)
循環上述步驟,直到達到滿意的結果為止。
如果你經營一個電商網站,其中包含大量用戶評論,你可以利用語言模型的"總結(summarize)"和"提取信息(extract)"的能力來簡化你的工作量。
使用LLM,你可以進行一系列的測試,如限製字數、限定主題、關注價格,並嘗試用提取信息的方式替代總結。
你還可以利用一個for循環,使用相同的提示模板來批量處理不同的內容。這樣做可以幫助你更高效地處理大量評論。
如果您想在用戶評論中了解積極反饋和消極反饋的數量,那麼您就需要使用"LLM推理"的能力。
舉例來說,LLM能夠推理用戶的情緒(sentiment),識別情緒類型(比如:happy、satisfied、grateful、impressed、content),提取品牌和商品信息並以JSON格式輸出,還可以同時執行多個任務(例如提取用戶評論中的商品並推理用戶的情緒),推斷主題,並基於推斷的主題設計一個提醒程序等。
因此,在用戶評論中應用"LLM推理"的能力能夠幫助您準確地了解積極反饋和消極反饋的情況。
轉換類應用是一種將一種語言轉換為另一種語言的應用。
例如,通過轉換類應用,可以將一段文字翻譯成另一種語言,識別一段文字所使用的語言,甚至同時將文本翻譯成兩種以上的語言。此外,還可以指定轉換的語氣是正式還是非正式的,指定適用於不同場合的語言,比如商務場合的郵件。轉換類應用不僅限於自然語言的翻譯,還可以進行程序語言的轉換,例如將JSON轉換為HTML。同時,您還可以要求LLM幫助您糾正語法錯誤。
LLM具備將簡短文字擴展並添加修飾以及融入特定語言風格的能力。
在下面的示例中,LLM充當了一個郵件回复助手的角色。您可以要求LLM撰寫一封回复客戶的郵件,並讓它利用客戶來信中的詳細信息,以增加回复的真實感。此外,您還可以通過調整溫度值來使回复顯得不那麼呆板。
通過利用LLM的功能,您可以獲得一封根據客戶來信細節編寫的回复郵件,同時也能根據需要靈活調整回复的語氣。這使得與客戶的郵件溝通更加個性化和真實。
在使用OpenAI API發送消息時,消息中的角色可以包括系統(system)、用戶(user)和助手(assistant)三種角色。
系統角色(system)用於設定全局的風格和限制等信息。
用戶角色(user)表示人類用戶,即發送消息的真實用戶。
助手角色(assistant)表示LLM,即語言模型,在對話中扮演回復和交互的角色。
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # this is the degree of randomness of the model's output
)
return response.choices[0].message["content"]
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # this is the degree of randomness of the model's output
)
return response.choices[0].message["content"] # print(str(response.choices[0].message))
messages = [
{'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'},
{'role':'user', 'content':'tell me a joke'},
{'role':'assistant', 'content':'Why did the chicken cross the road'},
{'role':'user', 'content':'I don't know'} ]
response = get_completion_from_messages(messages, temperature=1)
print(response)
在以下說明中,我們將討論一些原則和能力相關的事項。
一、原則:
指令要求清晰和具體,確保模型明確了解您的要求。
給予模型一些時間進行思考和處理。
二、提示的開發過程是一個持續迭代的過程,需要不斷進行調試和改進。
三、模型具備以下能力:總結、推理、轉換和擴展。這些能力可以在不同的應用場景中發揮作用。