Messages 消息 | Spring AI Alibaba
跳到主要内容

Messages 消息

Messages 是 Spring AI Alibaba 中模型交互的基本单元。它们代表模型的输入和输出,携带在与 LLM 交互时表示对话状态所需的内容和元数据。

Messages 是包含以下内容的对象:

  • Role(角色) - 标识消息类型(如 systemuserassistant
  • 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);

使用消息提示的场景

  • 管理多轮对话
  • 处理多模态内容(图像、音频、文件)
  • 包含系统指令