当前位置: 代码网 > it编程>编程语言>Java > springBoot集成Ollama大模型及流式传输的问题小结

springBoot集成Ollama大模型及流式传输的问题小结

2025年04月26日 Java 我要评论
集成ollama大模型1.官网下载ollama大模型https://ollama.com/2.拉取版本镜像,使用操作类似docker我用的是llama3.1:8b的版本3.问题集合d:\jiyunsh

集成ollama大模型

1.官网下载ollama大模型

https://ollama.com/

2.拉取版本镜像,使用操作类似docker

我用的是llama3.1:8b的版本

3.问题集合

d:\jiyunshixunstudy\shixun2\spring-ai\src\main\java\com\ryx\ollama\controller\aicontroller.java:4:37
java: 无法访问org.springframework.ai.ollama.ollamachatclient
  错误的类文件: /d:/java/repository_xsx/io/springboot/ai/spring-ai-ollama/1.0.3/spring-ai-ollama-1.0.3.jar!/org/springframework/ai/ollama/ollamachatclient.class
    类文件具有错误的版本 61.0, 应为 52.0
    请删除该文件或确保该文件位于正确的类路径子目录中。

jdk版本错误

java类文件的版本号对应着特定的java编译器版本。在java中,不同的java编译器版本会生成不同版本号的类文件。这些版本号可以帮助java虚拟机(jvm)确定类文件的兼容性。
具体来说,java类文件的版本号对应如下:
- java 1.0对应版本号 45.0
- java 1.1对应版本号 45.3
- java 1.2对应版本号 46.0
- java 1.3对应版本号 47.0
- java 1.4对应版本号 48.0
- java 5对应版本号 49.0
- java 6对应版本号 50.0
- java 7对应版本号 51.0
- java 8对应版本号 52.0
- java 9对应版本号 53.0
- java 10对应版本号 54.0
- java 11对应版本号 55.0
- java 12对应版本号 56.0
- java 13对应版本号 57.0
- java 14对应版本号 58.0
- java 15对应版本号 59.0
- java 16对应版本号 60.0
- java 17对应版本号 61.0
在您的情况中,错误信息中提到的版本号 52.0 对应着 java 8。这意味着您的项目中的类文件是使用 java 8 编译器编译的。
因此,如果您的项目需要运行这些类文件,您的开发环境和运行环境都需要支持 java 8 或更高的版本。

一般来讲这个错误spring的parent版本不合适,修改版本即可,我用的jkd17,对应parent为3.3.1

问题2:ai的依赖版本无法拉取:

dependency 'org.springframework.ai:spring-ai-ollama-spring-boot-starter:' not found

这个报错是找不到版本,设置依赖版本即可,我用的是

<spring-ai.version>1.0.0-snapshot</spring-ai.version>

解决无法拉取依赖的远程仓库地址

 <repositories>
        <!-- spring ai -->
        <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>

解决方案:1:配置一下远程仓库来源

yml配置

server:
  port: 8888
spring:
  application:
    name: cleaner-ai
  ai:
    ollama:
      # ollama api server 地址默认的他就是11434
      base-url: http://localhost:11434
      chat:
        enabled: true
        # 使用的模型名称
        model:
          llama3.1:8b
          # 你自己下载的模型的版本
        options:
          temperature: 0.7

controller配置

我用的是两种访问的方案,流式传输和普通输出

package com.ryx.ollama.controller;
​
import jakarta.annotation.resource;
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.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;
​
@restcontroller
@requestmapping("ai")
public class aicontroller {
    @resource
    private ollamachatmodel ollamachatmodel;
​
    /**
     * 流式对话
     *
     * @param message 用户指令
     * @return
     */
    @getmapping("/streamchat")
    public flux<chatresponse> generatestream(@requestparam("message") string message) {
        message = "请使用中文简体回答:" + message;
        prompt prompt = new prompt(new usermessage(message));
        return ollamachatmodel.stream(prompt);
    }
​
    /**
     * 普通对话
     * @param message   用户指令
     * @return
     */
    @getmapping("/chat")
    public string generate(@requestparam("message") string message) {
        message = "请使用中文简体回答:" + message;
        prompt prompt = new prompt(new usermessage(message));
        chatresponse chatresponse = ollamachatmodel.call(prompt);
        string content = chatresponse.getresult().getoutput().getcontent();
        system.out.println("content = " + content);
        return chatresponse.tostring();
    }
}
​

返回值示例

{
  "metadata": {
    "id": "",
    "usage": {
      "prompttokens": 21,
      "generationtokens": 60,
      "totaltokens": 81
    },
    "ratelimit": "org.springframework.ai.chat.metadata.emptyratelimit@13f24745"
  },
  "generations": [
    {
      "assistantmessage": {
        "messagetype": "assistant",
        "toolcalls": [],
        "textcontent": "叫爹是指父母对孩子的称呼,尤其是在一些非洲国家,如肯尼亚和坦桑尼亚,是一种常见的称呼方式。这个习惯也存在于其他地区,如加拿大、美国等地的某些社区中。",
        "metadata": {
          "messagetype": "assistant"
        }
      },
      "chatgenerationmetadata": {
        "finishreason": "stop",
        "contentfiltermetadata": null
      }
    }
  ]
}

 浏览器测试

postman测试 

到此这篇关于springboot集成ollama大模型以及流式传输的文章就介绍到这了,更多相关springboot集成ollama大模型内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com