課程鏈接
https://www.bilibili.com/video/BV1PX9iYQEry/?spm_id_from=333.337.search-card.all.click
一 什么是提示工程
【提示工程】也叫【指令工程】
prompt就是給大模型發的指令,如“給我講個笑話”
懂得提示工程原理會帶來什么優勢
懂得原理
為什么有的指令是有效的,有的指令是無效的
為什么同樣的指令有時候有效,有時候無效
怎么提升指令有效的概率
使用prompt的兩種目的
獲得具體問題的具體結果
如:php是不是世界上最好的語言
固化一套prompt到程序中,成為系統功能的一部分
如:生成本公司的簡報,發送給老板
高質量prompt核心要點
具體,豐富,少歧義
二 prompt的典型構成
如果底層大模型換了,prompt需要重新調優
大模型對prompt開頭和結尾的內容更加敏感,注意重要信息放在開頭和結尾(lost in middle:how language use long context)
prompt的典型構成
- 角色:給ai一個最匹配任務的角色,比如:【你是一個軟件工程師】(大家玩出來的竅門,可以在開頭把問題域收窄,減少二義性)
- 指令:對任務進行描述
- 上下文:給出任務相關的背景知識
- 例子:必要時給出舉例
- 輸入:任務的輸入信息
- 輸出:輸出的格式描述
三 案例展示一個基本的prompt調優過程
某運營商的流量包產品
名稱 | 流量 | 價格 | 適用人群 |
---|---|---|---|
經濟套餐 | 10 | 50 | 無限制 |
暢游套餐 | 100 | 180 | 無限制 |
無限套餐 | 1000 | 300 | 無限制 |
校園套餐 | 200 | 150 | 在校生 |
需求:智能客服根據用戶的資訊,推薦最合適的套餐
核心思路
1、把輸入的自然語言對話,轉化為結構化的表示
2、從結構化的表示,生成策略
3、把策略轉為自然語言輸出
用prompt進行實現
1、先用一個簡單的提取用戶輸入關鍵詞的prompt檢測模型是否能理解需求功能,不能理解考慮換模型
你的任務是識別用戶對于手機流量套餐產品的選擇條件。
每種流量套餐產品包含三個屬性:名稱、月費價格、月流量
根據用戶的輸入,識別用戶在上述三種屬性上的傾向
輸入信息:辦個100g的套餐
輸出:
- 名稱:用戶傾向選擇100g的套餐
- 月費價格:用戶未提及對月費價格的傾向
- 月流量:用戶傾向選擇100g的套餐
2、調整輸出格式,方便后續處理
你的任務是識別用戶對于手機流量套餐產品的選擇條件。
每種流量套餐產品包含三個屬性:名稱(name)、月費價格(price)、月流量(data)
根據用戶的輸入,識別用戶在上述三種屬性上的傾向
以json格式輸出
1.name字段取值為string類型,取值必須為以下之一:經濟套餐,暢游套餐,無限套餐,校園套餐
2.price字段的取值為一個結構體或者null,包含兩個字段:
(1)operator,string類型,取值范圍為'<='(小于等于),'>='(大于等于)
(2)value,int類型
3.data字段取值為結構體或者null,包含兩個字段
(1)operator,string類型,取值范圍為'<='(小于等于),'>='(大于等于)
(2)value,int類型或string類型,string類型只能是’無上限‘
4.用戶意圖可以按照price或data排序,以sort字段標識,取值為一個結構體
(1)結構體以"ordering"="descend"表示降序排序,以”value“字段存儲待排序的字段
(2)結構體以"ordering"="ascend"表示升序排序,以”value“字段存儲待排序的字段
輸出中只包含用戶提及的字段,不要猜測任何用戶沒有直接提及的字段,不輸出值為null的字段
輸入信息:我要個最便宜的套餐
輸出信息:
{“name”:經濟套餐}
小技巧
加No comments,no acknowlengments,可以有效減少模型無效輸出