成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超實用!Prompt程序員使用指南,大模型各角色代碼實戰案例

開發 前端 人工智能
提示詞(Prompt)是輸入給大模型(LLM)的文本指令,用于明確地告訴大模型你想要解決的問題或完成的任務,也是大語言模型理解用戶需求并生成準確答案的基礎。因此 prompt 使用的好壞,直接決定了大模型生成結果的質量(是否符合預期)。

提示詞(Prompt)是輸入給大模型(LLM)的文本指令,用于明確地告訴大模型你想要解決的問題或完成的任務,也是大語言模型理解用戶需求并生成準確答案的基礎。因此 prompt 使用的好壞,直接決定了大模型生成結果的質量(是否符合預期)。

圖片圖片

Prompt 基本使用

為了讓大模型生成更符合預期的結果,我們在使用 Prompt 時,可以使用以下模版。

圖片圖片

其內容組成為:

  • 背景:介紹與任務緊密相關的背景信息。這一環節有助于 LLM 深入理解討論的具體環境,從而保證其生成內容與話題高度相關。
  • 目的:明確指出您期望 LLM 完成的具體任務。通過設定清晰、精確的目標指令,可引導 LLM 聚焦于實現既定任務,提升輸出的有效性。
  • 風格:指定您希望 LLM 輸出的寫作風格,可以是某個具體名人、具體流派或者某類專家的寫作風格。
  • 語氣:定義輸出內容應有的語氣,比如正式、詼諧、溫馨、關懷等,以便適應不同的使用場景和使用目的。
  • 受眾:明確指出內容面向的讀者群體,無論是專業人士、入門學習者還是兒童等,這樣 LLM 就能調整語言和內容深度,使之更加貼合受眾需求。
  • 輸出:規定輸出內容的具體形式,確保 LLM 提供的成果能直接滿足后續應用的需求,比如列表、JSON 數據格式、專業分析報告等形式。

以下為阿里云提供的 Prompt 案例:

圖片圖片

在未使用 Prompt 模版時,LLM 輸出雖表現尚可,但顯得過于泛化,缺乏必要的細節和針對特定群體的吸引力。而在使用 Prompt 框架時,框架不僅提醒您考慮需求的其它方面,特別是一般 Prompt 中缺少的風格、語氣和受眾,還幫助 LLM 生成更針對年輕群體、細節更多、語言表達更加富有張力的輸出。

Prompt 優化工具

當然,我們也可以使用一些工具來進行 Prompt 優化,例如阿里云百煉平臺 Prompt 優化工具擴寫等,如下圖所示:

圖片圖片

Prompt 發展演化

從程序的角度來看 Prompt 的發展演化經過了以下幾個階段:

  • 簡單字符串:最初的 Prompt 只是簡單的文本字符串。
  • 占位符:引入占位符(如 {USER})以動態插入內容。
  • 多角色消息:將消息分為不同角色(如用戶、助手、系統等),增強交互的復雜性和上下文感知能力。

Spring AI Prompt 組成

以 Spring AI 中的 Prompt 來看,它的實現源碼如下:

public class Prompt implements ModelRequest<List<Message>> {
    private final List<Message> messages;
    private ChatOptions chatOptions;
}

Prompt 實現了 ModelRequest 接口,并且包含了 messages 和 chatOptions 屬性,其中:

  • messages:包含多個 Message 對象,每個消息代表對話中的一個部分。
  • chatOptions:配置選項,用于設置模型的某些屬性。

Message API 關系圖

Message 對象是 Content 的子類,Spring AI Message API 關系如下圖所示:

圖片圖片

Prompt 角色分類

Prompt 中的主要角色(Role)包括以下幾個:

  • 系統角色(System Role):設定 AI 行為邊界。指導 AI 的行為和響應方式,設置 AI 如何解釋和回復輸入的參數或規則。
  • 用戶角色(User Role):接收用戶原始輸入。代表用戶的輸入他們向 AI 提出的問題、命令或陳述。這個角色至關重要,因為它構成了 AI 響應的基礎。
  • 助手角色(Assistant Role):AI 返回的響應信息,定義為“助手角色”消息。用它可以確保上下文能夠連貫的交互。
  • 工具/功能角色(Tool/Function Role):橋接外部服務,可以進行函數調用如,支付/數據查詢等操作。

角色在 Spring AI 枚舉中被定義,如下源碼所示:

public enum MessageType {
    USER("user"),
    ASSISTANT("assistant"),
    SYSTEM("system"),
    TOOL("tool");
    // .....
}

系統和用戶角色使用

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/prompt")
publicclass PromptController {
    privatefinal ChatClient chatClient;
    public PromptController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }
    @RequestMapping("/system")
    public String system(@RequestParam String city) {
        String result = chatClient.prompt()
        .system("你是一個旅行規劃助手")
        .user(city)
        .call()
        .content();
        System.out.println(result);
        return result;
    }
}

以上程序執行結果如下:

圖片圖片

助手角色使用

AssistantMessage 助手消息類型可用于接收上次執行結果,并實現上下文連續對話,實現代碼如下:

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/prompt")
publicclass PromptController {
    privatefinal ChatClient chatClient;
    //使用集合記錄消息歷史
    List<Message> messages = new ArrayList<>();

    public PromptController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    @RequestMapping("/assistant")
    public String assistant(@RequestParam String msg) {
        messages.add(new UserMessage(msg));
        // 助手消息
        AssistantMessage response = chatClient.prompt()
        .messages(messages)
        .call()
        .chatResponse()
        .getResult()
        .getOutput();
        messages.add(response);
        return response.getText();
    }
}

程序執行結果如下:

圖片圖片

從結果可以看出,第二次交互是在第一次交互的基礎上執行的。

小結

除了 Prompt 以上內容之外,還有 PromptTemplate 以及 Prompt 使用技巧,例如為模型提供輸出樣例、設定完成任務步驟、使用思維鏈(Chain of Thought,COT)引導模型“思考”等具體技巧,咱們后期文章再慢慢聊。


責任編輯:武曉燕 來源: 磊哥和java
相關推薦

2022-12-07 10:21:19

谷歌搜索技巧

2018-04-23 11:00:06

程序員養生健康

2018-01-15 10:38:04

2013-07-04 13:50:14

2015-07-28 17:58:22

程序員指南

2009-06-22 09:06:57

程序員技術升級

2022-04-22 14:05:43

數據庫MongoDBMySQL

2018-09-07 23:38:45

小程序開發框架

2022-09-29 09:07:08

DataGrip數據倉庫數據庫

2015-03-13 09:45:27

2009-11-04 11:41:01

程序員職業感悟軟件開發

2012-02-01 09:30:54

HTML 5

2022-02-16 18:21:33

程序員跳槽架構

2024-12-13 08:02:55

大模型GPT后端

2020-08-06 13:05:10

程序員網頁數據

2018-08-02 17:00:15

Vue.js學習iOS開發

2013-06-28 13:28:09

2012-12-26 12:41:14

Android開發WebView

2010-09-06 14:24:28

ppp authent

2011-07-21 14:57:34

jQuery Mobi
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av激情在线 | 亚洲一区二区三区久久 | 精品www| 日韩久久精品视频 | 激情av | 国产一区 日韩 | 国产亚洲精品美女久久久久久久久久 | 免费日韩网站 | 超碰成人av | 国产亚洲精品精品国产亚洲综合 | 91精品国产91久久久久久密臀 | 狠狠撸在线视频 | 成人国产精品视频 | 久久9精品 | 一区二区视屏 | 香蕉久久a毛片 | 91福利在线观看 | 久久久这里只有17精品 | 精品国产乱码久久久久久蜜臀 | 久久只有精品 | 国产成人精品在线 | 麻豆天堂 | 成人在线精品视频 | 国产一区二区电影 | 色综合美女| 91婷婷韩国欧美一区二区 | 一区不卡在线观看 | 欧美黑人体内she精在线观看 | 五月天国产视频 | 成人a视频在线观看 | 午夜免费在线电影 | 中文字幕在线观看日韩 | 日韩av网址在线观看 | 日日夜夜免费精品视频 | 欧美中国少妇xxx性高请视频 | 亚洲国产高清在线观看 | 久久精品综合网 | 91影片 | 91视频18| 日韩中文字幕久久 | h片在线免费看 |