Spring AI 入门示例

Spring AI 入门示例

目录

Spring AI 入门示例

1、概念介绍

2、使用Spring AI 前提条件

3、创建SpringBoot工程

4、配置pom.xml文件

5、配置yml文件

6、创建ChatController

7、启动Springboot工程并测试


本章节通过一个hello world简单示例演示,如何基于Spring Boot集成Spring AI 开源框架,快速集成调用阿里云的百炼大模型AI服务。

欢迎关注我的公众号

1、概念介绍

Spring AI 项目由 Spring 官方开源并维护的 AI 应用开发框架,该项目目标是简化包含人工智能(AI)功能的应用程序的开发,避免不必要的复杂性。该项目从著名的 Python 项目(例如 LangChain 和 LlamaIndex)中汲取灵感,但 Spring AI 并非这些项目的直接移植,该项目的成立基于这样的信念:下一波生成式 AI 应用将不仅面向 Python 开发人员,还将遍及多种编程语言。从本质上讲,Spring AI 解决了 AI 集成的基本挑战:Connecting your enterprise Data and APIs with the AI Models。

2、使用Spring AI 前提条件

JDK为17以上版本,本人使用的jdk17版本;

SpringBoot版本为3.x以上,本项目使用的是SpringBoot 3.3.3版本;

开通阿里大模型服务(目前是免费6个月),获取 API-KEY,后面代码里要使用。具体操作,请参考阿里云大模型服务平台百炼:如何获取API Key_大模型服务平台百炼(Model Studio)-阿里云帮助中心

3、创建SpringBoot工程

通过IDEA开发工具,创建一个普通的Java工程,注意JDK版本至少是17以上,我这里使用的是jdk17版本。

4、配置pom.xml文件

工程创建完成后,在pom.xml里添加依赖。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>3.3.3</version>    </parent>    <groupId>com.wcy</groupId>    <artifactId>spring-ai</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>jar</packaging>    <description>Demo project for Spring Boot</description>    <properties>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <spring-ai.version>1.0.0-M6</spring-ai.version>    </properties>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.ai</groupId>                <artifactId>spring-ai-bom</artifactId>                <version>${spring-ai.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework.ai</groupId>            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>            <version>${spring-ai.version}</version>        </dependency>    </dependencies>    <repositories>        <repository>            <id>aliyun</id>            <name>aliyun Repository</name>            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>            <snapshots>                <enabled>false</enabled>            </snapshots>        </repository>    </repositories>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

5、配置yml文件

在工程的resources目录下的application-dev.yml文件里增加如下配置:

注意:api-key要替换成自己从阿里百炼平台申请的key

server:  port: 8080spring:  ai:    openai:      api-key: sk-888888888      base-url: https://dashscope.aliyuncs.com/compatible-mode      chat:        options:          model: qwen-plus

6、创建ChatController

创建一个普通 Controller Bean类, 注入 ChatClient 实例,这样你的 Bean 就具备与 AI 大模型智能对话的能力了。本示例简单演示了普通的文本输出对话和流输出对话。

package com.wcy.ai.controller;import jakarta.servlet.http.HttpServletResponse;import org.springframework.ai.chat.client.ChatClient;import org.springframework.ai.chat.model.ChatResponse;import org.springframework.ai.chat.prompt.ChatOptions;import org.springframework.ai.chat.prompt.Prompt;import org.springframework.ai.openai.OpenAiChatModel;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import reactor.core.publisher.Flux;/** * @desc 聊天 * @date: 2025/3/9 * @version: 1.0 */@RestController@RequestMapping("/ai")public class ChatController {    private final ChatClient chatClient;    private final OpenAiChatModel chatModel;    public ChatController(OpenAiChatModel  chatModel) {        this.chatModel = chatModel;        // 构造时,可以设置 ChatClient 的参数        this.chatClient = ChatClient.builder(chatModel)                .defaultOptions(ChatOptions.builder().topP(0.7).build()).build();    }    /**     * ChatClient 简单调用     */    @GetMapping("/chat")    public String chat(@RequestParam(value = "input") String input) {        String content = chatModel.call(input);        System.out.println(content);        return content;    }    /**     * ChatClient 简单调用     */    @GetMapping("/chat2")    public String chat2(@RequestParam(value = "input") String input) {        String content = this.chatClient.prompt().user(input).call().content();        System.out.println(content);        return content;    }    /**     * ChatClient 流式调用     */    @GetMapping(value = "/streamChat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)    public Flux<String> streamChat(HttpServletResponse response, String input) {        response.setCharacterEncoding("UTF-8");        Flux<String> content = chatModel.stream(input);        return content;    }    /**     * ChatClient 流式调用     */    @GetMapping("/streamChat2")    public Flux<String> streamChat2(HttpServletResponse response, String input) {        response.setCharacterEncoding("UTF-8");        Flux<String> content = chatClient.prompt().user(input).stream().content();        return content;    }}

7、启动Springboot工程并测试

工程启动成功后,可以向阿里云AI大模型提问了。

把下面地址输入到浏览器里,答案以文本方式输出:

http://localhost:8080/ai/chat?input=给我讲一个关于西游记的小故事

把下面地址输入到浏览器里,答案以流方式逐步输出:

http://localhost:8080/ai/streamChat?input=给我讲一个关于西游记的小故事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棉花糖老丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值