使用Spring AI对接Ollama搭建自己的智能问答网站
前言
已经是2024年的下半年了,AIGC的应用特别广泛,不仅好玩儿也很实用,之前有使用过RWKV做过一个智能问答网站,但那时Spring AI还不是很流行。
现在Spring AI已经比较成熟了,想体验一下Spring AI到底是啥样的,并且由于Open AI在国内的限制,看了看Spring AI所支持的模型,选择了可本地运行的Ollama模型。
开始
环境
在开始前需要确定开发环境,我的开发环境如下:
软件 | 版本 |
---|---|
JDK | 17.0.11 2024-04-16 LTS,下载地址 |
Maven | 3.8.8 , 下载地址 |
IntelliJ IDEA | IntelliJ IDEA 2024.1.4 (Ultimate Edition),下载地址 |
Ollama | 0.2.5 ,下载地址 |
Ollama
Windows安装步骤:
到Ollama下载页下载安装程序,执行安装程序,默认会安装到
C:\Users\{Windows账户名}\AppData\Local\Programs\Ollama
下。如果不想下载的模型安装到C盘,可以通过设置
OLLAMA_MODELS
环境变量更改模型下载路径,我的变量值为E:\LM\ollama
,设置好后记得重启Ollama。安装完成后使用
ollama -v
查看是否安装成功,如果没有运行模型则输出信息大致如下:1
2Warning: could not connect to a running Ollama instance
Warning: client version is 0.2.5
运行一个模型:
可以到library | Ollama查看你的电脑适合的模型,这里我选择通义千问0.5b模型。
打开cmd
,键入以下命令下载并运行模型:
1 | ollama run qwen:0.5b |
模型运行成功后等待输入,我们可以让它介绍一下自己,终端完整执行过程如下:
1 | C:\Users\makun>ollama run qwen:0.5b |
如果不想聊天,想关闭模型,输入聊天内容/bye
即可,其他聊天命令可以使用/?
进行查看。
其他说明:如果Ollama模型被其他程序启动了,没有关闭,再用其他程序调用Ollama模型的话,可能出现异常(没有响应),可以到Windows任务栏的隐藏图标托盘^
处右键
Ollama,Quit Ollama
即可。
Spring AI
可以参考Spring AI - Spring 中文创建Spring AI项目。
创建步骤:
直接使用IDEA的Spring Initializr(即创建Project时的
Spring Boot
)引导,快速创建Spring AI项目。项目参数(按需参考):
参数名 参数值 Name spring-ai-demo Location ~\Desktop\temp\project-demo Language Java Type Maven Group cn.insectmk.demo Artifact spring-ai-demo Package Name cn.insectmk.demo.springaidemo JDK 17 Java 17 Packaging Jar 项目依赖(按需参考):
Spring Boot:
3.3.2
Dependencies:
Web - Spring Web
、AI - Ollama
参考Ollama聊天::Spring AI参考-Spring中文,编写
@Controller
类,案例代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36package cn.insectmk.demo.springai.controller;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
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;
import java.util.Map;
public class ChatController {
private final OllamaChatModel chatModel;
public ChatController(OllamaChatModel chatModel) {
this.chatModel = chatModel;
}
public Map generate( { String message)
return Map.of("generation", chatModel.call(message));
}
public Flux<ChatResponse> generateStream( { String message)
Prompt prompt = new Prompt(new UserMessage(message));
return chatModel.stream(prompt);
}
}编写
src/main/resources/application.properties
,加入以下内容配置Ollama
模型的内容:1
2spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=qwen:0.5b
运行
执行以下步骤以启动程序:
- 先将
Ollama
关闭:Windows任务栏右侧隐藏托盘 -> Ollama(羊驼图标)->鼠标右键
->Quit Ollama
- 打开
cmd
终端,键入ollama run qwen:0.5b
以启动通义千问0.5b模型 - IDEA运行项目启动类
测试:
访问http://localhost:8080/ai/generate以测试对话.
当然,你也可以自定义问题参数,使用案例如:http://localhost:8080/ai/generate?message=给我讲个笑话
访问http://localhost:8080/ai/generateStream以测试流式对话
同上,使用案例如:http://localhost:8080/ai/generateStream?message=给我讲个笑话
后语
好了,现在你已经学会如何让你的Java程序对接AIGC了,快去升级你的程序吧!