书接上回,我们在本地安装了一个Ollama,然后下载了一个deepseek-r1:7b,传送门
本次目标:使用springboot对接ollama,完成简单api对接

1.创建一个项目,选择JDK17,Spring Boot版本3.5.3,最好高版本,否则可能会有各种依赖问题。部分idea无法选择3.5.3版本,可以修改配置,输入地址:https://start.spring.io。

在这里插入图片描述

2. 我们使用的是Ollama,引入相关依赖

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

3.调整配置文件,其他配置,按需引入调整

在这里插入图片描述

4.注入Bean

@Configuration
public class BeanConfig {

    @Bean
    public ChatClient chatClient(ChatClient.Builder chatClientBuilder) {
        return chatClientBuilder.build();
    }
}

5.创建一个接口

@Tag(name = "ai聊天")
@RestController
@RequestMapping("ollama")
public class OllamaController {

    @Autowired
    private ChatClient chatClient;

    @GetMapping("chat")
    public String chat(String question) {
        return chatClient.prompt()
                .user(question)
                .call()
                .content();
    }
}

6.接口调用,聊天测试

在这里插入图片描述

7.但此时是一次性输出的,我们平时使用的ai是一个字一个输出,改造一下,使用流式输出。

@GetMapping(value = "chatStream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> chatStream(String question) {
        return chatClient.prompt()
                .user(question)
                .stream()
                .content();
    }

8. 我使用的是ApiPost进行测试,选择Event Stream Request请求方式,可以看到返回数据是实时的,而不是等待所有内容完成再输出!

在这里插入图片描述
在这里插入图片描述

9.有时候我们需要给AI设置一个默认的人设,可以再注入Bean时设置

在这里插入图片描述
在这里插入图片描述
目前来说,大致可以对话了,但经过测试,ai似乎没有记忆,上下文对话毫无关联,未完待续…

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐