我花了 3 小时吃透:Spring AI 核心三剑客 ChatModel、Prompt、ChatResponse 到底怎么用?
你在学习 Spring AI 的时候肯定遇到过这三个类ChatModel、Prompt、ChatResponse看着眼熟却总搞不清谁负责干嘛、代码里为啥要这么写接下来就是我的理解。一、先搞懂这三个东西是什么关系在开始写代码前我先在脑子里建立了一个超级简单的模型我想让 AI 回答问题 → 必须经过三步我要把问题整理好 → 对应Prompt我要一个能调用 AI 的工具 → 对应ChatModelAI 把答案返回给我 → 对应ChatResponse所以它们的关系是固定死的Prompt提问 → ChatModel发送 → ChatResponse回答是不是一下就清晰了下面我们一个一个拆开讲。二、第一个核心ChatModel —— 你调用 AI 的 “统一入口”我的思考我最开始好奇Spring AI 怎么能同时支持豆包、OpenAI、通义千问、文心一言后来我才明白它把所有模型的调用都抽象成了一个统一接口ChatModel也就是说你写一套代码切换模型只改配置不用动业务代码。这就是 Spring AI 的强大之处统一 API。代码// 注入 Spring AI 提供的统一聊天模型 Autowired private ChatModel chatModel;我理解的本质ChatModel 是一个接口不是具体实现底层可以是OpenAiChatModel、DouBaoChatModel、TongYiChatModel 等你不用关心底层是谁统一用 chatModel.call () 就行通俗一句话ChatModel 通往所有大模型的 “万能入口”三、第二个核心Prompt —— 你给 AI 的 “提问包裹”我的思考我一开始很傻直接把字符串扔给模型不行吗为什么要搞一个 Prompt 对象试了才知道AI 不只需要 “问题”还需要角色、上下文、历史对话。这些东西必须用一个结构化对象包装 → 这就是 Prompt。最简单写法Prompt prompt new Prompt(解释一下 Kafka 增量聚合);实用的写法Prompt prompt new Prompt( List.of( // 给AI设定角色 new SystemMessage(你是一名Java后端工程师回答通俗简洁), // 用户真正的问题 new UserMessage(question) ) );为什么要这么写因为SystemMessage设定 AI 性格UserMessage真正的问题未来还能加 AssistantMessage历史对话Prompt 给 AI 的完整指令包四、第三个核心ChatResponse —— AI 给你的 “答案包裹”我的思考我最开始以为返回的是字符串结果发现是个对象ChatResponseAI 返回的不只是文字还有token 用量模型信息停止原因多候选结果所以必须用一个对象封装。代码怎么取答案// 调用AI ChatResponse response chatModel.call(prompt); // 从返回结果里一层一层拆出内容 String answer response .getResult() .getOutput() .getContent();我的理解response整个返回体getResult()第一个结果默认getOutput()AI 输出内容getContent()真正的文字答案五、三者整合一段完整可运行代码下面是我在真实项目里最常用的写法你直接复制就能跑。Service public class SpringAiDemoService { // 1. 注入统一聊天模型 Autowired private ChatModel chatModel; public String askAI(String question) { // 2. 构造 Prompt角色 用户问题 Prompt prompt new Prompt( List.of( new SystemMessage(你是专业的Java技术顾问回答通俗、详细、有逻辑), new UserMessage(question) ) ); // 3. 通过 ChatModel 发送请求得到 ChatResponse ChatResponse chatResponse chatModel.call(prompt); // 4. 从响应中解析出最终回答 return chatResponse .getResult() .getOutput() .getContent(); } }我写这段代码时的思考过程先注入工具ChatModel再整理问题Prompt发送请求call (prompt)接收答案ChatResponse拆包拿内容getContent ()完全符合正常思考逻辑六、我总结的最通俗记忆法背会就不会忘ChatModel 调用AI的工具入口 Prompt 你给AI的问题输入 ChatResponse AI 返回的答案输出固定公式ChatModel.call(Prompt) → ChatResponse
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2454626.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!