SpringBoot集成大模型应用开发企业级项目--【篇六:SpringBoot中添加提示词Prompt】

153 阅读2分钟

六、提示词 Prompt

1、系统提示词

@SystemMessage 设定角色,塑造AI助手的专业身份,明确助手的能力范围

1.1、配置 @SystemMessage

示例如下:

public interface SeparateChatAssistant {
​
    /**
     * 隔离聊天记忆功能
     *
     * @param memoryId 聊天ID
     * @param message  用户信息
     */
//    @SystemMessage("你是我的好朋友,请用东北话回答问题。今天是{{current_date}}") // 系统消息提示词 prompt
    @SystemMessage(fromResource = "my-prompt-template.txt")
    // 系统消息提示词 prompt 模版配置
    String chat(@MemoryId int memoryId, @UserMessage String message);
​
​
    @UserMessage("你是我的好朋友,请用上海话回答问题。今天是{{message}}")
    String chat2(@MemoryId int memoryId, @V("message") String message);
​
    @SystemMessage(fromResource = "my-prompt-template3.txt")
    String chat3(
            @MemoryId int memoryId,
            @UserMessage String userMessage,
            @V("userName") String userName,
            @V("age") int age
    );
}

详解:

 @SystemMessage 的内容将在后台转换为 SystemMessage对象,并与 UserMessage 一起发送给大语言模型(LLM)
SystemMessaged 的内容只会发送给大模型一次,如果你修改了 SystemMessage 的内容,新的 SystemMessage 会被发送给大模型,之前的聊天记忆会失效。
​
如果要显示今天的日期,我们需要在提示词当中添加当前日期的占位符 {{current_date}}
@SystemMessage(fromResource = "my-prompt-template.txt")
这个相当于是从资源中加载提示词模版

2、用户提示词

@UserMessage 获取用户输入

2.1、配置 @UserMessage

  • 示例如下:
@UserMessage("你是我的好朋友,请用上海话回答问题。今天是{{message}}")
String chat2(@MemoryId int memoryId, @V("message") String message);
  • 解释如下:
1、配置 @V : 明确指定传递参数的名称
​
2、多个参数的情况:如果有两个或者两个以上的参数,我们必须要用 @V

3、系统提示词和@V配合使用

3.1、示例如下:

@SystemMessage(fromResource = "my-prompt-template3.txt")
    String chat3(
            @MemoryId int memoryId,
            @UserMessage String userMessage,
            @V("userName") String userName,
            @V("age") int age
    );

4、测试代码

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.xg.assistant.MemoryChatAssistant;
import org.xg.assistant.SeparateChatAssistant;
​
/**
 * @description 系统消息提示词测试
 */
@SpringBootTest
public class PromptTest {
​
    /**
     * 系统提示词模版测试
     */
    @Autowired
    private SeparateChatAssistant separateChatAssistant;
​
    @Test
    void testSystemPromptTest() {
        String answer = separateChatAssistant.chat(3, "今天几号");
        System.out.println(answer);
    }
​
​
    /**
     * 用户提示词测试
     */
    @Autowired
    private MemoryChatAssistant memoryAssistant;
​
    @Test
    void testUserPromptTest() {
        String answer = memoryAssistant.chat("今天几号");
        System.out.println(answer);
    }
​
​
    @Test
    void testV() {
        String answer = separateChatAssistant.chat2(3, "我是哇哈哈哈");
        System.out.println(answer);
​
        String answer1 = separateChatAssistant.chat2(3, "我是谁");
        System.out.println(answer1);
    }
​
    @Test
    void testUserInfo() {
        // 1、从数据库中获取用户信息
        String userName = "环环";
        int age = 18;
​
        String answer = separateChatAssistant.chat3(3, "今天几号", userName, age);
        System.out.println(answer);
    }
}

福利:具体的项目实现地址: gitee.com/xuegang001/…