 提示詞模板 概述)
在 LangChain 中提示詞模板Prompt Template是構(gòu)建大模型應(yīng)用的核心基石。如果把大模型比作一個(gè)“極其聰明但沒有記憶的員工”那么提示詞模板就是一份標(biāo)準(zhǔn)化的“工作指南”。它將用戶的動(dòng)態(tài)輸入與預(yù)設(shè)的指令、上下文、格式要求結(jié)合起來確保大模型能輸出高質(zhì)量、符合預(yù)期的結(jié)果。一、 為什么需要提示詞模板邏輯與數(shù)據(jù)分離你不需要在代碼里硬編碼復(fù)雜的提示語(yǔ)。你可以定義一個(gè)模板只在運(yùn)行時(shí)注入變量如用戶的問題、背景資料。復(fù)用性同一個(gè)任務(wù)如翻譯、總結(jié)的指令可以定義一次多次使用。角色注入輕松為 AI 設(shè)定特定的身份如“資深架構(gòu)師”或“幽默詩(shī)人”。標(biāo)準(zhǔn)化輸出配合前文提到的解析器通過模板告知模型必須以 JSON 或特定格式返回。二、 核心模板類型LangChain 主要提供了兩種模板對(duì)應(yīng)不同的模型接口1. PromptTemplate (普通模板)用于傳統(tǒng)的文本補(bǔ)全模型LLMs它只是一個(gè)簡(jiǎn)單的字符串模板。from langchain.prompts import PromptTemplate # 1. 定義模板字符串使用 {variable} 作為占位符 template 你是一位專業(yè)的{field}教練。請(qǐng)為我制定一個(gè){duration}的訓(xùn)練計(jì)劃。 # 2. 實(shí)例化模板 prompt PromptTemplate( input_variables[field, duration], templatetemplate ) # 3. 填充變量生成最終提示詞 final_prompt prompt.format(field馬拉松, duration三個(gè)月) print(final_prompt) # 輸出: 你是一位專業(yè)的馬拉松教練。請(qǐng)為我制定一個(gè)三個(gè)月的訓(xùn)練計(jì)劃。2. ChatPromptTemplate (對(duì)話模板) ——最常用用于聊天模型ChatModels。它由一組具有不同角色的“消息”組成System, Human, AI。from langchain.prompts import ChatPromptTemplate # 定義多角色對(duì)話模板 chat_template ChatPromptTemplate.from_messages([ (system, 你是一名{language}翻譯官負(fù)責(zé)將用戶輸入的中文翻譯成{language}。), (human, 請(qǐng)翻譯這段話{text}), ]) # 填充變量 messages chat_template.format_messages( language法語(yǔ), text今天天氣真不錯(cuò) ) # 生成的結(jié)果是一組 Message 對(duì)象可直接發(fā)送給 ChatOpenAI 或 Ollama三、 進(jìn)階用法少樣本模板 (Few-Shot Prompting)“少樣本”是指給模型幾個(gè)例子讓它模仿。這在處理復(fù)雜邏輯或特定風(fēng)格時(shí)非常有效。from langchain.prompts import FewShotPromptTemplate, PromptTemplate # 1. 準(zhǔn)備示例 examples [ {input: 開心, output: 像盛開的花朵一樣燦爛}, {input: 難過, output: 像陰雨連綿的深秋一樣蕭索}, ] # 2. 定義示例的格式 example_prompt PromptTemplate( input_variables[input, output], template詞語(yǔ): {input}\n比喻: {output} ) # 3. 構(gòu)建少樣本模板 few_shot_prompt FewShotPromptTemplate( examplesexamples, example_promptexample_prompt, suffix詞語(yǔ): {user_input}\n比喻:, # 后綴即用戶的輸入 input_variables[user_input] ) print(few_shot_prompt.format(user_input孤獨(dú))) # 模型會(huì)模仿之前的風(fēng)格生成關(guān)于“孤獨(dú)”的比喻四、 組合提示詞 (Pipeline Prompt)有時(shí)候提示詞非常復(fù)雜你可能希望把幾個(gè)小模板組合成一個(gè)大模板。場(chǎng)景先設(shè)定身份再引入背景知識(shí)最后提出問題。實(shí)現(xiàn)使用PipelinePromptTemplate由于篇幅此處僅作概念介紹它允許將基礎(chǔ)模板插入到父模板的占位符中。五、 最佳實(shí)踐技巧部分填充 (Partial Formatting) 如果你在程序開始時(shí)就知道某些變量比如當(dāng)前日期而另一些變量比如用戶輸入要等會(huì)兒才知道可以使用partial。partial_prompt prompt.partial(date2024-05-20) # 稍后再填充剩下的變量 final_prompt partial_prompt.format(user_query你好)外部加載 為了保持代碼整潔可以將復(fù)雜的 Prompt 存儲(chǔ)在yaml或json文件中通過 LangChain 加載。LCEL 管道調(diào)用 將模板直接放在鏈的最前端chain chat_template | model | output_parser chain.invoke({language: 英語(yǔ), text: 吃了嗎})總結(jié)提示詞模板不僅僅是字符串拼接它是Prompt 工程的工程化實(shí)現(xiàn)。通過 LangChain 的模板系統(tǒng)你可以結(jié)構(gòu)化地表達(dá)任務(wù)邏輯。動(dòng)態(tài)化地注入實(shí)時(shí)數(shù)據(jù)。模式化地引導(dǎo) AI 模仿特定行為。學(xué)習(xí)資源推薦如果你想更深入地學(xué)習(xí)大模型以下是一些非常有價(jià)值的學(xué)習(xí)資源這些資源將幫助你從不同角度學(xué)習(xí)大模型提升你的實(shí)踐能力。一、全套AGI大模型學(xué)習(xí)路線AI大模型時(shí)代的學(xué)習(xí)之旅從基礎(chǔ)到前沿掌握人工智能的核心技能?因篇幅有限僅展示部分資料需要點(diǎn)擊文章最下方名片即可前往獲取二、640套AI大模型報(bào)告合集這套包含640份報(bào)告的合集涵蓋了AI大模型的理論研究、技術(shù)實(shí)現(xiàn)、行業(yè)應(yīng)用等多個(gè)方面。無論您是科研人員、工程師還是對(duì)AI大模型感興趣的愛好者這套報(bào)告合集都將為您提供寶貴的信息和啟示?因篇幅有限僅展示部分資料需要點(diǎn)擊文章最下方名片即可前往獲取三、AI大模型經(jīng)典PDF籍隨著人工智能技術(shù)的飛速發(fā)展AI大模型已經(jīng)成為了當(dāng)今科技領(lǐng)域的一大熱點(diǎn)。這些大型預(yù)訓(xùn)練模型如GPT-3、BERT、XLNet等以其強(qiáng)大的語(yǔ)言理解和生成能力正在改變我們對(duì)人工智能的認(rèn)識(shí)。 那以下這些PDF籍就是非常不錯(cuò)的學(xué)習(xí)資源。因篇幅有限僅展示部分資料需要點(diǎn)擊文章最下方名片即可前往獲取四、AI大模型商業(yè)化落地方案作為普通人入局大模型時(shí)代需要持續(xù)學(xué)習(xí)和實(shí)踐不斷提高自己的技能和認(rèn)知水平同時(shí)也需要有責(zé)任感和倫理意識(shí)為人工智能的健康發(fā)展貢獻(xiàn)力量。