AI项目博客
记录 AI 工程实践与大模型应用

Spring AI Alibaba 08|Messages 消息 · 与 Chat Models 一起使用

Chat models 接受消息对象序列作为输入并返回 ChatResponse(包含 AssistantMessage)作为输出。交互通常是无状态的,因此简单的对话循环涉及使用不断增长的消息列表调用模型。

基础对话示例

import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.prompt.Prompt;
import java.util.ArrayList;
import java.util.List;

ChatModel chatModel = // ... 初始化

List<Message> conversationHistory = new ArrayList<>();

// 第一轮对话
conversationHistory.add(new UserMessage("你好!"));
ChatResponse response1 = chatModel.call(new Prompt(conversationHistory));
conversationHistory.add(response1.getResult().getOutput());

// 第二轮对话
conversationHistory.add(new UserMessage("你能帮我学习 Java 吗?"));
ChatResponse response2 = chatModel.call(new Prompt(conversationHistory));
conversationHistory.add(response2.getResult().getOutput());

// 第三轮对话
conversationHistory.add(new UserMessage("从哪里开始?"));
ChatResponse response3 = chatModel.call(new Prompt(conversationHistory));

使用 Builder 模式

Spring AI Alibaba 的消息类提供了 builder 模式以便于构建:

// UserMessage with builder
UserMessage userMsg = UserMessage.builder()
  .text("你好,我想学习 Spring AI Alibaba")
  .metadata(Map.of("user_id", "user_123"))
  .build();

// SystemMessage with builder
SystemMessage systemMsg = SystemMessage.builder()
  .text("你是一个 Spring 框架专家")
  .metadata(Map.of("version", "1.0"))
  .build();

// AssistantMessage with builder
AssistantMessage assistantMsg = AssistantMessage.builder()
  .content("我很乐意帮助你学习 Spring AI Alibaba!")
  .build();

消息复制和修改

// 复制消息
UserMessage original = new UserMessage("原始消息");
UserMessage copy = original.copy();

// 使用 mutate 创建修改的副本
UserMessage modified = original.mutate()
  .text("修改后的消息")
  .metadata(Map.of("modified", true))
  .build();

ReactAgent 自动管理消息历史,但你也可以直接使用消息:

import com.alibaba.cloud.ai.graph.agent.ReactAgent;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.AssistantMessage;

ReactAgent agent = ReactAgent.builder()
  .name("my_agent")
  .model(chatModel)
  .systemPrompt("你是一个有帮助的助手")
  .build();

// 使用字符串
AssistantMessage response1 = agent.call("你好");

// 使用 UserMessage
UserMessage userMsg = new UserMessage("帮我写一首诗");
AssistantMessage response2 = agent.call(userMsg);

// 使用消息列表
List<Message> messages = List.of(
  new UserMessage("我喜欢春天"),
  new UserMessage("写一首关于春天的诗")
);
AssistantMessage response3 = agent.call(messages);

本文整理自 Spring AI Alibaba 官方文档《Messages 消息》:https://java2ai.com/docs/frameworks/agent-framework/tutorials/messages

赞(0)
未经允许不得转载:AI项目博客 » Spring AI Alibaba 08|Messages 消息 · 与 Chat Models 一起使用

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册