Spring Boot 接入Ollama实现与Deepseek简单对话

编程教程 (69) 2025-02-20 17:40:45

Ollama 环境准备

Ollama安装使用参考:Deepseek Windows安装和入门使用

Spring Boot项目接入Ollama

Spring Boot 项目创建

提示:此处需spring boot 3.x + jdk 17

创建项目时候的几个核心依赖:

spring-boot-starter-web  spring-ai-ollama-spring-boot-starter  详细参考下面片段(版本实时变化注意更新)

<properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M6</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>annotationProcessor</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>

 

Ollama 配置

配置ollama服务地址和端口以及默认模型

spring:
  application:
    name: demo-boot-ollama
  ai:
    ollama:
      init:
        pull-model-strategy: never #默认不拉取没有的模型
      base-url: http://192.168.31.162:11434
      chat:
        options:
          model: deepseek-r1:8b

更多参数参考:Ollama Chat :: Spring AI Reference Base Properties部分

与Ollama 对话

@RestController
public class OllamaController {

    @Resource
    OllamaChatModel ollamaChatModel;

    @GetMapping(value = "/ai/ollama/default")
    public Object ollama(@RequestParam(value = "msg")String msg) {
        String called = ollamaChatModel.call(msg);
        System.out.println(called);
        return called;
    }

    @GetMapping(value = "/ai/ollama/custom")
    public Object ollamaConfig(@RequestParam(value = "msg")String msg){
        ChatResponse chatResponse=ollamaChatModel.call(new Prompt(msg,
                 OllamaOptions.builder()
                         .model("deepseek-r1:14b")//使用哪个大模型
                         .temperature(0.4)//温度,温度值越高,准确率下降,温度值越低,准确率上升
                         .build()
                 ));//温度,温度值越高,准确率下降,温度值越低,准确率上升
        System.out.println(chatResponse.getResult().getOutput().getText());
        return chatResponse.getResult().getOutput().getText();
    }
}

两个简单对话实现,第一个使用默认的application配置模型对话,第二个自定义对话模型和其他参数;

 

Spring Boot Ollama 更多配置参考:Ollama Chat :: Spring AI Reference

 

浏览器访问测试:

image
简单默认对话
Spring Boot 接入Ollama实现与Deepseek简单对话_图示-8dd3c3d993cc42ea91d93c893ceecb1c.png
简单自定义对话

 

另一个demo

@RestController
public class ChatController {

    /**
     * 注入application.yml配置的模型
     */
    @Resource
    OllamaChatModel chatModel;

    @GetMapping("/ai/generate")
    public Map<String,String> generate(@RequestParam(value = "message", defaultValue = "请讲一个笑话") String message) {
        return Map.of("generation", this.chatModel.call(message));
    }

    //流返回
    @GetMapping("/ai/generateStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "请讲一个笑话") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }

}
Spring Boot 接入Ollama实现与Deepseek简单对话_图示-3ed2f9ffbdc34a4692b0dd3350938336.png
聊天

 

使用单例测试方式对话,且指定格式化输出内容:

    @Resource
    OllamaChatModel ollamaChatModel;

    @Test
    public void chat() throws JsonProcessingException {
        String jsonSchema = """
        {
            "type": "object",
            "properties": {
                "steps": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "explanation": { "type": "string" },
                            "output": { "type": "string" }
                        },
                        "required": ["explanation", "output"],
                        "additionalProperties": false
                    }
                },
                "final_answer": { "type": "string" }
            },
            "required": ["steps", "final_answer"],
            "additionalProperties": false
        }
        """;

        Prompt prompt = new Prompt("8x + 7 = -23 , 请计算x的值",
                OllamaOptions.builder()
//                        .model(OllamaModel.LLAMA3_2.getName())
                        .model("deepseek-r1:8b")
                        .format(new ObjectMapper().readValue(jsonSchema, Map.class))
                        .build());

        ChatResponse response = this.ollamaChatModel.call(prompt);
        System.out.println(response.getResult().getOutput().getText());
    }

执行结果参考:

Spring Boot 接入Ollama实现与Deepseek简单对话_图示-9e226662f5c445dcb42e3804ff3a76c4.png
执行结果参考

最终计算结果正确。

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Ollama 环境准备Ollama安装使用参考:Deepseek Windows安装和入门使用Spring Boot项目接入OllamaSpring Boot
概述本文讲解Java编程中如何通过Spring AI框架 集成 Redis Stack 向量数据库和Ollama模型服务提供者实现RAG本地外挂知识库。前置条件
基于上一个项目Spring Boot 接入Ollama实现与Deepseek简单对话修改,增加嵌入库配置,修改模型拉取策略为alwaysapplication.
Ollama 简介Ollama 是一个用于部署本地 AI 模型的工具,开发者可以在自己的机器上运行模型,并通过 API 接口调用。在本地搭建 Ollama 服务
问题ollama国内拉取模型慢,断点续传也蛮怎么办,当然是修改ollama镜像源 配置ollama模型国内镜像源
安装环境windows 11ollama工具下载ollama工具ollama官网 Download Ollama on Windows注:ollama同时支持L
在科技领域,新兴公司的涌现几乎每天都有,而每一家公司背后都有着独特的故事和潜力。最近,一家名为“深度求索”(DeepSeek)的中国公司引发了广泛关注。这家公司
继上一篇deepseek Windows安装和入门使用 本地部署deepseek只能在cmd窗口使用,体验感不好。这里使用一个可视化工具Cherry Studi
确认Ollama兼容您的GPUNvidiaOllama 支持计算能力 5.0 及以上的 Nvidia GPU。要检查您的显卡是否受支持,请查看您的计算兼容性:h
Ollama 模型动辄xxGB,默认位置可能不满足需求,特别是Windows,默认的C盘,所以一般都需要调整下Ollama 模型存放位置。ollama 默认的模
一 了解什么是 RAGRAG(Retrieval Augmented Generation)检索增强生成,是 2023 年最火热的 LLM 应用系统架构,它的作
概述Ollama官方最新版0.5.7,默认是不支持AMD 780m(代号:gfx1103)集成显卡的,已知方法都是基于一个开源项目ollama-for-amd来
目标使用Redis Stack中间件作为向量数据库(Vector Database)实现文档数据的存储和查询功能。先决条件已安装好的 redis stack ,
GPUNvidiaOllama 支持计算能力为 5.0 及以上的 Nvidia GPU。检查你的计算兼容性,以确认你的显卡是否受支持: https://deve