Spring AI Alibaba 概述
Spring AI Alibaba 是一款以 Spring AI 为基础,深度集成百炼平台,支持 ChatBot、工作流、多智能体应用开发模式的 AI 框架,能帮助开发者快速构建自己的 Agent、Workflow 或 Multi-agent 应用。相对于原生的Spring AI,Spring AI Alibaba功能更加丰富,更新也更加频繁。
看了这么多,是不是还没理解?其实说人话就是原来你可能在百炼、Dify 平台搭建自己的 Chat、Agent、Workflow 等,现在你可以用代码自己很轻松的开发啦。。。哈哈哈~
当然了,肯定也没有小编三两句话说的这么简单,人家的功能还是很多的... 具体功能可参考官方文档
https://java2ai.com

官方演示项目
Springai alibaba官方提供了一个 已经开发完成的 演示项目,大家可以通过docker的方式直接拉取镜像运行,注意需要提供阿里百炼平台的apikey设置到AI_DASHSCOPE_API_KEY中,以下是简单的启动命令:
docker run -d -p 8080:8080 \ -e AI_DASHSCOPE_API_KEY=your_api_key \ --name spring-ai-alibaba-playground \ sca-registry.cn-hangzhou.cr.aliyuncs.com/spring-ai-alibaba/playground:1.0.0.2-x启动成功后访问localhost:8080 即可访问

话不多说,上手搓来个 demo 看看吧...
基础环境准备
此处只贴关键依赖
<dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency><dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-graph-core</artifactId></dependency><dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-memory-jdbc</artifactId></dependency>配置LLM客户端
通过ChatClient.Builder我们可以快速构建一个LLM客户端,通过DashScopeChatOptions可以设置LLM客户端的会话参数,例如top_p,temperature,系统提示词等等
/** * 自定义一个ChatClient * * @param builder * @return */@Beanpublic ChatClient initChatClient(ChatClient.Builder builder, ChatMemory chatMemory) { return builder // 设置提示词 .defaultSystem("你是一个聊天解闷的小助手") // 记录聊天请求和响应的日志,便于调试和监控AI对话过程。相当于AOP的作用 .defaultAdvisors( new SimpleLoggerAdvisor() ) // 全局配置 .defaultOptions( DashScopeChatOptions.builder() //.withTopP(0.7) .withTemperature(1.2) // 温度 .build() ) .build();}配置文件
客户端成功初始化需要依赖以下的参数,在application.yml配置文件中进行阿里千问模型的配置
spring: # Spring AI配置 ai: dashscope: # OpenAI API配置 api-key: ${DASHSCOPE_API_KEY} chat: options: model: qwen-plus temperature: 0.7基础对话调用
我们通过前面初始化的注入ChatClient对象即可完成AI大模型的同步调用
/** * 一个简单的对话模型 * * options 可以设置模型参数,如模型、温度、最大token数等, 可以不使用配置文件中的 * * @param query * @return */@GetMapping("/ask")public String ask(@RequestParam(name = "query", defaultValue = "你能干啥啊?") String query) { return chatClient // 创建一个会话,并设置会话的输入 .prompt(query) .options( DashScopeChatOptions.builder() .withTemperature(0.7) .withMaxToken(2000) // 此处可以手动设置模型,如果不设置就是配置文件里面的 //.withModel("qwen-max") .build() ) // 发起会话 .call() // 获取模型响应结果 .content();}可以看到这就完成啦...

流式数据处理
我们在构建对话服务时,通常会使用模型的流式输出能力来让实现前端的打字机效果,让用户能够在最短时间看到AI的输出,从而能够获得更好的用户体验,那该怎么做呢?不要急,往下看⬇️
/** * 流式输出 POST * * 请求头必须设置:Accept: text/event-stream * @param query * @return */@PostMapping("/stream-post")public Flux<String> streamPost(@RequestBody String query, HttpServletResponse response) { response.setCharacterEncoding("utf-8"); return chatClient .prompt(query) // 此处的stream就是 call() 方法,可以看下源码,他俩方法一样,就是返回不一样 .stream() .content();}可以看到大模型的回复就是一点一点回答的哦~

好了,入门分享到此结束,喜欢的话给个关注➕,我们下次继续
夜雨聆风