【中文完整版全9集】第1集 引入-ChatGPT提示詞工程師教程 吳恩達(dá)xOpenAI官方
【OpenAI官方 | 中文完整版】 吳恩達(dá)ChatGPT提示工程師初級(jí)到高級(jí)(AI大神吳恩達(dá)教你寫提示詞)
ChatGPT Prompt Engineering for Development
基礎(chǔ)大語(yǔ)言模型和指令精調(diào)大語(yǔ)言模型的區(qū)別:
指令精調(diào)大語(yǔ)言模型經(jīng)過(guò)遵從指令的訓(xùn)練,即通過(guò)RLHF(基于人類反饋的強(qiáng)化學(xué)習(xí))方式在指令上精調(diào)過(guò),因而更加有幫助,更加真誠(chéng),更不可能產(chǎn)生有害輸出。
Two principle (兩大原則)
- Write clear and specific instructions
- give the model time to think
編寫清晰且明確的指令
clear不等于short,比較長(zhǎng)的指令有可能時(shí)更加清晰的。
Tactic 1: Use delimiters(使用分隔符)
Triple quotes: “”"
Triple backtick ```
Triple dashes: —
Angle brackets: <>
XML tags:
使用分隔符可以防止指令注入,即誤把目標(biāo)文本中的指令識(shí)別為指令,下圖為例:
Tactic 2: Ask for structure output (尋求格式化輸出)
HTML, JSON
可以在提示詞中指定模型按照json或者HTML的格式輸出,json格式無(wú)論在前后端處理起來(lái)都很方便
Tactic 3: Check Whether conditions are satisfied(檢查必要條件是否滿足)
Check assumptions required to do the task
必要條件無(wú)法滿足時(shí),可指令模型提前終止,這樣可以避免無(wú)效輸出,并可以節(jié)省計(jì)算資源。
Tactic 4: Few-shot prompting (少樣本提示)
Given successful examples of completing tasks. Then ask model to perform the task.
給模型成功執(zhí)行任務(wù)的示例,讓模型照做。
give the model time to think(給與模型足夠時(shí)間思考)
實(shí)際上通過(guò)在提示詞內(nèi)添加一個(gè)邏輯步驟作為引導(dǎo),讓模型運(yùn)用自己的推理能力得到更準(zhǔn)確的答案。
Tactic 1: Specify the steps to complete a task(指定完成任務(wù)的詳細(xì)步驟)
Step1: …
Step2: …
…
Step N: …
Tactic 2: Intruct the model to work out its own solution before rushing to a conclusion (判別任務(wù)可以讓模型先思考解決方案再以解決方案為依據(jù)進(jìn)行判別)
判定學(xué)生回答是否正確場(chǎng)景下,先讓模型自己回答問(wèn)題,進(jìn)而讓模型比較學(xué)生回答和自己回答是否一致,以推斷學(xué)生回答是否正確
Model Limitations
Hallucination (幻覺現(xiàn)象)
Makes statements that sound plausible but are not true.
做出看上去合理的回復(fù)但是不是真實(shí)的。
Reducing Hallucinations:
First find relevant information, then answer the question based on th relevant information.
通過(guò)首先尋找相關(guān)信息,再做出解答,有助于減輕幻覺現(xiàn)象
提示詞迭代開發(fā)流程
提示詞指引:
- 清晰明確
- 分析導(dǎo)致沒有拿到預(yù)期輸出的原因
- 優(yōu)化思路和提示詞
- 重復(fù)迭代
通過(guò)限定字?jǐn)?shù)讓模型輸出更加簡(jiǎn)短,如下:
也可以替換為Use at most 3 sentence、Use at most 280 characters。
通過(guò)指定場(chǎng)景讓模型切換視角,提示模型在文本末尾加上一些特殊說(shuō)明,如下:
提示模型輸出HTML代碼(這個(gè)有點(diǎn)秀)
提示詞工程師要具備一個(gè)良好的迭代流程來(lái)產(chǎn)出更好的提示詞。
Abstracting 摘要
可以指定摘要的用途使得它強(qiáng)調(diào)某一部分信息:
可以提示模型提取部分信息,而不是生成全文摘要:
可以使用for循環(huán)調(diào)用批量處理:
Reasoning 推理
大語(yǔ)言模型的一個(gè)優(yōu)勢(shì)是端到端應(yīng)用,而不是pipeline流程應(yīng)用,后者將一個(gè)任務(wù)拆分為幾個(gè)子任務(wù)完成,比較繁瑣,而且存在錯(cuò)誤傳播現(xiàn)象。
情感分類
可以通過(guò)限定模型輸出來(lái)指定標(biāo)簽,相當(dāng)于是做分類了:
提取評(píng)論者的情感傾向關(guān)鍵詞(這個(gè)有點(diǎn)厲害,傳統(tǒng)的情感分類很難做到):
判別評(píng)論者是否存在某種情緒:
提取關(guān)鍵信息,直接輸出JSON(這才是真正的自然語(yǔ)言處理,有比較現(xiàn)實(shí)的應(yīng)用場(chǎng)景),
一個(gè)提示詞獲取多維度信息:
通過(guò)提示詞提取topic:
檢測(cè)特定topic觸發(fā)事件,是一個(gè)實(shí)際應(yīng)用場(chǎng)景示例:
transforming 轉(zhuǎn)換
- 翻譯
- 語(yǔ)法、拼寫糾錯(cuò)
翻譯任務(wù)
LLM由從互聯(lián)網(wǎng)收集來(lái)的海量數(shù)據(jù)訓(xùn)練,可以用來(lái)作翻譯,知道數(shù)百種語(yǔ)言,但熟悉程度不一樣(語(yǔ)料庫(kù)內(nèi)哪種語(yǔ)言的語(yǔ)料越多,越熟悉哪種語(yǔ)言)
語(yǔ)言分類(識(shí)別語(yǔ)言種類):
同時(shí)翻譯多種語(yǔ)言:
以不同的語(yǔ)言風(fēng)格進(jìn)行翻譯,例子是正式場(chǎng)合用語(yǔ)和非正式場(chǎng)合用語(yǔ)
多項(xiàng)任務(wù)寫在一個(gè)提示詞內(nèi)一并輸出:
以不同語(yǔ)氣(tone)進(jìn)行翻譯:
格式轉(zhuǎn)換(JSON、HTML、Markdown):
語(yǔ)法、拼寫糾錯(cuò):
通過(guò)詳細(xì)指定提示詞可以獲取更多信息:
使用Python的readline
包可以可視化校對(duì)前和校對(duì)后的差異:
按某種格式進(jìn)行修正:
Expanding 文本擴(kuò)展
情感分類(sentiment)的最終目標(biāo)其實(shí)就是想提取對(duì)話人的情緒狀態(tài),進(jìn)行決定對(duì)話的語(yǔ)言風(fēng)格和方向。以往都是pipeline結(jié)構(gòu),有了大模型之后可以端到端進(jìn)行。
Temperature 溫度
temperature是一個(gè)新定義的變量,用來(lái)指定模型的探索程度或者隨機(jī)性,通過(guò)調(diào)整Temperature可以獲得多樣化的輸出。
筆者注:從示例看其實(shí)是一個(gè)分類的閾值。
如果希望使用GPT構(gòu)建一個(gè)輸出可靠,可預(yù)期的系統(tǒng),建議使用tempareture = 0
,因?yàn)檫@樣模型輸出是固定的。
如果希望GPT構(gòu)建有一個(gè)更有具創(chuàng)造性的輸出,建議使用數(shù)值更大的tempareture
,模型有更多選擇,模型輸出不固定。
ChatBot 聊天機(jī)器人
Open AI API調(diào)用過(guò)程:
角色劃分
- 系統(tǒng) (應(yīng)用本身)
通過(guò)提示詞指定模型的角色,或者說(shuō)指定了對(duì)話的場(chǎng)景,進(jìn)而控制對(duì)話生成的語(yǔ)氣、風(fēng)格),對(duì)用戶屏蔽。 - 用戶 (對(duì)話對(duì)象)
- 助手 (模型本身)
幫助函數(shù)get_completion_from_messages
將返回的messages中的content字段透?jìng)鞒鰜?lái):
例子:
例子:
上面的例子表明,與模型的每一次對(duì)話都是獨(dú)立交互。如果希望模型記住上下文信息,需要將之前的對(duì)話作為輸入喂給模型:
多輪對(duì)話其實(shí)是通過(guò)不斷收集對(duì)話的上下文作為新一輪對(duì)話的輸入進(jìn)行的,這有一個(gè)潛在問(wèn)題是,模型的輸入會(huì)越來(lái)越長(zhǎng)。
引入panel
庫(kù)展示對(duì)話UI:
System提示詞非常詳細(xì),指引了對(duì)話的核心方向,即需要從用戶哪里收集哪些信息,這其實(shí)是前面講過(guò)的give model time to think原則。
在context中指定了菜單信息(context是隨著對(duì)話過(guò)程不斷增長(zhǎng)的)
指示模型將訂單信息以JSON個(gè)數(shù)輸出:
注:對(duì)話過(guò)程中使用了數(shù)值比較大的tempareture
,但這一步需要使用tempareture=0
,因?yàn)橄到y(tǒng)后面(可能會(huì)使用這個(gè)JSON信息例:提交到訂單系統(tǒng)),下游使用的信息應(yīng)當(dāng)是固定的,否則你開發(fā)出來(lái)的系統(tǒng)行為不可預(yù)測(cè)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-492266.html
總結(jié)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-492266.html
到了這里,關(guān)于給開發(fā)者的ChatGPT提示詞工程指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!