【Spring AI】Java结合ollama实现大模型调用

在较新的Java版本中,编译器已经支持了接入各种AI模型工具进行开发,这篇文章我会介绍如何利用Spring AI进行大模型的调用的基础方法。

环境准备

由于这篇文章是结合ollama进行演示,所以在开始前需要先安装ollama服务,这个的具体步骤我在之前的文章中也详细的介绍过了 ollama部署大模型以及连续分片调用的实现_ollama 调用大模型-CSDN博客

由于兼容性的问题,目前支持Spring AI的最低编译器版本为17,更低的编译器可能会出现兼容性问题,所以首先要准备jdk17+的版本。这个在idea中可以一键下载

Spring的版本需要为3.x

操作步骤

1.创建项目

依赖地址选择Spring官方地址(阿里云镜像Spring版本过低,无法支持Spring AI)

创建为maven项目,jdk选择17以上的版本

 点击下一步

选择Web下的Spring Web和AI下的ollama

点击创建

 在pom文件中可以看到已经自动添加了ollama的依赖

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

2.添加配置信息

在默认的application.properties配置文件中添加如下信息

# ollama服务上模型的名称
spring.ai.ollama.chat.model= huanhuan_deepseek_r1:1.5b
# ollama服务的地址(默认地址http://127.0.0.1:11434)
spring.ai.ollama.base-url= http://127.0.0.1:11434

要选择ollama上已经拉取的模型名称,我指定的模型是我自己训练后的模型,同样想要该效果的可以参考我之前的文章 LLaMA-Factory部署以及大模型的训练(细节+新手向)-CSDN博客 

和  LLaMA-Factory微调后模型导入ollama-CSDN博客

3.创建接口

在根路径下创建一个Controller,标记为RestController,指定访问入口为"/ai"。注入chatClient,注意这个对象需要通过构造器注入

@RestController
@RequestMapping("/ai")
public class AiController {

    ChatClient chatClient;

    //需要构造器注入
    public AiController(ChatClient.Builder chatClient) {
        this.chatClient = chatClient.build();
    }

    
}

在其中添加这个方法

 @RequestMapping("/chat")
    public String chat(String prompt){
        //构建提示词->用户提示词->调用模型->取出响应
        return chatClient.prompt().user(prompt)
              .call().content();
    }

这是一个链式处理,该方法的作用是使用chatClient构建提示词中的用户提示词,将传入的字符串作为用户提示词,并使用call()方法请求大模型,最终取出响应中的content内容返回。

5.测试结果

启动Springboot项目,在浏览器访问

http://localhost:8080/ai/chat?prompt=%E4%BD%A0%E5%A5%BD

由于是一个简单示例,并没有编写详细的前端页面,所以直接通过url构建请求

效果如下

 由此实现了一个简单的Spring AI使用ollama进行大模型调用的功能

<think>我们正在讨论的是如何在Spring AI中配置Ollama模型以关闭深度思考功能。根据引用[2]和引用[3],我们知道Spring AI可以与Ollama集成,而Ollama是一个本地运行大模型的服务。但是,引用中并没有直接提到“深度思考模式”或如何关闭它。因此,我们需要从Ollama模型的配置角度来考虑。 在Ollama中,运行模型时可以通过参数来调整模型的行为。例如,在运行模型时,我们可以设置一些生成参数(如温度、top-p等)来控制生成文本的随机性和创造性。所谓的“深度思考模式”可能是指模型在进行推理时更加深入和详细,这通常与生成参数有关。 然而,在Spring AI中,我们通过`OllamaChatClient`来调用Ollama模型。在创建`OllamaChatClient`时,我们可以设置一个`OllamaOptions`对象,该对象可以包含各种生成参数。 根据Ollama的API文档,生成参数包括: - `temperature`: 控制随机性(0.0更确定,1.0更多样) - `num_predict`: 最大生成的token数 - `top_p`: 采样时考虑的前p个词 - 等等 如果“深度思考模式”是指生成更长的文本(即更多的token)或更详细的推理,那么我们可以通过限制`num_predict`来减少生成的长度。另外,降低`temperature`可能会使回答更加直接和简短。 但是,请注意,引用中没有明确提到“深度思考模式”的配置。因此,我们需要根据对模型行为的理解来调整参数。 在Spring AI中配置Ollama模型生成参数的步骤: 1. 创建`OllamaChatClient`实例。 2. 创建`OllamaOptions`对象,设置所需的参数。 3. 将`OllamaOptions`设置给`OllamaChatClient`。 示例代码: ```java import org.springframework.ai.ollama.OllamaChatClient; import org.springframework.ai.ollama.api.OllamaApi; import org.springframework.ai.ollama.api.OllamaOptions; public class MyAiService { private final OllamaChatClient chatClient; public MyAiService() { // 创建OllamaApi,指定Ollama服务地址(默认是localhost:11434) OllamaApi ollamaApi = new OllamaApi(); // 创建OllamaOptions,设置参数 OllamaOptions options = OllamaOptions.create() .withTemperature(0.5f) // 降低温度值,使回答更直接 .withNumPredict(100); // 限制生成的最大token数 // 创建OllamaChatClient,并设置选项 chatClient = new OllamaChatClient(ollamaApi, options); } public String generate(String prompt) { return chatClient.call(prompt); } } ``` 注意:上述代码中,我们通过`OllamaOptions`设置了`temperature`和`num_predict`参数。你可以根据实际需要调整这些参数。 但是,如果“深度思考模式”是Ollama模型(比如DeepSeek LLM)特有的模式,那么可能需要查看该模型的文档,看是否有特定的参数来控制。例如,有些模型可能有`verbose`参数或者`thinking_depth`参数,但目前Ollama支持的通用参数中并没有直接叫做“深度思考”的参数。 因此,建议尝试调整生成参数来达到减少模型详细输出的目的。如果模型有特定的提示词指令可以关闭深度思考,也可以在用户输入中明确指示,例如在提示词中添加“请用简洁的语言回答,不要详细推理”。 总结:在Spring AI中,我们通过配置`OllamaOptions`来调整模型生成参数,从而影响模型的输出风格。虽然没有直接的“关闭深度思考”的开关,但通过调整生成参数(如温度、最大token数等)和提示词,可以达到类似的效果。 如果上述方法不能解决问题,可能需要查阅具体模型的文档,或者联系模型提供商了解如何控制输出的详细程度。 §§相关问题§§ 1. 在Spring AI中如何配置Ollama模型的其他参数? 2. Ollama模型支持哪些生成参数? 3. 如何通过提示词工程控制大模型的输出风格?</think>在 Spring AI 中配置 Ollama 模型关闭深度思考功能,可通过调整模型生成参数实现。以下是具体解决方案: ### 配置步骤 1. **修改 Ollama 启动参数** 在运行 Ollama 服务时添加 `--verbose false` 参数关闭详细输出: ```bash # Docker 启动方式 docker run -d -p 11434:11434 ollama/ollama --verbose false ``` 2. **Spring AI 客户端配置** 在 Spring Boot 应用中配置 `OllamaChatClient` 的生成参数: ```java import org.springframework.ai.ollama.OllamaChatClient; import org.springframework.ai.ollama.api.OllamaApi; import org.springframework.ai.ollama.api.OllamaOptions; @Bean public OllamaChatClient ollamaChatClient() { OllamaApi api = new OllamaApi("http://localhost:11434"); // 关键配置:关闭深度思考模式 OllamaOptions options = OllamaOptions.create() .withTemperature(0.7f) // 降低随机性 .withNumPredict(150) // 限制输出长度 .withRepeatPenalty(1.2f); // 抑制重复内容 return new OllamaChatClient(api).withDefaultOptions(options); } ``` ### 参数说明 | 参数 | 作用 | 推荐值 | 效果 | |-----------------|-----------------------------|--------|--------------------| | `temperature` | 控制输出随机性 | 0.5-0.8 | 降低"深入分析"倾向 | | `num_predict` | 限制生成 token 数量 | 100-200 | 缩短响应内容 | | `repeat_penalty`| 惩罚重复内容 | ≥1.2 | 避免冗余解释 | > **注意**:DeepSeek 等模型无显式"深度思考开关",需通过参数组合抑制该行为[^1][^2]。若需完全禁用,建议在提示词开头添加指令:`[System] 请直接给出结论,无需推理过程`[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值