当前位置: 首页 > article >正文

spring ai 调用本地部署的deepseek实现简单的问答功能

这里写自定义目录标题

  • 安装deepseek
  • 创建springboot 项目
    • pom.xml
    • application.yml
    • DeepSeekService
    • DeepSeekController

安装deepseek

  1. Ollama作用
    • deepseek 需要运行在ollama上
  2. 下载Ollama
    • Ollama官网:https://ollama.com/
    • 下载windows版本
      在这里插入图片描述
      傻瓜式安装Ollama

选择模型
在这里插入图片描述
由于我电脑配置较低在这里插入图片描述
我选择最低版本的模型
在这里插入图片描述
打开windows doc 窗口 执行ollama run deepseek-r1:1.5b 进行模型镜像下载和安装
在这里插入图片描述
部署完成,send a message,输入内容即可开始对话。
在这里插入图片描述

创建springboot 项目

  • 环境要求 jdk17 + springboot 3.2+

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wl</groupId>
    <artifactId>spring-deepseek-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M5</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>
    </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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

spring:
  ai:
    ollama:
      # Ollama模型地址
      base-url: http://192.168.10.97:11434
      chat:
        options:
          model: deepseek-r1:1.5b

DeepSeekService

package com.wl.service;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.SystemMessage;
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.stereotype.Service;

import java.util.List;

@Service
public class DeepSeekService {

    @Resource
    private OllamaChatModel chatClient;

    public String chat(String message) {
        List<Message> abstractMessages = List.of(
//                new SystemMessage("你是一个工单分析专家,请根据用户输入的内容从以下工单分类中找出一个分类 ;分类如下\n1" +
//                        "垃圾清运\n2" +
//                        "维修"),
                new UserMessage(message)
        );
        Prompt prompt = new Prompt(abstractMessages);
        ChatResponse call = chatClient.call(prompt);
        System.out.println(call);
        return call.getResult().toString();
    }

}

DeepSeekController

package com.wl;

import com.wl.service.DeepSeekService;
import jakarta.annotation.Resource;
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("deepseek")
public class DeepSeekController {

    @Resource
    private DeepSeekService deepSeekService;
    @GetMapping("chat")
    public String chat(@RequestParam String ques) {
        return deepSeekService.chat(ques);
    }
}


http://www.kler.cn/a/580740.html

相关文章:

  • Linux原生异步IO原理与实现(Native AIO)
  • 【深度学习】参数管理
  • CI/CD—Jenkins实现自动构建Docker镜像运行Java程序
  • 初识Spring Batch:开启批处理的高效之旅
  • 使用阿里云操作系统控制台排查内存溢出
  • LLM应用开发(六)-联动带UI聊天机器人
  • Golang学习笔记_44——命令模式
  • Vue3 模板引用:打破数据驱动的次元壁(附高阶玩法)
  • Xss漏洞问题
  • SpringBoot + ResponseBodyEmitter 实时异步流式推送
  • 设计模式之单例模式:原理、实现与应用
  • javaweb自用笔记:请求参数、响应、分层解耦、
  • ES6 解构详解
  • Varlens(手机上的单反)Ver.1.9.3 高级版.apk
  • TCP/IP原理详细解析
  • git合并分支回滚的方法
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-5.1.1热点分片识别与均衡策略
  • ​【C++设计模式】第十八篇:备忘录模式(Memento)
  • C# OPC DA获取DCS数据(提前配置DCOM)
  • 高级java每日一道面试题-2025年2月17日-数据库篇-使用 MySQL 的索引应该注意些什么?