代码库地址:https://github.com/Why1214/spring-demo.git
分支:spring-ai
前面我们已经对AI概念做了一个详细的介绍,同时也通过简单的demo实现了Spring AI框架的入门练习。今天开始,我们将深入Spring AI,对它的详细框架进行一个系统的介绍。
我会通过Spring AI的核心类,结合一些实用demo,
帮助大家快速掌握如何在项目中使用 Spring AI,让大模型真正服务于我们的日常开发。 🚀
Message(org.springframework.ai.chat.messages.Message)

Message包含了真正要发送给大模型的消息,一共有四类消息(MessageType):用户消息、系统消息、助手消息(模型之前的回复)、工具:
UserMessage userMessage = new UserMessage(message);
SystemMessage systemMessage = new SystemMessage(sysMsg);
Prompt(org.springframework.ai.chat.prompt.Prompt)

-
Prompt代表一次完整的输入,不仅仅是简单的字符串;
-
内部可以包含多个Message对象;
-
还可以携带一些提示选项(ChatOptions),如温度等。
Prompt prompt = new Prompt(userMessage, systemMessage);
ChatModel(org.springframework.ai.chat.model.ChatModel)

在Spring AI中,所有对话聊天类的大模型都被抽象成了统一的接口,即ChatModel;
-
ChatModel有两个主要的方法,call和stream,分别代表普通交互和流式交互;
-
ChatModel有一个实现类,OpenAiChatModel,真正注入到Spring容器中的对象,负责和大模型进行交互
@RestController
public class TestController {
@Resource
private OpenAiChatModel chatModel;
@GetMapping(value = "/deepseek/chat/call2")
public String call2(@RequestParam(value = "message") String message, @RequestParam(value = "sysMsg") String sysMsg) {
UserMessage userMessage = new UserMessage(message);
SystemMessage systemMessage = new SystemMessage(sysMsg);
Prompt prompt = new Prompt(userMessage, systemMessage);
ChatResponse chatResponse = this.chatModel.call(prompt);
return Optional.ofNullable(chatResponse)
.map(ChatResponse::getResult)
.map(Generation::getOutput)
.map(AssistantMessage::getText)
.orElse("");
}
}
总结
在这篇文章里,我们依次认识了 Spring AI 的三个核心类:Message、Prompt、ChatModel,结合这三个类,可以快速写出一个完整的demo与模型实现对话交互。
写字不易,分享更难。如果你喜欢这样的技术分享,欢迎扫码关注我的公众号,让我们一起边写代码,边聊 AI。👨💻☕

:Spring AI核心类&spm=1001.2101.3001.5002&articleId=150986197&d=1&t=3&u=f638120a1a8f45b88646d303d2d66e3e)
687

被折叠的 条评论
为什么被折叠?



