SpringAI编码实战:使用本地免费部署的大语言模型跑起来

发布于:2025-07-09 ⋅ 阅读:(27) ⋅ 点赞:(0)

前言

本篇博文将完全抛开网上各种教程对国外服务的依赖,全程使用免费、开源的本地大模型运行平台 Ollama 和国内优秀的 Qwen (通义千问) 模型。你不需要注册付费的API及VPN,就能在你自己的电脑上体验到大模型的神奇之处话不多说,现在咱们就在本地局域网内,用Java编码免费把大模型玩起来。并以ChatClient开始作为入门,给你一个初步的springAI实战大语言模型示例。

你将学到:

  • 如何在本地安装和运行 Ollama。
  • 如何在 Ollama 中下载并运行 Qwen 模型。
  • 如何从零开始搭建一个 Spring Boot 项目,并集成 Spring AI。
  • 如何使用 ChatClient 发送你的第一个请求。

本地环境准备

在使用 Spring AI 之前,我们首先需要在本地搭建一个大模型运行环境。这里我们选择 Ollama,它是一个非常方便的本地大模型运行平台。
具体也可参考之前写过的《Ollama 深度使用指南:在本地玩转大型语言模型》

准备Ollama

在这里插入图片描述

  • 下载 Ollama: 访问 Ollama 的官方网站:https://ollama.com/download
  • 选择你的操作系统: 根据你的电脑系统(Windows、macOS、Linux),下载对应的安装包。
  • 安装:
    • Windows/macOS: 双击下载的安装包,按照提示一步步完成安装。安装过程非常简单,就像安装普通软件一样。
    • Linux: 按照官网的命令行指示进行安装。

安装完成后,Ollama 会在后台默默运行,你通常不会看到一个单独的应用程序窗口,它作为一个服务在你的系统上运行。

准备 Qwen 模型

Ollama 安装好后,我们就可以通过命令行下载 Qwen 模型了。Qwen 是阿里云开源的一系列优秀大模型。

  • 打开命令行/终端:

    • Windows:Win + R 键,输入 cmdpowershell,然后回车。
    • macOS/Linux: 打开“终端”应用程序。
  • 下载模型: 在命令行中输入以下命令并回车。这里我们以下载 qwen:7b 模型为例,7b 表示70亿参数,对电脑配置要求不高,适合初学者。

    ollama pull qwen:7b
    ollama run qwen:7b
    

    这个过程可能需要一些时间,因为它会从互联网上下载模型文件,文件通常比较大(几个GB)。请耐心等待下载完成。下载完成后,Ollama 服务就已经可以使用 qwen:7b 模型了!

    注意: Ollama 默认运行在 http://localhost:11434。如果你的电脑防火墙或网络设置有问题,可能需要检查。但通常情况下,安装后即可直接使用。
    在这里插入图片描述
    在这里插入图片描述


项目初始化与配置

现在本地大模型环境已经准备好了,我们来创建 Spring Boot 项目并集成 Spring AI。

创建 Spring Boot 项目

推荐使用 Spring Initializr (https://start.spring.io/) 来快速创建项目,当然如果你是idea的旗舰版用户也可以本地快速创建。

如上图所示:

  • 项目设置:
    • Project: Maven Project (或 Gradle Project,这里我们用Maven)
    • Language: Java
    • Spring Boot: 选择最新的 3.5.3 版本,[参考官网描述,最低3.4.x],如下图所示(https://docs.spring.io/spring-ai/reference/getting-started.html)
    • Group: com.example (可以自定义,例如 com.yourcompany)
    • Artifact: spring-ai-ollama-demo (项目名称,可以自定义)
    • Java: 选择 17 或更高版本 (建议Java 17 LTS)
  • 添加依赖 (Dependencies):
    • 点击 “Add Dependencies…” 按钮
    • 搜索并添加:
      • Spring Web (可选,但通常用于构建Web应用,方便测试)
      • Lombok (可选,但非常推荐,可以大大简化Java代码)
      • Spring AI Ollama Starter (这个是关键!用于集成Ollama)
  • 生成项目: 点击 “Generate” 按钮,下载项目的压缩包。
  • 解压并导入IDE: 将下载的 spring-ai-ollama-demo.zip 解压到你喜欢的位置,然后使用你的Java集成开发环境 (IDE),例如 IntelliJ IDEA 或 Eclipse,导入这个Maven项目。
    在这里插入图片描述

配置pom.xml依赖

导入项目后,检查 pom.xml 文件,确保它包含了所有必要的依赖。
对于spring-ai版本选择,由于进化很快,这里咱用最新的1.0.0-M5来演示,参考如下图
在这里插入图片描述

pom.xml 核心配置示例如下:


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.3</version> <relativePath/> </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-ai-ollama-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-ai-ollama-demo</name>
    <description>Demo project for Spring AI with Ollama</description>
    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M5</spring-ai.version> </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <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>

配置application.properties

src/main/resources/ 目录下的 application.properties 文件,并添加以下内容。

# Spring AI Ollama 配置
# Ollama 服务的地址,默认是 http://localhost:11434
spring.ai.ollama.chat.base-url=http://localhost:11434

# 指定要使用的模型名称,这里我们使用之前下载的qwen:7b
spring.ai.ollama.chat.options.model=qwen:7b

# 如果需要,可以调整温度参数(控制AI回答的创造性)
# spring.ai.ollama.chat.options.temperature=0.7

这些配置告诉 Spring AI 如何连接到 Ollama 服务,以及使用哪个模型。
注意: 如果你的 Ollama 服务没有运行在 http://localhost:11434 (例如,你在WSL中运行或配置了其他端口),你需要修改 spring.ai.ollama.chat.base-url 为正确的端口地址。


代码实战

本篇以ChatClient为例来进行本地代码开发实战。
Chatclient 是 Spring AI 提供的最核心接口,它充当了你与大模型对话的统一入口。无论你底层用的是 Ollama、OpenAI 还是其他模型,你都通过 ChatClient 来发送提问并接收回答。

核心代码用例

Spring AI 会根据你的配置(这里是 Ollama)自动为你创建一个 ChatClient 的 Bean,你只需要通过 Spring 的 @Autowired 注解就可以把它注入到你的代码中并使用。

现在,我们创建一个主要的 Spring Boot 应用程序类 SpringAiOllamaDemoApplication.java,并添加第一个使用 ChatClient 的示例。

package com.example.springaiollamademodemo; // 请替换为你的实际项目包名

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication // 这是一个Spring Boot应用
public class SpringAiOllamaDemoApplication {

    public static void main(String[] args) {
        // Spring Boot 应用的启动入口
        SpringApplication.run(SpringAiOllamaDemoApplication.class, args);
    }

    /**
     * 示例1: ChatClient 基本使用
     *
     * @param chatClient Spring 自动注入的 ChatClient 实例
     * @return CommandLineRunner,在应用启动后执行其run方法
     */
    @Bean
    public CommandLineRunner runChatClientBasic(ChatClient chatClient) {
        return args -> {
            System.out.println("--- ChatClient 基本使用:向大模型提问 ---");
            // 使用chatClient.prompt().user("你的问题").call().content() 发送问题并获取回答内容
            String responseContent = chatClient.prompt()
                    .user("解释下量子纠缠的原理")
                    .call()
                    .content(); // 获取大模型的回答内容
            System.out.println("大模型响应: " + responseContent);
            System.out.println("\n------------------------------------------------\n");
        };
    }
}

开始运行

  1. 确保你的 Ollama 服务和 qwen:7b 模型正在运行。
  2. 在你的IDE中,找到 SpringAiOllamaDemoApplication 类,右键点击并选择 “Run ‘SpringAiOllamaDemoApplication.main()’” (或类似的选项)。
  3. 程序启动后,你会在IDE的控制台(Console)中看到大模型对“量子纠缠”的解释。

在这里插入图片描述

进阶使用

ChatClient 允许你发送包含多条消息的请求,这对于给AI设置一个特定的“角色”或者提供更丰富的对话背景非常有用。你可以发送 system (系统) 消息和 user (用户) 消息。

package com.example.springaiollamademodemo; // 请替换为你的实际项目包名

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class SpringAiOllamaDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringAiOllamaDemoApplication.class, args);
    }

    /**
     * 示例2: ChatClient 多轮上下文 (设置角色)
     * 通过系统消息为大模型设定一个角色,让它的回答更符合预期。
     *
     * @param chatClient Spring 自动注入的 ChatClient 实例
     * @return CommandLineRunner
     */
    @Bean
    public CommandLineRunner runChatClientWithContext(ChatClient chatClient) {
        return args -> {
            System.out.println("--- ChatClient 多轮上下文 (设置角色): 让大模型成为科普专家 ---");
            String responseContent = chatClient.prompt()
                    .system("你是一个科普专家,擅长用通俗易懂的语言解释科学原理。") // 系统消息:设定AI角色
                    .user("讲讲黑洞是怎么形成的?") // 用户消息:实际问题
                    .call()
                    .content();
            System.out.println("大模型(科普专家)响应: " + responseContent);
            System.out.println("\n------------------------------------------------\n");
        };
    }
}

再次运行 SpringAiOllamaDemoApplication,你会发现大模型会以“科普专家”的口吻来解释黑洞的形成。


在这里插入图片描述


总结

通过本篇教程,你不仅学会了 Spring AI 的核心组件,还成功在本地搭建了 Ollama 和 Qwen 模型,并用它们运行了你的第一个 AI 应用。这为你探索人工智能的世界打下了坚实的基础。


完整项目截图:

在这里插入图片描述

资料

参考

《Ollama 深度使用指南:在本地玩转大型语言模型》
本文代码:https://gitcode.com/superfreeman/spring-ai-demo
系列教程:《Java驱动AI革命:Spring AI八篇进阶指南——从架构基础到企业级智能系统实战》
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到