ollama-sb 多态 图转文 20260418 【gemma3:4b 解析慢】




1、pom
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>3.2.0</spring-boot.version>
<spring-ai.version>1.0.0-M6</spring-ai.version>
</properties>
<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>
<!-- Spring AI Ollama starter -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
<version>${spring-ai.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
<!-- Spring AI 里程碑/快照仓库(必须配置,否则依赖无法下载) -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
2、yml
server:
port: 18080
# Ollama 服务地址(默认端口 11434)
# spring.ai.ollama.base-url=http://localhost:11434
# 指定使用的 DeepSeek 模型(与 ollama pull 的模型名一致)
# spring.ai.ollama.chat.options.model=deepseek-r1:1.5b
# 温度参数(0~1,值越小越严谨,值越大越有创造性)
# spring.ai.ollama.chat.options.temperature=0.7
spring:
ai:
ollama:
chat:
options:
model:moondream:v2 #gemma3:4b模型有点慢
#temperature: 8.7
base-url: http://192.168.91.164:11434
3、controller
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/openai")
@ResponseBody
@RestController
public class OllamaChatModelController {
@Autowired
private OllamaChatModel ollamaChatModel;
/*
多态 图转文
*/
@GetMapping("/simple/ollamamulti")
public String ollamamulti () {
// 指定读取文件的路径
var imageResource = new ClassPathResource("files/pig.png");
// 指定大模型的配置项,这里使用 ollama 拉取当中的 gemma3 大模型
// 直接用你已有的 gemma3:4b,做参数优化提速
OllamaOptions ollamaOptions = OllamaOptions.builder()
.model("moondream:v2")
.temperature(0.1) // 越低越快,减少随机生成
.numPredict(256) // 限制输出长度,避免模型啰嗦
.numCtx(2048) // 限制上下文窗口,减少内存占用
.build();
// 说明读取的是那个类型的多模态文件类型,这里是图片 img
Media media = new Media(MimeTypeUtils.IMAGE_PNG, imageResource);
// 4. 构建 UserMessage(关键修正:直接用构造方法)
UserMessage userMessage = new UserMessage(
"识别图片", // 文本指令
List.of(media) // 图片媒体列表
);
ChatResponse response = ollamaChatModel.call(
new Prompt(
userMessage, // 写明提示词
ollamaOptions
)
);
System.out.println(response.getResult().getOutput().getText());
return response.getResult().getOutput().getText();
}
}
4、浏览器
http://localhost:18080/openai/simple/ollamamulti


浙公网安备 33010602011771号