目录

最初的尝试

升级springboot

依赖项调整

配置调整

代码调整

引入ollama依赖

配置ollama

编写测试Controller

测试


最初的尝试

在刚开始,我选择直接引入ollama依赖:

但是,当我引入依赖后发现,项目中无法使用该依赖的东西,即使maven中显示已经有了这个依赖:

于是,我查阅了相关资料,得知:springboot版本需要为3.x才能使用ollama的依赖,而我的项目的springboot版本为2.7.12

所以,我又尝试升级springboot的版本,直接更改了版本号:

启动项目后,仍然报错:

 将该错误信息交给gpt,它的回答是:

即使我将配置类都注释掉,还是有这个问题。

就这样,我在这个问题上逗留了一下午。

最后,在我一筹莫展之际,终于发现了问题所在。将springboot从2.x版本升级到3.x版本并不仅仅是改版本号这么简单,对应的一些依赖、配置甚至是一些代码都需要做调整。

接下来,我将介绍升级springboot、部署ollama的整个过程

升级springboot

 首先需要修改版本号

依赖项调整

mysql的依赖需要改成 mysql-connector-j

mybatis-plus依赖也需要进行替换:

配置调整

在3.x版本的springboot中,redis的配置也需要调整,因为它多了一个data层级:

代码调整

在我的项目中有一个SpringSecurity的配置类:

但是在 Spring Boot 3.x 版本中,WebSecurityConfigurerAdapter 已经被标记为不推荐使用,推荐使用的是 SecurityFilterChain。所以我进行了修改,如下图:

代码:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig {

    // 配置 BCrypt 密码加密器
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .cors()  // 启用 CORS 支持
                .and()
                .csrf().disable();  // 禁用 CSRF 防护

        return http.build();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("*"));
        configuration.setAllowedHeaders(Arrays.asList("*"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

在3.x版本的springboot中,需要将javax.servlet包替换为jakarta.servlet:

最后,由于调整了mybatis-plus的依赖,所以一些代码的使用也需要调整:

类似的调整共有三处,我都进行了修改。

这样,就成功地将springboot2.x升级为springboot3.x了

引入ollama依赖

<dependency>
            <groupId>group.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>

配置ollama

在配置文件中,对ollma进行相关的配置:

spring:
    ai:
        ollama:
            base-url: http://localhost:11434
            chat:
                enabled: true
                model: llama3.1:8b
                options:
                    temperature: 0.7

编写测试Controller

@RestController
@RequestMapping("/ollama")
public class OllamaController {


    @Resource
    private OllamaChatModel ollamaChatModel;


    @GetMapping
    public void test() {
        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);
    }
}

在controller中编写了一个方法,让大模型回答“牛顿是谁?”的问题

这样,项目启动后,访问/ollama路径,就会执行test方法。如果控制台有输入,说明大模型进行了回答,部署成功。

测试

启动项目,访问localhost:8081/ollama

耐心等待后,控制台输出:

大模型回答了“牛顿是谁”的问题,部署成功。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐