Solon AI 开发学习 - chat - 四种消息类型及提示语增强

大模型接收的是“提示语”(或提示词),返回的是“生成内容”。提示语,则有一条或多条不同类型的消息组成(可以有会话历史消息)。

四种消息类型结构

  • UserMessage 用户消息

由用户输入的消息look.gdpingjia.com

metadata:Map

元数据(用于扩展输出)

content:String

内容

medias:List<AiMedia>

图片集合(可以是 url 或 base64)

ChatMessage.ofUser("你好!");

//需要多模态模型支持
ChatMessage.ofUser("这图里有方块吗?", Image.ofUrl("http://../demo.jpg"));

ChatMessage.ofUser(Image.ofUrl("http://../demo.jpg"));
ChatMessage.ofUser("这图里有方块吗?");

SystemMessage 系统消息(现在的模型,一般用不到了)

系统消息,主要是为当前会话设定AI的角色属性。一般作为一个会放的头条消息ocr.gdpingjia.com

List<ChatMessage> messages = new ArrayList();
messages.add(ChatMessage.ofSystem("你是个建筑工地的工人,对搬砖很有经验!"));
messages.add(ChatMessage.ofUser("100块砖,搬到10楼大概要多久?"));

chatModel.prompt(messages); //context 可以是描述天气的任何对象
            .call();

用户消息的构建方式

  • 基本消息ptd.gdpingjia.com
chatModel.prompt(ChatMessage.ofUser("hello"))
            .call();

关于用户消息的“消息增强”

将用户输入的消息通过格式化,附加相关的上下文(或参考资料),从而实现“消息增强”。这也是构成 RAG技术(检索增强生成,结合信息检索和语言模型)的纽带。bn.gdpingjia.com

//ChatMessage.ofUserAugment(String message, Object context);

//示例1:
ChatMessage.ofUserAugment("a+b 等于几?", "假如 a=1, b=2");

//示例2:
let message = "刘德华今年有哪些演唱会?"
let context = ticketRepository.search(message);

ChatMessage.ofUserAugment(message, context);

多角色混合提示增强

可组合 SystemMessage、UserMessage 和 AssistantMessage 实现多轮对话。达到场景效果。vl1z0.aijiu520.com

List<ChatMessage> prompt = List.of(
    ChatMessage.ofSystem("你是一个天气预报助手,只回答天气相关问题。"),
    ChatMessage.ofUser("今天北京天气如何?"),
    ChatMessage.ofAssistant("北京今天晴,气温20-25℃。"),
    ChatMessage.ofUser("需要带伞吗?")
);

chatModel.prompt(prompt); 
            .call();
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务