Messages 消息
Messages 是 Spring AI Alibaba 中模型交互的基本单元。它们代表模型的输入和输出,携带在与 LLM 交互时表示对话状态所需的内容和元数据。
Messages 是包含以下内容的对象:
- Role(角色) - 标识消息类型(如
system、user、assistant) - Content(内容) - 表示消息的实际内容(如文本、图像、音频、文档等)
- Metadata(元数据) - 可选字段,如响应信息、消息 ID 和 token 使用情况
Spring AI Alibaba 提供了一个标准的消息类型系统,可在所有模型提供商之间工作,确保无论调用哪个模型都具有一致的行为。
基础使用
使用 messages 最简单的方式是创建消息对象并在调用模型时传递它们。
基础消息使用示例查看完整代码
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.prompt.Prompt;
import java.util.List;
// 使用 DashScope ChatModel
ChatModel chatModel = // ... 初始化 ChatModel
SystemMessage systemMsg = new SystemMessage("你是一个有帮助的助手。");
UserMessage userMsg = new UserMessage("你好,你好吗?");
// 与聊天模型一起使用
List<org.springframework.ai.chat.messages.Message> messages = List.of(systemMsg, userMsg);
Prompt prompt = new Prompt(messages);
ChatResponse response = chatModel.call(prompt); // 返回 ChatResponse,包含 AssistantMessage
文本提示
文本提示是字符串 - 适用于简单的生成任务,不需要保留对话历史。
文本提示示例查看完整代码
// 使用字符串直接调用
String response = chatModel.call("写一首关于春天的俳句");
使用文本提示的场景:
- 有单个独立的请求
- 不需要对话历史
- 想要最小的代码复杂性
消息提示
或者,你可以通过提供消息对象列表向模型传递消息列表。
消息提示示例查看完整代码
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.prompt.Prompt;
import java.util.List;
List<org.springframework.ai.chat.messages.Message> messages = List.of(
new SystemMessage("你是一个诗歌专家"),
new UserMessage("写一首关于春天的俳句"),
new AssistantMessage("樱花盛开时...")
);
Prompt prompt = new Prompt(messages);
ChatResponse response = chatModel.call(prompt);
使用消息提示的场景:
- 管理多轮对话
- 处理多模态内容(图像、音频、文件)
- 包含系统指令