一、说明
本章节主要有两个知识点:
使用
Ollama本地安装大模型,并使用ChatBox测试对话。这个在很久之前的文章中也有讲过。使用
Spring AI Alibaba编写代码对接本地大模型。
二、使用Ollama本地安装大模型
1.下载安装Ollama
ollama官网地址:

一路下载安装完事,我使用的Mac,下载的Mac版本,下载完成后可以在Terminal窗口使用相关命令:

第一次run会有对话框,输入/bye退出。
2.安装大模型
在ollama中安装想要的大模型,我这里安装的是deepseek


复制上图的命令,在控制台执行即可运行大模型。
ollama run deepseek-r13.使用chatbox测试
chatbox就是一个UI界面,咱们设置好对应的api相关的地址ip和端口、模型名称即可。

这里需要注意的是,因为是本地安装,本地调用,这里可以使用localhost或者127.0.0.1即可,上图的ip地址是我本地路由器分配的,需要设置下才能使用这种ip地址,打开下面这个即可:

设置完成后即可测试,点击获取,出现咱们之前安装过的大模型就是成功:

可以切换到chat界面对话:

三、spirng ai alibaba对接本地大模型
1.新建项目
这里和上一篇文章一样,都是基于同一个父工程下的子模块。

2.添加maven依赖
父工程pom 可以去上一篇文章中拿到。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zhan</groupId>
<artifactId>ssa-parent</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ssa-ollama</artifactId>
<name>ssa-ollama</name>
<description>ssa-ollama</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</build>
</project>
3.添加yml配置文件
server:
port: 8082
#大模型对话中文乱吼UTF8编码处理
servlet:
encoding:
enabled: true
force: true
charset: UTF-8
#====SpringAIALibaba Config=============
spring:
application:
name: ssa-ollama
ai:
dashscope:
api-key: sk-09c7b571687b46d5a2e25a03fbdd2fd1
ollama:
base-url: http://localhost:11434
chat:
options:
model: deepseek-r1:7b
4.编写测试接口
package com.zhan.ssa.ollama.controller;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.model.ChatModel;
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;
@Slf4j
@RestController
@RequestMapping("/ollama")
public class OllamaController {
@Resource(name = "ollamaChatModel")
private ChatModel chatModel;
/**
* 调用模型
* @param msg
* @return
*/
@GetMapping("/call")
public String call(@RequestParam(name = "msg", defaultValue = "你是谁?") String msg) {
log.info("message: {}", msg);
String result = chatModel.call(msg);
log.info("result: {}", result);
return result;
}
@GetMapping("/stream")
public Flux<String> stream(@RequestParam(name = "msg", defaultValue = "你是谁?") String msg) {
log.info("message: {}", msg);
Flux<String> result = chatModel.stream(msg);
result.subscribe(log::info);
return result;
}
}5.测试结果

