【GoLang】調用llm時提示詞prompt的介紹以及使用方式

介紹

提示詞是一種與大模型交互的對話格式,它以 JSON 格式定義了一個消息列表(messages),包含了系統消息和用戶消息。

我們向AI提問時,其實發給AI的都是提示詞,別看我們只是簡單輸入了一句話,但大模型內部其實自動幫我們把這句話轉換為提示詞的形式了。

但是我們現在如何手動來設置提示詞呢?請看下文

設置提示詞

總的流程就是:聲明 chatTemplate 表示提示詞模板,聲明?input 用于填充?chatTemplate 模板中的占位符,最終二者結合得到prompt。

package mainimport ("context""fmt""github.com/tmc/langchaingo/llms""github.com/tmc/langchaingo/llms/openai""github.com/tmc/langchaingo/prompts"
)func main() {// 初始化大模型llmllm, _ := openai.New(openai.WithModel("deepseek-reasoner"),openai.WithToken("sk-2c4e9ad917cf48d8ad834dc5b98e7e01"),openai.WithBaseURL("https://api.deepseek.com"),)// 什么提示詞模板chatTemplate := prompts.NewChatPromptTemplate([]prompts.MessageFormatter{prompts.NewSystemMessagePromptTemplate("你是一個有幫助的助手,擅長回答天氣相關問題。", nil),prompts.NewHumanMessagePromptTemplate("{{.greeting}}!今天{{.city}}的天氣怎么樣?", []string{"greeting", "city"}),})// input 用于填充?chatTemplate 模板中的占位符變量input := map[string]interface{}{"greeting": "早上好","city":     "北京",}// 根據模板和變量生成為最終的提示詞prompt, _ := chatTemplate.Format(input)// 通過大模型llm調用APIctx := context.Background()completion, _ := llms.GenerateFromSinglePrompt(ctx,llm,prompt,)// 輸出大模型生成的答復fmt.Println(completion)
}

使用提示詞的好處

好處1.?支持對話上下文

messages 數組允許你提供多輪對話的歷史記錄,模型可以根據之前的消息生成更符合上下文的回復。

"messages": [{"role": "system", "content": "You are a helpful assistant."}, // 開啟對話時生成的{"role": "user", "content": "What is the capital of France?"}, // 用戶生成的{"role": "assistant", "content": "The capital of France is Paris."}, // ai生成的{"role": "user", "content": "What about Spain?"}    // 用戶生成的
]

在這個例子中,模型知道用戶之前問了法國的首都,現在問西班牙的首都,可以直接回答:“The capital of Spain is Madrid.”,而不需要重復澄清。

好處2. 區分角色

通過 role 字段,模型可以區分不同身份(系統、用戶、AI)發送消息,從而采取不同的處理方式。

  • role: "system":設置模型的全局行為或角色,通常只在對話開始時提供一次。
  • role: "user":表示用戶的輸入,模型會直接回應。
  • role: "assistant":表示模型的回復,通常由模型生成,但也可以手動添加以模擬對話歷史。

好處3.?兼容性和標準化

這種 messages 格式是 OpenAI 的 Chat API 標準格式(Chat Completions API),被廣泛采用。

許多 LLM 提供商(如 DeepSeek、Anthropic)都兼容這種格式,因為它已經成為行業標準。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73390.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內核編程十二:打印task_struct中的數據

在Linux內核中,current 是一個宏,用于獲取當前正在執行的進程的 task_struct 結構體指針。current 宏返回一個指向當前正在運行的進程的 task_struct 結構體的指針。通過這個指針,內核代碼可以訪問和修改當前進程的各種屬性和狀態。 打印單個…

區間端點(java)(貪心問題————區間問題)

deepseek給了一種超級簡單的做法 我是真的想不到 貪心的思路是 局部最優——>全局最優 這種我是真的沒有想到,這樣的好處就是后面便利的時候可以通過foreach循環直接便利qu的子元素也就是對應的某一個區間, 將一個二維數組變成一維數組,每一個一維…

Qt事件處理(處理鼠標事件、鍵盤事件、定時器事件、窗口移動和大小變化事件)

事件處理 事件是應用程序內部或者外部產生的事情或者動作的統稱。 在 Qt 中,事件是用一個對象來管理一個事件的。所有的事件對象都繼承自抽象類 QEvent 。事件包括鼠標事件、鍵盤事件等,發出自 Qt 或操作系統本身。 處理事件一般通過重寫相關的 Event 函…

Apache Hive:基于Hadoop的分布式數據倉庫

Apache Hive 是一個基于 Apache Hadoop 構建的開源分布式數據倉庫系統,支持使用 SQL 執行 PB 級大規模數據分析與查詢。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服務用于支持接收客戶端連接和查詢請求。 HiveServer2 支持多客戶端…

利用 @eslint/eslintrc 實現 ESLint9的適配

深度解析:利用 eslint/eslintrc 實現 ESLint 的高效配置管理 在前端開發領域,代碼質量和一致性是至關重要的。ESLint 作為一款流行的代碼檢查工具,幫助開發者發現代碼中的潛在問題并保持代碼風格的一致性。而隨著項目的復雜度增加和團隊規模…

cfca 申請國密證書流程

之前給某銀行開發項目,需要用到cfca國密雙證證書,證書類型為企業雙證的作為接口加密的密鑰。 因為是第一次對接,其中走了不少的彎路,現將申請的流程發布出來做下記錄 1、需要找到cfca的相關人員進行測試證書的申請 2、大概1天的…

基于Spring Boot的鄉村養老服務管理系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

數字孿生技術如何為制造業開辟新天地?

1. 數字孿生在制造業的崛起背景 1.1 數字孿生的概念演進 “數字孿生”(Digital Twin)一詞最早由美國密歇根大學Michael Grieves博士在2002年提出,但當時并未稱之為“數字孿生”,而是以“信息鏡像模型”描述數字世界與物理世界的映射關系。直到2010年前后,美軍、NASA等在…

學一個前端 UI 框架,要學些什么內容?

假如你現在要自學 React/Vue 框架,怎么學? 絕大部分同學可能是這樣學的: 直接去看官方文檔,或者是找一些視頻看一遍,學會這個框架的一些基礎語法,特性功能等等參考一些例子上手編寫 demo,簡單…

asp.net core mvc模塊化開發

razor類庫 新建PluginController using Microsoft.AspNetCore.Mvc;namespace RazorClassLibrary1.Controllers {public class PluginController : Controller{public IActionResult Index(){return View();}} }Views下Plugin下新建Index.cshtml {ViewBag.Title "插件頁…

2024年MathorCup數學建模C題物流網絡分揀中心貨量預測及人員排班解題全過程文檔加程序

2024年第十四屆MathorCup高校數學建模挑戰賽 C題 物流網絡分揀中心貨量預測及人員排班 原題再現: 電商物流網絡在訂單履約中由多個環節組成,圖1是一個簡化的物流網絡示意圖。其中,分揀中心作為網絡的中間環節,需要將包按照不同流…

鴻蒙Flutter開發故事:不,你不需要鴻蒙化

在華為牽頭下,Flutter 鴻蒙化如火如荼進行,當第一次看到一份上百個插件的Excel 列表時,我也感到震驚,排名前 100 的插件赫然在列,這無疑是一次大規模的軍團作戰。 然后,參戰團隊魚龍混雜,難免有…

Unity音頻混合器如何暴露參數

音頻混合器是Unity推薦管理音效混音的工具,那么如何使用代碼對它進行管理呢? 首先我在AudioMixer的Master組中創建了BGM和SFX的分組,你也可以直接用Master沒有問題。 這里我以BGM為例,如果要在代碼中進行使用就需要將參數暴露出去…

Vue項目與云管平臺Nginx部署筆記

Vue項目與云管平臺Nginx部署筆記 一、項目架構說明 footAdmin云管前端 Vue2 Webpack 構建,部署路徑:/usr/share/nginx/html/footAdmin 使用npm run build生成/dist目錄,然后將dist目錄下面的所有文件,上傳到虛擬機/usr/share/n…

java常用數據轉換

1. List與數組互轉 ArrayList<String> list new ArrayList<>(); String[] array list.stream().toArray(String[]::new); String[] array1 {"apple", "banana", "orange"}; List<String> list1 Arrays.stre…

JAVA學習--java數組--打印稀疏數組和稀疏數組的還原

1.題目描述 2.代碼實現 打印二維數組 public class test04 {public static void main(String args[]){//1.創建一個二維數組11*11&#xff0c;0代表沒有棋子&#xff0c;1代表黑&#xff0c;2代表白棋int[][] array1new int[11][11];array1[1][2]1;array1[2][3]2;//輸出原…

Java 標準注解(內置注解+元注解)的詳細說明及使用場景

以下是 Java 標準注解&#xff08;內置注解&#xff09;的詳細說明及使用場景&#xff1a; 1. 核心標準注解 (1) Override 用途&#xff1a;標記一個方法覆蓋父類的方法或實現接口的抽象方法。約束&#xff1a; 若方法未正確覆蓋/實現&#xff0c;編譯器會報錯。不能用于字段…

使用Python調用Jenkins Api之獲取構建日志使用說明文檔

簡介 通過 Python 腳本自動化獲取 Jenkins 構建日志&#xff0c;可以實現日志分析、錯誤監控、報告生成等功能。本文檔將介紹以下方法&#xff1a; Python-Jenkins 庫&#xff1a;官方推薦的 Python 客戶端庫 日志分頁與流式處理&#xff1a;應對大日志文件場景 準備工作 …

Day20-前端Web案例——部門管理

目錄 部門管理1. 前后端分離開發2. 準備工作2.1 創建Vue項目2.2 安裝依賴2.3 精簡項目 3. 頁面布局3.1 介紹3.2 整體布局3.3 左側菜單 4. Vue Router4.1 介紹4.2 入門4.3 案例4.4 首頁制作 5. 部門管理5.1部門列表5.1.1. 基本布局5.1.2 加載數據5.1.3 程序優化 5.2 新增部門5.3…

Android java 設計封裝增強型WebView組件

Android java 設計封裝增強型WebView組件&#xff08;兼容Android 4.4&#xff09; * 特性&#xff1a; * 1. 全生命周期管理 * 2. 智能硬件加速 * 3. 鏈式配置API * 4. 安全下載管理 * 5. 全屏視頻支持 public class EnhancedWebView extends WebView {private CustomWebChrom…