左右左布局网站建设,wordpress+路由器,宝塔上安装wordpress,班级网页制作模板目录
前言#xff1a;
一、Spring AI 和Spring AI Alibaba
二、Spring AI Alibaba快速入门
1.环境
2.ollama
3.阿里百炼 前言#xff1a; 2025年真的是AI大爆发的一年#xff0c;以后无论是什么行业我想都需要AI了#xff0c;作为一名计算机人#xff0c;你不学习AI…目录
前言
一、Spring AI 和Spring AI Alibaba
二、Spring AI Alibaba快速入门
1.环境
2.ollama
3.阿里百炼 前言 2025年真的是AI大爆发的一年以后无论是什么行业我想都需要AI了作为一名计算机人你不学习AI就会被out。我在想以前的项目都叫做传统项目以后的项目都会是传统智能结合项目了处在时代的风口抓住机会趁现在就起飞吧 我在看现在关于Spring AI的资料很杂并不像传统的那些存在了好长时间的技术如框架、MySQL这些资料齐全。刚好在今年上半年跟随着老师接触过大模型在做学校的大集训时也翻过Spring AI的官方文档结合了传统项目加上了大模型进行了一个整合我也不算是零基础了吧。现在想着再深耕一下Spring AI Alibaba以下是我的自学笔记
一、Spring AI 和Spring AI Alibaba 我们先来了解一下什么是Spring AI其官方文档是这样说的
简介 :: Spring AI 中文文档 Spring AI 项目旨在简化应用程序的开发过程在不增加不必要的复杂性的前提下整合 AI人工智能功能。 该项目从 LangChain 和 LlamaIndex 等著名 Python 项目中汲取灵感但 Spring AI 并不是这些项目的直接移植。项目成立的信念是下一波生成式人工智能应用将不仅仅是 Python 开发人员的专利它将在多种编程语言中无处不在。 也就是Spring AI 让 Java 开发者用最少的代码快速把各种 AI 能力大模型、图像识别等塞进自己的程序里。 那么什么又是Spring AI Alibaba再来看官方文档
Spring AI Alibaba 概览-阿里云Spring AI Alibaba官网官网 Spring AI AlibabaSAA 是一款以 Spring AI 为基础深度集成百炼平台支持 ChatBot、工作流、多智能体应用开发模式的 AI 框架。 也就是Spring AI Alibaba 用 Spring 的简单方式调用阿里的 AI 服务通义千问、阿里云 AI 等省去适配阿里接口的麻烦。 总结Spring AI 是 Java 开发者调用各类 AI 服务大模型、图像识别等的统一简化工具Spring AI Alibaba 是专门适配阿里系 AI 服务通义千问、阿里云 AI 等并深度融合其生态的定制版工具。
二、Spring AI Alibaba快速入门 下面我们来使用Spring AI Alibaba来实现一个简单的聊天机器人吧
1.环境
注Spring Boot版本必须选择3.0以上的版本JDK也必须选择17及以上 Spring Boot 3.4.4、JDK17、Spring AI Alibaba 1.0.0.2 pom.xml
下面将使用两种方式调用大模型ollama和阿里百炼并使用两种方式输出直接输出和流式输出。
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.hl/groupIdartifactIdspring-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-demo/namedescriptionspring-demo/descriptionpropertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version3.4.4/spring-boot.versionspring-ai-alibaba.version1.0.0.2/spring-ai-alibaba.versionspring-ai.version1.0.0/spring-ai.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- spring-ai-alibaba --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-starter-dashscope/artifactId/dependency!-- ollama --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-ollama/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-bom/artifactIdversion${spring-ai-alibaba.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.hl.springdemo.SpringDemoApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/project2.ollama
application.yml
spring:ai:ollama:base-url: http://localhost:11434chat:options:model: qwen2.5:3b#spring事务管理日志
logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debug配置ChatClient
Configuration
public class ChatClientConfig {Beanpublic ChatClient ollamaChatClient(Qualifier(ollamaChatModel) OllamaChatModel ollamaChatModel) {return ChatClient.builder(ollamaChatModel).build();}}
controller测试
调用两个接口进行直接输出和流式输出
package com.hl.springdemo.controller;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;Slf4j
RestController
public class ChatController {AutowiredQualifier(ollamaChatClient)private ChatClient ollamaChatClient;GetMapping(/chat1)public String chat(RequestParam(value question, defaultValue 你是谁) String question) {log.info(question: {}, question);String content ollamaChatClient.prompt().user(question).call().content();return content;}GetMapping(value /stream, produces text/html;charsetUTF-8)public FluxString streamChat(RequestParam(value question, defaultValue 你是谁) String question){log.info(question: {}, question);return ollamaChatClient.prompt().user(你是谁).stream().content();}
}运行结果
浏览器访问localhost:8080/chat1?question你是谁和localhost:8080/stream?question你是谁
流式输出是大模型持续返回一些话给你知道完成现在我们使用的平台通义和豆包都是流式输出。 3.阿里百炼 这是第二种调用大模型的方式需要在阿里云百炼平台上开通服务并生成一个自己的API Key
大模型服务平台百炼控制台 application.yml 在上面的yml中继续配置完整文件如下
server:port: 8080spring:ai:ollama:base-url: http://localhost:11434chat:options:model: qwen2.5:3bdashscope:api-key: ${AI_DASHSCOPE_API_KEY}chat:options:model: qwen-max#spring事务管理日志
logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debug配置ChatClient
完整代码如下
package com.hl.springdemo.config;import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class ChatClientConfig {Beanpublic ChatClient ollamaChatClient(Qualifier(ollamaChatModel) OllamaChatModel ollamaChatModel) {return ChatClient.builder(ollamaChatModel).build();}Beanpublic ChatClient dashscopeChatClient(Qualifier(dashscopeChatModel)DashScopeChatModel dashscopeChatModel) {return ChatClient.builder(dashscopeChatModel).build();}
}在controller中添加接口
GetMapping(/chat2)public String chat2(RequestParam(value question, defaultValue 你是谁) String question) {log.info(question: {}, question);String content dashscopeChatClient.prompt().user(question).call().content();return content;}
配置环境变量
打开idea的运行配置添加环境变量AI_DASHSCOPE_API_KEY你的api-key 接着运行访问localhost:8080/chat2?question你是谁即可