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

0
(0)

Spring Boot 集成 Ollama 大模型及流式传输问题总结

随着人工智能技术的快速发展,Spring Boot 作为流行的微服务框架,与 Ollama 大模型的结合越来越受到关注。本文将从实际开发的角度出发,分享在开发过程中遇到的一些问题及解决方案,帮助开发者更高效地完成集成。

集成 Ollama 大模型的步骤

在开始集成前,我们需要先获取并安装 Ollama 大模型。首先可以从其官方网站上下载相关资源。

Ollama 官方网站地址为:https://ollama.com/

接下来,我们需要通过 Docker 来拉取所需的版本镜像。本文中使用的是 llama-3.1-8b 版本。只需按照 Docker 的常规操作即可完成模型的部署。

常见问题及解决方案

JDK 版本错误问题

在开发过程中,可能会遇到以下错误信息:

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 8(即版本 52.0)编译的,但项目配置中使用的是 Java 17(版本 61.0)。解决方法是将 spring 的 parent 版本调整为兼容的版本。在本文案例中,使用了 JDK 17,并将 parent 版本配置为 3.3.1。

依赖版本无法拉取问题

在构建项目时,可能会遇到以下问题:

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

该问题通常是由于依赖版本不存在或配置错误引起的。确认依赖版本无误后,只需在项目中添加以下配置即可解决:

1.0.0-SNAPSHOT

另外,还需要在 pom 文件中添加远程仓库的配置:


    
        spring-milestones
        https://repo.spring.io/milestone
    
    
        spring-snapshots
        https://repo.spring.io/snapshot
    

配置项解析

application.yml 配置

server:
    port: 8888
spring:
    application:
        name: Cleaner-AI
    ai:
        ollama:
            base-url: http://localhost:11434
            chat:
                enabled: true
                model: llama3.1:8b
                options:
                    temperature: 0.7

在配置文件中,我们设置了 Ollama 服务的访问地址和默认模型]

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;

    @GetMapping("/streamChat")
    public Flux generateStream(@RequestParam("message") String message) {
        message = "请使用中文简体回答:" + message;
        Prompt prompt = new Prompt(new UserMessage(message));
        return ollamaChatModel.stream(prompt);
    }

    @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();
    }
}

在 Controller 中,我们实现了两种消息处理方式:流式传输和普通输出。用户可以根据实际需求选择合适的处理方式。

功能测试示例

当发送一个包含用户消息的请求时,系统会返回如下的 JSON 结果:

{
    "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大模型及流式传输的问题小结

总结

通过本文的总结,我们了解了 Spring Boot 集成 Ollama 大模型及流式传输的关键点和注意事项。在实际应用中,可能会遇到模型加载失败、版本不兼容、流式传输不稳定等问题。针对这些问题,我们可以采取相应的措施进行解决,如调整模型版本、优化配置参数、使用合适的传输协议等。掌握这些技巧,可以帮助开发者更加顺利地实现 Spring Boot 与 Ollama 大模型的集成,提升项目的整体性能和用户体验。

文章目录

共计0人评分,平均0

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

告诉我们如何改善这篇文章?

文章标题:springBoot集成Ollama大模型及流式传输的问题小结
更新时间:2025年04月27日 12时00分54秒
文章链接:https://www.sokb.cn/soyi-5977.html
文章版权:易搜资源网所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系我们!
Like (0)
Previous 2025 年 4 月 27 日
Next 2025 年 4 月 27 日

相关推荐

发表回复

Please Login to Comment