中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

購(gòu)物網(wǎng)站開(kāi)發(fā)面試西安網(wǎng)站seo診斷

購(gòu)物網(wǎng)站開(kāi)發(fā)面試,西安網(wǎng)站seo診斷,品牌策劃案模板范文,北京疫情最新消息2020【LangChain學(xué)習(xí)之旅】—(5) 提示工程(上):用少樣本FewShotTemplate和ExampleSelector創(chuàng)建應(yīng)景文案 提示的結(jié)構(gòu)LangChain 提示模板的類(lèi)型使用 PromptTemplate使用 ChatPromptTemplateFewShot 的思想起源使用 FewShotPr…

【LangChain學(xué)習(xí)之旅】—(5) 提示工程(上):用少樣本FewShotTemplate和ExampleSelector創(chuàng)建應(yīng)景文案

  • 提示的結(jié)構(gòu)
  • LangChain 提示模板的類(lèi)型
  • 使用 PromptTemplate
  • 使用 ChatPromptTemplate
  • FewShot 的思想起源
  • 使用 FewShotPromptTemplate
    • 1. 創(chuàng)建示例樣本
    • 2. 創(chuàng)建提示模板
    • 3. 創(chuàng)建 FewShotPromptTemplate 對(duì)象
    • 4. 調(diào)用大模型創(chuàng)建新文案
  • 使用示例選擇器
  • 總結(jié)

Reference:LangChain 實(shí)戰(zhàn)課

在提示模板的構(gòu)建過(guò)程中加入了 partial_variables,也就是輸出解析器指定的 format_instructions 之后,為什么能夠讓模型生成結(jié)構(gòu)化的輸出?

用 print 語(yǔ)句打印出最終傳遞給大模型的提示

您是一位專(zhuān)業(yè)的鮮花店文案撰寫(xiě)員。
對(duì)于售價(jià)為 50 元的 玫瑰 ,您能提供一個(gè)吸引人的簡(jiǎn)短描述嗎?
The output should be a markdown code snippet formatted in the following schema, including the leading and trailing "```json" and "```":```json
{"description": string  // 鮮花的描述文案"reason": string  // 問(wèn)什么要這樣寫(xiě)這個(gè)文案
}

LangChain 的輸出解析器偷偷的在提示中加了一段話(huà),也就是 {format_instructions} 中的內(nèi)容。這段由 LangChain 自動(dòng)添加的文字,就清楚地指示著我們希望得到什么樣的回答以及回答的具體格式。提示指出,模型需要根據(jù)一個(gè) schema 來(lái)格式化輸出文本,這個(gè) schema 從 json 開(kāi)始,到 結(jié)束。

這就是在告訴模型,你就 follow 這個(gè) schema(schema,可以理解為對(duì)數(shù)據(jù)結(jié)構(gòu)的描述)的格式,就行啦!

這就是一個(gè)很棒、很典型的提示工程。有了這樣清晰的提示,智能程度比較高的模型(比如 GPT3.5 及以上版本),肯定能夠輸出可以被解析的數(shù)據(jù)結(jié)構(gòu),如 JSON 格式的數(shù)據(jù)。

如何利用 LangChain 中的提示模板,做好提示工程。

無(wú)獨(dú)有偶,在 Open AI 的官方文檔 GPT 最佳實(shí)踐中,也給出了和上面這兩大原則一脈相承的 6 大策略。分別是:

  1. 寫(xiě)清晰的指示
  2. 給模型提供參考(也就是示例)
  3. 將復(fù)雜任務(wù)拆分成子任務(wù)
  4. 給 GPT 時(shí)間思考
  5. 使用外部工具
  6. 反復(fù)迭代問(wèn)題

怎么樣,這些原則和策略是不是都是大白話(huà)?這些原則其實(shí)不僅能夠指導(dǎo)大語(yǔ)言模型,也完全能夠指導(dǎo)你的思維過(guò)程,讓你處理問(wèn)題時(shí)的思路更為清晰。所以說(shuō),大模型的思維過(guò)程和我們?nèi)祟?lèi)的思維過(guò)程,還是蠻相通的。

提示的結(jié)構(gòu)

從大原則到實(shí)踐,還是有一些具體工作需要說(shuō)明,下面我們先看一個(gè)實(shí)用的提示框架。

在這里插入圖片描述

在這個(gè)提示框架中:

  • 指令(Instruction)告訴模型這個(gè)任務(wù)大概要做什么、怎么做,比如如何使用提供的外部信息、如何處理查詢(xún)以及如何構(gòu)造輸出。這通常是一個(gè)提示模板中比較固定的部分。一個(gè)常見(jiàn)用例是告訴模型“你是一個(gè)有用的 XX 助手”,這會(huì)讓他更認(rèn)真地對(duì)待自己的角色。
  • 上下文(Context)則充當(dāng)模型的額外知識(shí)來(lái)源。這些信息可以手動(dòng)插入到提示中,通過(guò)矢量數(shù)據(jù)庫(kù)檢索得來(lái),或通過(guò)其他方式(如調(diào)用 API、計(jì)算器等工具)拉入。一個(gè)常見(jiàn)的用例時(shí)是把從向量數(shù)據(jù)庫(kù)查詢(xún)到的知識(shí)作為上下文傳遞給模型。
  • 提示輸入(Prompt Input)通常就是具體的問(wèn)題或者需要大模型做的具體事情,這個(gè)部分和“指令”部分其實(shí)也可以合二為一。但是拆分出來(lái)成為一個(gè)獨(dú)立的組件,就更加結(jié)構(gòu)化,便于復(fù)用模板。這通常是作為變量,在調(diào)用模型之前傳遞給提示模板,以形成具體的提示。
  • 輸出指示器(Output Indicator)標(biāo)記??要生成的文本的開(kāi)始。這就像我們小時(shí)候的數(shù)學(xué)考卷,先寫(xiě)一個(gè)“解”,就代表你要開(kāi)始答題了。如果生成 Python 代碼,可以使用 “import” 向模型表明它必須開(kāi)始編寫(xiě) Python 代碼(因?yàn)榇蠖鄶?shù) Python 腳本以 import 開(kāi)頭)。這部分在我們和 ChatGPT 對(duì)話(huà)時(shí)往往是可有可無(wú)的,當(dāng)然 LangChain 中的代理在構(gòu)建提示模板時(shí),經(jīng)常性的會(huì)用一個(gè)“Thought:”(思考)作為引導(dǎo)詞,指示模型開(kāi)始輸出自己的推理(Reasoning)。

LangChain 提示模板的類(lèi)型

如何使用 LangChain 中的各種提示模板做提示工程,將更優(yōu)質(zhì)的提示輸入大模型。

LangChain 中提供 String(StringPromptTemplate)和 Chat(BaseChatPromptTemplate)兩種基本類(lèi)型的模板,并基于它們構(gòu)建了不同類(lèi)型的提示模板:
在這里插入圖片描述

這些模板的導(dǎo)入方式如下:


from langchain.prompts.prompt import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.pipeline import PipelinePromptTemplate
from langchain.prompts import ChatPromptTemplate
from langchain.prompts import (ChatMessagePromptTemplate,SystemMessagePromptTemplate,AIMessagePromptTemplate,HumanMessagePromptTemplate,
)

我發(fā)現(xiàn)有時(shí)候不指定 .prompts,直接從 LangChain 包也能導(dǎo)入模板。

from langchain import PromptTemplate

下面我們通過(guò)示例來(lái)介紹上面這些模版,前兩個(gè)我們簡(jiǎn)單了解就好,其中最典型的 FewShotPromptTemplate 會(huì)重點(diǎn)講。至于 PipelinePrompt 和自定義模板,使用起來(lái)比較簡(jiǎn)單,請(qǐng)你參考 LangChain 文檔自己學(xué)習(xí)。

使用 PromptTemplate

下面通過(guò)示例簡(jiǎn)單說(shuō)明一下 PromptTemplate 的使用。

from langchain import PromptTemplatetemplate = """\
你是業(yè)務(wù)咨詢(xún)顧問(wèn)。
你給一個(gè)銷(xiāo)售{product}的電商公司,起一個(gè)好的名字?
"""
prompt = PromptTemplate.from_template(template)print(prompt.format(product="鮮花"))

輸出:

你是業(yè)務(wù)咨詢(xún)顧問(wèn)。
你給一個(gè)銷(xiāo)售鮮花的電商公司,起一個(gè)好的名字?

這個(gè)程序的主要功能是生成適用于不同場(chǎng)景的提示,對(duì)用戶(hù)定義的一種產(chǎn)品或服務(wù)提供公司命名建議。

在這里,“你是業(yè)務(wù)咨詢(xún)顧問(wèn)。你給一個(gè)銷(xiāo)售{product}的電商公司,起一個(gè)好的名字?” 就是原始提示模板,其中 {product} 是占位符。

然后通過(guò) PromptTemplate 的 from_template 方法,我們創(chuàng)建了一個(gè)提示模板對(duì)象,并通過(guò) prompt.format 方法將模板中的 {product} 替換為 “鮮花”。

這樣,就得到了一句具體的提示:你是業(yè)務(wù)咨詢(xún)顧問(wèn)。你給一個(gè)銷(xiāo)售鮮花的電商公司,起一個(gè)好的名字?——這就要求大語(yǔ)言模型,要有的放矢。

在上面這個(gè)過(guò)程中,LangChain 中的模板的一個(gè)方便之處是 from_template 方法可以從傳入的字符串中自動(dòng)提取變量名稱(chēng)(如 product),而無(wú)需刻意指定。上面程序中的 product 自動(dòng)成為了 format 方法中的一個(gè)參數(shù)。

當(dāng)然,也可以通過(guò)提示模板類(lèi)的構(gòu)造函數(shù),在創(chuàng)建模板時(shí)手工指定 input_variables,示例如下:

prompt = PromptTemplate(input_variables=["product", "market"], template="你是業(yè)務(wù)咨詢(xún)顧問(wèn)。對(duì)于一個(gè)面向{market}市場(chǎng)的,專(zhuān)注于銷(xiāo)售{product}的公司,你會(huì)推薦哪個(gè)名字?"
)
print(prompt.format(product="鮮花", market="高端"))

輸出:

你是業(yè)務(wù)咨詢(xún)顧問(wèn)。對(duì)于一個(gè)面向高端市場(chǎng)的,專(zhuān)注于銷(xiāo)售鮮花的公司,你會(huì)推薦哪個(gè)名字?

上面的方式直接生成了提示模板,并沒(méi)有通過(guò) from_template 方法從字符串模板中創(chuàng)建提示模板。二者效果是一樣的。

使用 ChatPromptTemplate

對(duì)于 OpenAI 推出的 ChatGPT 這一類(lèi)的聊天模型,LangChain 也提供了一系列的模板,這些模板的不同之處是它們有對(duì)應(yīng)的角色。

下面代碼展示了 OpenAI 的 Chat Model 中的各種消息角色。

import openai
openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Who won the world series in 2020?"},{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},{"role": "user", "content": "Where was it played?"}]
)

OpenAI 對(duì)傳輸?shù)?gpt-3.5-turbo 和 GPT-4 的 messsage 格式說(shuō)明如下:

消息必須是消息對(duì)象的數(shù)組,其中每個(gè)對(duì)象都有一個(gè)角色(系統(tǒng)、用戶(hù)或助理)和內(nèi)容。對(duì)話(huà)可以短至一條消息,也可以來(lái)回多次。

通常,對(duì)話(huà)首先由系統(tǒng)消息格式化,然后是交替的用戶(hù)消息和助理消息。

系統(tǒng)消息有助于設(shè)置助手的行為。例如,你可以修改助手的個(gè)性或提供有關(guān)其在整個(gè)對(duì)話(huà)過(guò)程中應(yīng)如何表現(xiàn)的具體說(shuō)明。但請(qǐng)注意,系統(tǒng)消息是可選的,并且沒(méi)有系統(tǒng)消息的模型的行為可能類(lèi)似于使用通用消息,例如“你是一個(gè)有用的助手”。

用戶(hù)消息提供助理響應(yīng)的請(qǐng)求或評(píng)論。

助理消息存儲(chǔ)以前的助理響應(yīng),但也可以由你編寫(xiě)以給出所需行為的示例。

LangChain 的 ChatPromptTemplate 這一系列的模板,就是跟著這一系列角色而設(shè)計(jì)的。

下面給出一個(gè)示例

# 導(dǎo)入聊天消息類(lèi)模板
from langchain.prompts import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate,
)
# 模板的構(gòu)建
template="你是一位專(zhuān)業(yè)顧問(wèn),負(fù)責(zé)為專(zhuān)注于{product}的公司起名。"
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template="公司主打產(chǎn)品是{product_detail}。"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
prompt_template = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])# 格式化提示消息生成提示
prompt = prompt_template.format_prompt(product="鮮花裝飾", product_detail="創(chuàng)新的鮮花設(shè)計(jì)。").to_messages()# 下面調(diào)用模型,把提示傳入模型,生成結(jié)果
import os
os.environ["OPENAI_API_KEY"] = '你的OpenAI Key'
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI()
result = chat(prompt)
print(result)

輸出:

content='1. 花語(yǔ)創(chuàng)意\n2. 花韻設(shè)計(jì)\n3. 花藝創(chuàng)新\n4. 花漾裝飾\n5. 花語(yǔ)裝點(diǎn)\n6. 花翩翩\n7. 花語(yǔ)之美\n8. 花馥馥\n9. 花語(yǔ)時(shí)尚\(zhòng)n10. 花之魅力' 
additional_kwargs={} 
example=False

FewShot 的思想起源

講完上面兩種簡(jiǎn)單易用的提示模板,下面開(kāi)始介紹今天的重點(diǎn)內(nèi)容,FewShotPromptTemplate。FewShot,也就是少樣本這一概念,是提示工程中非常重要的部分,對(duì)應(yīng)著 OpenAI 提示工程指南中的第 2 條——給模型提供參考(也就是示例)。

講解概念之前,我先分享個(gè)事兒哈,幫助你理解。今天我下樓跑步時(shí),一個(gè)老爺爺教孫子學(xué)騎車(chē),小孩總掌握不了平衡,蹬一兩下就下車(chē)。

  • 爺爺說(shuō):“寶貝,你得有毅力!
  • ”孫子說(shuō):“爺爺,什么是毅力?
  • ”爺爺說(shuō):“你看這個(gè)叔叔,繞著樓跑了 10 多圈了,這就是毅力,你也得至少蹬個(gè) 10 幾趟才能騎起來(lái)?!?/li>

這老爺爺就是給孫子做了一個(gè) One-Shot 學(xué)習(xí)。如果他的孫子第一次聽(tīng)說(shuō)卻上來(lái)就明白什么是毅力,那就神了,這就叫 Zero-Shot,表明這孩子的語(yǔ)言天賦不是一般的高,從知識(shí)積累和當(dāng)前語(yǔ)境中就能夠推知新詞的涵義。有時(shí)候我們把 Zero-Shot 翻譯為“頓悟”,聰明的大模型,某些情況下也是能夠做到的。

Few-Shot(少樣本)、One-Shot(單樣本)和與之對(duì)應(yīng)的 Zero-Shot(零樣本)的概念都起源于機(jī)器學(xué)習(xí)。如何讓機(jī)器學(xué)習(xí)模型在極少量甚至沒(méi)有示例的情況下學(xué)習(xí)到新的概念或類(lèi)別,對(duì)于許多現(xiàn)實(shí)世界的問(wèn)題是非常有價(jià)值的,因?yàn)槲覀兺鶡o(wú)法獲取到大量的標(biāo)簽化數(shù)據(jù)。

這幾個(gè)重要概念并非在某一篇特定的論文中首次提出,而是在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的研究中逐漸形成和發(fā)展的。

  • 對(duì)于 Few-Shot Learning,一個(gè)重要的參考文獻(xiàn)是 2016 年 Vinyals, O. 的論文《小樣本學(xué)習(xí)的匹配網(wǎng)絡(luò)》。
  • 這篇論文提出了一種新的學(xué)習(xí)模型——匹配網(wǎng)絡(luò)(Matching Networks),專(zhuān)門(mén)針對(duì)單樣本學(xué)習(xí)(One-Shot Learning)問(wèn)題設(shè)計(jì),而 One-Shot Learning 可以看作是一種最常見(jiàn)的 Few-Shot 學(xué)習(xí)的情況。
  • 對(duì)于 Zero-Shot Learning,一個(gè)代表性的參考文獻(xiàn)是 Palatucci, M. 在 2009 年提出的《基于語(yǔ)義輸出編碼的零樣本學(xué)習(xí)(Zero-Shot Learning with semantic output codes)》,這篇論文提出了零次學(xué)習(xí)(Zero-Shot Learning)的概念,其中的學(xué)習(xí)系統(tǒng)可以根據(jù)類(lèi)的語(yǔ)義描述來(lái)識(shí)別之前未見(jiàn)過(guò)的類(lèi)。

在提示工程(Prompt Engineering)中,Few-Shot 和 Zero-Shot 學(xué)習(xí)的概念也被廣泛應(yīng)用。

  • 在 Few-Shot 學(xué)習(xí)設(shè)置中,模型會(huì)被給予幾個(gè)示例,以幫助模型理解任務(wù),并生成正確的響應(yīng)。
  • 在 Zero-Shot 學(xué)習(xí)設(shè)置中,模型只根據(jù)任務(wù)的描述生成響應(yīng),不需要任何示例。

而 OpenAI 在介紹 GPT-3 模型的重要論文《Language models are Few-Shot learners(語(yǔ)言模型是少樣本學(xué)習(xí)者)》中,更是直接指出:GPT-3 模型,作為一個(gè)大型的自我監(jiān)督學(xué)習(xí)模型,通過(guò)提升模型規(guī)模,實(shí)現(xiàn)了出色的 Few-Shot 學(xué)習(xí)性能。
在這里插入圖片描述

這篇論文為大語(yǔ)言模型可以進(jìn)行 Few-Shot 學(xué)習(xí)提供了扎實(shí)的理論基礎(chǔ)。

下圖就是 OpenAI 的 GPT-3 論文給出的 GPT-3 在翻譯任務(wù)中,通過(guò) FewShot 提示完成翻譯的例子。

在這里插入圖片描述

以上,就是 ZeroShot、OneShot、FewShot 這些重要概念的起源。

使用 FewShotPromptTemplate

下面,就讓我們來(lái)通過(guò) LangChain 中的 FewShotPromptTemplate 構(gòu)建出最合適的鮮花文案。

1. 創(chuàng)建示例樣本

首先,創(chuàng)建一些示例,作為提示的樣本。其中每個(gè)示例都是一個(gè)字典,其中鍵是輸入變量,值是這些輸入變量的值。

# 1. 創(chuàng)建一些示例
samples = [{"flower_type": "玫瑰","occasion": "愛(ài)情","ad_copy": "玫瑰,浪漫的象征,是你向心愛(ài)的人表達(dá)愛(ài)意的最佳選擇。"},{"flower_type": "康乃馨","occasion": "母親節(jié)","ad_copy": "康乃馨代表著母愛(ài)的純潔與偉大,是母親節(jié)贈(zèng)送給母親的完美禮物。"},{"flower_type": "百合","occasion": "慶祝","ad_copy": "百合象征著純潔與高雅,是你慶祝特殊時(shí)刻的理想選擇。"},{"flower_type": "向日葵","occasion": "鼓勵(lì)","ad_copy": "向日葵象征著堅(jiān)韌和樂(lè)觀,是你鼓勵(lì)親朋好友的最好方式。"}
]

samples 這個(gè)列表,它包含了四個(gè)字典,每個(gè)字典代表了一種花的類(lèi)型、適合的場(chǎng)合,以及對(duì)應(yīng)的廣告文案。 這些示例樣本,就是構(gòu)建 FewShotPrompt 時(shí),作為例子傳遞給模型的參考信息。

2. 創(chuàng)建提示模板

配置一個(gè)提示模板,將一個(gè)示例格式化為字符串。這個(gè)格式化程序應(yīng)該是一個(gè) PromptTemplate 對(duì)象。

# 2. 創(chuàng)建一個(gè)提示模板
from langchain.prompts.prompt import PromptTemplate
template="鮮花類(lèi)型: {flower_type}\n場(chǎng)合: {occasion}\n文案: {ad_copy}"
prompt_sample = PromptTemplate(input_variables=["flower_type", "occasion", "ad_copy"], template=template)
print(prompt_sample.format(**samples[0]))

提示模板的輸出如下:

鮮花類(lèi)型: 玫瑰
場(chǎng)合: 愛(ài)情
文案: 玫瑰,浪漫的象征,是你向心愛(ài)的人表達(dá)愛(ài)意的最佳選擇。

在這個(gè)步驟中,我們創(chuàng)建了一個(gè) PromptTemplate 對(duì)象。這個(gè)對(duì)象是根據(jù)指定的輸入變量和模板字符串來(lái)生成提示的。在這里,輸入變量包括 "flower_type"、"occasion"、"ad_copy",模板是一個(gè)字符串,其中包含了用大括號(hào)包圍的變量名,它們會(huì)被對(duì)應(yīng)的變量值替換。

到這里,我們就把字典中的示例格式轉(zhuǎn)換成了提示模板,可以形成一個(gè)個(gè)具體可用的 LangChain 提示。比如我用 samples[0]中的數(shù)據(jù)替換了模板中的變量,生成了一個(gè)完整的提示。

3. 創(chuàng)建 FewShotPromptTemplate 對(duì)象

然后,通過(guò)使用上一步驟中創(chuàng)建的 prompt_sample,以及 samples 列表中的所有示例, 創(chuàng)建一個(gè) FewShotPromptTemplate 對(duì)象,生成更復(fù)雜的提示。

# 3. 創(chuàng)建一個(gè)FewShotPromptTemplate對(duì)象
from langchain.prompts.few_shot import FewShotPromptTemplate
prompt = FewShotPromptTemplate(examples=samples,example_prompt=prompt_sample,suffix="鮮花類(lèi)型: {flower_type}\n場(chǎng)合: {occasion}",input_variables=["flower_type", "occasion"]
)
print(prompt.format(flower_type="野玫瑰", occasion="愛(ài)情"))

輸出:

鮮花類(lèi)型: 玫瑰
場(chǎng)合: 愛(ài)情
文案: 玫瑰,浪漫的象征,是你向心愛(ài)的人表達(dá)愛(ài)意的最佳選擇。鮮花類(lèi)型: 康乃馨
場(chǎng)合: 母親節(jié)
文案: 康乃馨代表著母愛(ài)的純潔與偉大,是母親節(jié)贈(zèng)送給母親的完美禮物。鮮花類(lèi)型: 百合
場(chǎng)合: 慶祝
文案: 百合象征著純潔與高雅,是你慶祝特殊時(shí)刻的理想選擇。鮮花類(lèi)型: 向日葵
場(chǎng)合: 鼓勵(lì)
文案: 向日葵象征著堅(jiān)韌和樂(lè)觀,是你鼓勵(lì)親朋好友的最好方式。鮮花類(lèi)型: 野玫瑰
場(chǎng)合: 愛(ài)情

可以看到,FewShotPromptTemplate 是一個(gè)更復(fù)雜的提示模板,它包含了多個(gè)示例和一個(gè)提示。這種模板可以使用多個(gè)示例來(lái)指導(dǎo)模型生成對(duì)應(yīng)的輸出。目前我們創(chuàng)建一個(gè)新提示,其中包含了根據(jù)指定的花的類(lèi)型“野玫瑰”和場(chǎng)合“愛(ài)情”。

4. 調(diào)用大模型創(chuàng)建新文案

最后,把這個(gè)對(duì)象輸出給大模型,就可以根據(jù)提示,得到我們所需要的文案了!

# 4. 把提示傳遞給大模型
import os
os.environ["OPENAI_API_KEY"] = '你的Open AI Key'
from langchain.llms import OpenAI
model = OpenAI(model_name='gpt-3.5-turbo-instruct')
result = model(prompt.format(flower_type="野玫瑰", occasion="愛(ài)情"))
print(result)

輸出:

文案: 野玫瑰代表著愛(ài)情的堅(jiān)貞,是你向心愛(ài)的人表達(dá)愛(ài)意的最佳禮物。

好!模型成功地模仿了我們的示例,寫(xiě)出了新文案,從結(jié)構(gòu)到語(yǔ)氣都蠻相似的。

使用示例選擇器

如果我們的示例很多,那么一次性把所有示例發(fā)送給模型是不現(xiàn)實(shí)而且低效的。另外,每次都包含太多的 Token 也會(huì)浪費(fèi)流量(OpenAI 是按照 Token 數(shù)來(lái)收取費(fèi)用)。

LangChain 給我們提供了示例選擇器,來(lái)選擇最合適的樣本。(注意,因?yàn)槭纠x擇器使用向量相似度比較的功能,此處需要安裝向量數(shù)據(jù)庫(kù),這里我使用的是開(kāi)源的 Chroma,你也可以選擇之前用過(guò)的 Qdrant。)

下面,就是使用示例選擇器的示例代碼。

# 5. 使用示例選擇器
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings# 初始化示例選擇器
example_selector = SemanticSimilarityExampleSelector.from_examples(samples,OpenAIEmbeddings(),Chroma,k=1
)# 創(chuàng)建一個(gè)使用示例選擇器的FewShotPromptTemplate對(duì)象
prompt = FewShotPromptTemplate(example_selector=example_selector, example_prompt=prompt_sample, suffix="鮮花類(lèi)型: {flower_type}\n場(chǎng)合: {occasion}", input_variables=["flower_type", "occasion"]
)
print(prompt.format(flower_type="紅玫瑰", occasion="愛(ài)情"))

輸出:

鮮花類(lèi)型: 玫瑰
場(chǎng)合: 愛(ài)情
文案: 玫瑰,浪漫的象征,是你向心愛(ài)的人表達(dá)愛(ài)意的最佳選擇。鮮花類(lèi)型: 紅玫瑰
場(chǎng)合: 愛(ài)情

在這個(gè)步驟中,它首先創(chuàng)建了一個(gè) SemanticSimilarityExampleSelector 對(duì)象,這個(gè)對(duì)象可以根據(jù)語(yǔ)義相似性選擇最相關(guān)的示例。然后,它創(chuàng)建了一個(gè)新的 FewShotPromptTemplate 對(duì)象,這個(gè)對(duì)象使用了上一步創(chuàng)建的選擇器來(lái)選擇最相關(guān)的示例生成提示。

然后,我們又用這個(gè)模板生成了一個(gè)新的提示,因?yàn)槲覀兊奶崾局行枰獎(jiǎng)?chuàng)建的是紅玫瑰的文案,所以,示例選擇器 example_selector 會(huì)根據(jù)語(yǔ)義的相似度(余弦相似度)找到最相似的示例,也就是“玫瑰”,并用這個(gè)示例構(gòu)建了 FewShot 模板。

這樣,我們就避免了把過(guò)多的無(wú)關(guān)模板傳遞給大模型,以節(jié)省 Token 的用量。

總結(jié)

我們介紹了提示工程的原理,幾種提示模板的用法,以及最重要的 FewShot 的思路。其實(shí)說(shuō)白了,就是給模型一些示例做參考,模型才能明白你要什么。

在這里插入圖片描述
總的來(lái)說(shuō),提供示例對(duì)于解決某些任務(wù)至關(guān)重要,通常情況下,FewShot 的方式能夠顯著提高模型回答的質(zhì)量。不過(guò),當(dāng)少樣本提示的效果不佳時(shí),這可能表示模型在任務(wù)上的學(xué)習(xí)不足。在這種情況下,我們建議對(duì)模型進(jìn)行微調(diào)或嘗試更高級(jí)的提示技術(shù)。

http://www.risenshineclean.com/news/8960.html

相關(guān)文章:

  • wordpress果醬二維碼seo課
  • 個(gè)人做的網(wǎng)站搜索引擎優(yōu)化怎么做
  • 平昌縣住房和城鄉(xiāng)建設(shè)局網(wǎng)站如何免費(fèi)搭建自己的網(wǎng)站
  • 行業(yè)網(wǎng)站 cms外包
  • 重慶疫情今日最新消息奶盤(pán)seo偽原創(chuàng)工具
  • 網(wǎng)站制作公司有哪些證網(wǎng)站建設(shè)開(kāi)發(fā)
  • 合作社網(wǎng)站模板search搜索引擎
  • 好的網(wǎng)頁(yè)網(wǎng)站設(shè)計(jì)搜索引擎推廣方案
  • 新手搭建論壇己做網(wǎng)站網(wǎng)絡(luò)銷(xiāo)售怎么做才能做好
  • 百度框架戶(hù)開(kāi)戶(hù)渠道seo建設(shè)招商
  • 門(mén)戶(hù)網(wǎng)站信息發(fā)布管理辦法童程童美少兒編程怎樣收費(fèi)
  • 揭陽(yáng)網(wǎng)站制作建設(shè)免費(fèi)發(fā)布信息的網(wǎng)站平臺(tái)
  • 微信二維碼網(wǎng)站建設(shè)白帽seo是什么
  • 學(xué)校官方網(wǎng)站專(zhuān)業(yè)做網(wǎng)站
  • 云南網(wǎng)站制作案例百度云盤(pán)資源共享鏈接群組鏈接
  • 武漢工程信息網(wǎng)seo入門(mén)教程視頻
  • 網(wǎng)絡(luò)公司的網(wǎng)頁(yè)設(shè)計(jì)圖片優(yōu)化是什么意思
  • 大良商城網(wǎng)站建設(shè)2023疫情最新消息今天
  • 個(gè)人站長(zhǎng)做導(dǎo)航網(wǎng)站百度手機(jī)瀏覽器
  • 網(wǎng)站后臺(tái)后綴名惠州seo代理商
  • 行業(yè)獵頭網(wǎng)seo中文
  • 國(guó)內(nèi)網(wǎng)站賞析社群營(yíng)銷(xiāo)的具體方法
  • dw做網(wǎng)站教程汕頭搜索引擎優(yōu)化服務(wù)
  • 學(xué)習(xí)做網(wǎng)站soso搜搜
  • wordpress 扁平化響應(yīng)式主題谷歌seo課程
  • 建設(shè)外賣(mài)網(wǎng)站規(guī)劃書(shū)網(wǎng)站頁(yè)面布局和樣式設(shè)計(jì)
  • 青島企業(yè)建設(shè)網(wǎng)站企業(yè)電商運(yùn)營(yíng)工資大概多少
  • 類(lèi)似17做網(wǎng)店的網(wǎng)站杭州百度seo
  • 咋么做網(wǎng)站谷歌廣告推廣怎么做
  • 青島市網(wǎng)站建設(shè)公司百度官網(wǎng)認(rèn)證申請(qǐng)