开发喵星球

SpringBoot整合Ollama

SpringBoot整合Ollama

在本地Ollama上安装大模型,就可以将大模型当GPT一样使用进行交流,参考下面具体对接到SpringBoot的步骤。

引入Ollama依赖

本地搭建好springboot工程,然后在pom文件中引入Ollama核心依赖

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

编写配置文件

application.properties配置文件中添加Ollama相关的配置信息,Ollama本地端口为11434

server:
  port: 8088

spring:
  application:
    name: chat-001

  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: qwen:0.5b-chat
    openai:
      api-key: 你的apikey
      base-url: openai地址

使用Ollama api

Ollama聊天API的核心对象为OllamaChatClient,与上述的spring ai中提供的client对象类似,在程序中可以直接调用其api,如下,传入一个msg参数,返回响应的文本内容

import jakarta.annotation.Resource;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OllamaChatController {

    @Resource
    private OllamaChatClient ollamaChatClient;

    //http://localhost:8088/ollama/chat?msg=大数据的技术栈有哪些
    @GetMapping("/ollama/chat")
    public String ollamaChat(@RequestParam String msg){
        String resMsg = ollamaChatClient.call(msg);
        return resMsg;
    }

}

然后启动服务,在浏览器中调用接口传入数据,就可以看到效果

image-20240701140618634

也可以使用Prompt进行参数传递,在OllamaChatController中:

    @GetMapping("/ollama/chat/v2")
    public Object ollamaChatV2(@RequestParam String msg){
        Prompt prompt = new Prompt(msg);
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse;
    }

返回结果如下

image-20240701140746694

但是这种返回json数据的时候,需要对json中的字段进行解析。

spring ai官网中也提供了Ollama的相关文档,地址:Ollama Chat :: Spring AI Reference,在文档中,可以找到很多有关Ollama的详细的配置参数,这些配置参数,都可以在Prompt对象或者配置文件中进行合理的使用,达到最佳的实践效果

image-20240701140849271

在下面的接口中,仍然使用Prompt对象,里面传入更多的参数选项做控制

    //http://localhost:8088/ollama/chat/v3?msg=中国排名前十的大学
    @GetMapping("/ollama/chat/v3")
    public Object ollamaChatV3(@RequestParam String msg){
        Prompt prompt = new Prompt(
                msg,
                OllamaOptions.create()
                        .withModel("qwen:0.5b-chat")
                        .withTemperature(0.4F)
        );
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse.getResult().getOutput().getContent();
    }

再次调用一下接口

截屏2024-07-01 14.09.24

再次检查一下结果是否正确。这样就完成了springboot接入Ollama API

   
分类:玩技术 作者:荡荡, 浩浩 发表于:2024-07-01 14:18:07 阅读量:107
<<   >>


powered by kaifamiao