遨游Spring AI:第一盘菜Hello World

****Spring AI的正式版已经发布了,很显然,接下来我们要做的事情就是写一个Hello World。

总体思路就是在本地搭建一个简单的大模型,然后编写Spring AI代码与模型进行交互。

分五步:

  1. 安装Ollama;

  2. 安装DeepSeek;

  3. 创建Spring AI工程;

  4. 编码;

  5. 测试与小结。

1. 安装Ollama

为了在本地环境安装DeepSeek,我们先安装Ollama。Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。

打开官网:https://ollama.com/download,选择Windows版本:

下载完成后,安装非常简单,按照提示操作即可,不过它默认安装在C盘。所以在D盘新建一个Ollama的文件,并且把安装程序(OllamaSetup.exe)拷贝到这个目录中。

然后以管理员身份运行cmd,切换到D盘以后,运行如下的命令,用于设置系统的环境变量:

go 复制代码
setx OLLAMA_MODELS "D:\Ollama\models" /M

切换到D盘的Ollama目录,运行如下的命令:

go 复制代码
OllamaSetup.exe /dir=D:\Ollama

随后弹出安装界面,按照提示点击下一步即可。安装成功后,在任务栏可以看到Ollama的图标(一个小的羊驼)。也可以在命令行输入ollama -v来查看它的版本号。

go 复制代码
D:\>ollama -v
ollama version is 0.5.11

2. 安装DeepSeek

还是进到Ollama官网,点击DeepSeek-R1超链接:

在跳转的页面中,选择体积最小的1.5b版本。这个b是billion(十亿)的缩写,1.5b就代表该模型包含15亿个参数,属于轻量级的人工智能模型。

点击右侧的复制按钮,把命令复制下来并且运行,可以先把它下载到本地:

go 复制代码
ollama pull deepseek-r1:1.5b

下载完成后,即可以在本地运行DeepSeek,把上面命令中的pull改成run即可运行。然后就可以跟DeepSeek进行对话了:

go 复制代码
D:\>ollama run deepseek-r1:1.5b
>>> who are you
<think>

</think>

Greetings! I'm DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. I'm at your service and would be delighted to assist you with any inquiries or tasks you may have.

3. 创建Spring AI工程

接下来我们创建Spring AI工程。使用Spring Initializr可以快速生成脚手架: https://start.spring.io/,工程类型、语言、版本等内容可以参考下图进行选择,JDK选择版本17:

点击GENERATE按钮即可生成,把它下载到本地并用idea打开。注意,在pom.xml文件中,它默认使用的是openai,把它改成ollama的starter,否则会报错:

go 复制代码
<!--<dependency>-->
<!--	<groupId>org.springframework.ai</groupId>-->
<!--	<artifactId>spring-ai-starter-model-openai</artifactId>-->
<!--</dependency>-->
<dependency>
	<groupId>org.springframework.ai</groupId>
	<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

同时,修改yml文件的配置信息如下:

go 复制代码
spring:
  http:
    encoding:
      charset: UTF-8
      enable: true
      force: true
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:1.5b

4. 编码

我们从常见的AI聊天开始。Spring AI提供了ChatClient接口,它使用流畅API与AI模型进行交互。

流畅API(Fluent API),也可理解链式API,它是一种编程接口设计风格,通过链式方法调用和上下文连贯性设计,使代码具有类似自然语言的流畅性和可读性‌。它的特点是每个方法都返回当前对象实例,从而支持链式调用,减少代码冗余,提升可读性。

通过ChatClient.Builder对象可创建ChatClient,而对象ChatClient.Builder象可通过自动装配的方式获得。以下是controller的代码,功能就是:用户输入消息,程序把消息发送给DeepSeek并返回对应的字符串结果:

go 复制代码
package com.myai.demo.controller;

import org.springframework.ai.chat.client.ChatClient;
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;

@RestController
@RequestMapping("/ai")
publicclass ChatController {

    privatefinal ChatClient chatClient;

    public ChatController(ChatClient.Builder chatClient) {
        this.chatClient = chatClient.build();
    }

    @GetMapping("/chat")
    public String chat(@RequestParam(value = "message") String message) {
        String result;
        try {
            result = chatClient.prompt().user(message).call().content();
        } catch (Exception e) {
            return"Exception";
        }
        return result;
    }
}

5. 测试与小结

这是Spring Boot程序,当然还需要对应的启动类,这个很简单,此处不再给出,如果需要完整的源代码,或者搭建过程中遇到什么问题,也欢迎后台私信进行讨论。程序启动后,我们跟它打个招呼,输入你好,看看它返回什么:

没问题,大模型返回了相应的消息,这样,第一盘菜Hello World算是搭建成功了。

初步想一想,应用程序能够与后台的大模型实时交互与对话,未来的想象空间确实比较大,让原本规规矩矩的程序变得十分强大,一些传统的功能经过大模型的智能运算处理,会厉害很多倍。

而且,当前这个程序只是基于本地的参数不多的模型,如果接入功能更为丰富、时效性更强的大模型,会智能得多。

接下来让我们一起插上AI的翅膀,让应用程序飞翔起来吧。

创作不易,烦请点个在看、点个赞。

有任何问题,也欢迎留言讨论。

相关推荐
yaoxin5211233 分钟前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
一切皆是因缘际会16 分钟前
AI数字分身的底层原理:破解意识、自我与人格复刻的核心难题
大数据·人工智能·ai·架构
翔云12345620 分钟前
vLLM全解析:定义、用途与竞品对比
人工智能·ai·大模型
ASKED_201943 分钟前
KDD Cup 2026 腾讯算法广告大赛赛题解读: UNI-REC (统一序列建模与特征交叉)
人工智能
fpcc1 小时前
AI和大模型——Fine-tuning
人工智能·深度学习
爱问的艾文1 小时前
八周带你手搓AI应用-Day4-赋予你的AI“记忆力”
人工智能
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
向量引擎1 小时前
向量引擎接入 GPT Image 2 和 deepseek v4:一个 api key 把热门模型串起来,开发者终于不用深夜修接口了
人工智能·gpt·计算机视觉·aigc·api·ai编程·key
努力努力再努力FFF1 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
AI医影跨模态组学2 小时前
如何将纵向MRI深度学习特征与局部晚期直肠癌新辅助放化疗后的免疫微环境建立关联,并解释其对pCR及预后的机制
人工智能·深度学习·论文·医学·医学影像·影像组学