9 - AI 服务化 - SpringAI+RAG+MCP+Agent,AI 智能体企业级实战(25年必学 - 编程导航教程

Excerpt本节重点

AI 服务化是指将原本只能本地运行的 AI 能力转化为可远程调用的接口服务,使更多人能够便捷地访问 AI 能力。通过本节学习,你将掌握如何将 AI 智能体转变为可供他人调用的服务。编程导航教程分享,做您编程学习路上的导航员。


本节重点

AI 服务化是指将原本只能⁡本地运行的 AI 能力转化为可远程调用的接口服务,使更多人能够便捷地访问 AI 能力。通过本节学习,你将掌握如何将 AI 智能体转变为可供他人调用的服⁡务、利用 AI 生成对应的前端项目,并且将项目的前后端通过 Serverless 部署上线。

具体内容包括:VVLSZX3Cpjji3SpiWQ7k8Q==kVqHXKceggP8ZnjJGQHeBseyUNNXr+64Iv7kJbZzVb4=

在开始之前,先给大家提个醒,Spring AI 版本更新飞快,有些代码的写法随时可能失效,尽量以 官方文档 为准。

一、AI 应用接口开发

我们平时开发的大多数接口都⁡是同步接口,也就是等后端处理完再返回。但是对于 AI 应用,特别是响应时间较长的对话类应用,可能会让用户失去耐心等待,因此推荐使用 SSE(Serve⁡r-Sent Events)技术实现实时流式输出,类似打字机效果,大幅提升用户体验。

接下来我们⁡会同时提供同步接口(一次性完整返回)和基于 SSE 的⁡流式输出接口。

开发

1、支持流式调用

首先,我们⁡需要为 LoveApp 添加流式调用方法,通过 stream⁡ 方法就可以返回 Flux 响应式对象了:

public Flux<String> doChatByStream(String message, String chatId) {
    return chatClient
            .prompt()
            .user(message)
            .advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId)
                    .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))
            .stream()
            .content();
}

💡 建议不要直接⁡使用 ChatResponse 作为返回类型,因为这会导致返回内容膨胀,影响传输效率。所以上述代码中我⁡们使用 content 方法,只返回 AI 输出的文本信息。