Z次元
文章 笔记 日志
专题
专栏分类
文章归档
友链
友情链接
朋友圈
留言
头像
系列文章
SpringBoot快速集成AI大模型
系列文章
AI大模型
更新于:2026/2/16
|
发布于:2026/1/21
文章摘要
......

集成Ollama

依赖引入

引入SpringBoot AI依赖:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

引入Ollama的starter依赖:

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

配置

可以选择在直接在配置文件配置或者更灵活的代码配置

spring:
    ollama:
      base-url: http://localhost:11434  # ollama运行地址
      chat:
        model: deepseek-r1:14b  # 模型名称
#        可选参数(可选多个参数,这里只列出了两个)
        options:
          temperature: 0.7  #  生成随机性(0-1,数值越大随机性越强)
          max-tokens: 2048   # 最大生成的Token数
package cn.ahzoo;

import io.micrometer.observation.ObservationRegistry;
import org.springframework.ai.model.tool.ToolCallingManager;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaApi;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.ai.ollama.management.ModelManagementOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OllamaConfig {
    @Bean
    public OllamaChatModel ollamaChatModel() {
        // 调用接口
        OllamaApi ollamaApi = OllamaApi.builder()
                .baseUrl("http://localhost:11434")
                .build();
        // 参数配置
        OllamaOptions ollamaOptions = OllamaOptions.builder()
                .model("gemma3:4b")
                .temperature(0.7)
                .build();
        // 构建ToolCallingManager用于工具调用
        ToolCallingManager toolCallingManager = ToolCallingManager.builder().build();
        // 构建ObservationRegistry用于监控
        ObservationRegistry observationRegistry = ObservationRegistry.NOOP;
        // 模型管理配置
        ModelManagementOptions modelManagementOptions = ModelManagementOptions.defaults();

        return new OllamaChatModel(
                ollamaApi,
                ollamaOptions,
                toolCallingManager,
                observationRegistry,
                modelManagementOptions
        );
    }
}

调用

默认调用

调用方式也比较简单,直接注OllamaChatModel 就可以进行调用了:

    @Autowired
    private OllamaChatModel chatModel;

    public String chat(String msg) {
        return chatModel.call(msg);
    }

使用提示词

    @Autowired
    private OllamaChatModel chatModel;

    public String chat(String msg) {
        String systemPrompt = """
                你是一名AI助手。
                请以自然、亲切的方式与用户对话。
                用中文回复。
                """;
        PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
        Prompt prompt = promptTemplate.create(Map.of("content", msg));
        return chatModel.call(new Prompt(prompt.getInstructions()))
                .getResult()
                .getOutput()
                .getText();
    }

流式响应

    @Autowired
    private OllamaChatModel chatModel;

    public Flux<AssistantMessage> chat(String msg) {
        String systemPrompt = """
                你是一名AI助手。
                请以自然、亲切的方式与用户对话。
                用中文回复。
                """;
        PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
        Prompt prompt = promptTemplate.create(Map.of("content", msg));
        return chatModel.stream(new Prompt(prompt.getInstructions()))
                .map(response -> response.getResult().getOutput())
                .doOnComplete(() -> logger.info("流式聊天完成"))
                .doOnError(error -> logger.error("流式聊天失败", error));
    }

集成智谱清言

依赖引入

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-zhipuai</artifactId>
        </dependency>

配置

智谱AI配置同样支持配置文件或者代码配置,这里以配置文件为例,代码配置可以参考上文的Ollama配置。

spring:
  ai:
    zhipuai:
      api-key: { API KEY }  # api key需要从智谱大模型官网获取
      base-url: https://open.bigmodel.cn/api/paas # 智谱大模型的调用地址(默认是这个,如果有更新,可以从官网查询获得)
      chat:
        # 可选参数配置
        options:
          model: glm-4-flash  # 模型名称
          temperature: 0.7  # 随机性(0-1)数值越大随机性越强
          max-tokens: 2048  # 最大生成token数
          top-p: 0.9  # 采样率(0-1)数值越大,生成的发散性/创意性越强
          stop: ["###", "END"]  # 生成结束标识

调用

默认调用

直接注入模型即可调用:

    @Autowired
    private ZhiPuAiChatModel chatModel;

    public String chat(String msg) {
        return chatModel.call(msg);
    }

使用提示词

参考前文的Ollama中的示例

流式响应

    @Autowired
    private ZhiPuAiChatModel chatModel;

    public Flux<AssistantMessage> chat(String msg) {
        String systemPrompt = """
                你是一名AI助手。
                请以自然、亲切的方式与用户对话。
                用中文回复。
                """;
        PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
        Prompt prompt = promptTemplate.create(Map.of("content", msg));
        return chatModel.stream(new Prompt(prompt.getInstructions()))
                .map(response -> response.getResult().getOutput())
                .doOnComplete(() -> logger.info("流式聊天完成"))
                .doOnError(error -> logger.error("流式聊天失败", error));
    }

使用示例

我们这里可以看到,流式响应是这样一段一段的:

集成DeepSeek

依赖引入

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-ai-deepseek</artifactId>  
        </dependency>  

配置

智谱AI配置同样支持配置文件或者代码配置,这里以配置文件为例,代码配置可以参考上文的Ollama配置。

spring:
  ai:
    deepseek:
      api-key: ${DEEPSEEK_API_KEY} # 在DeepSeek控制台申请的API密钥
      base-url: https://api.deepseek.ai
      chat:
        enabled: true
        options:
          model: deepseek-chat  # 模型选择
          temperature: 0.8  # 生成随机性控制(0.0-1.0,值越高越随机)
          max-tokens: 512  # 单次生成最大Token数
          top-p: 0.9  # Nucleus采样参数(0.0-1.0,控制生成词汇的概率分布)
          frequency-penalty: 0.0  # 频率惩罚(-2.0到2.0)
          presence-penalty: 0.0  # 存在惩罚(-2.0到2.0)
          stop: [ "###", "END" ]  # 生成停止序列

调用

默认调用

直接注入模型即可调用:

    @Autowired
    private DeepSeekChatModel chatModel;

    public String chat(String msg) {
        return chatModel.call(msg);
    }

使用提示词

参考前文的Ollama中的示例

流式响应

    @Autowired
    private DeepSeekChatModel chatModel;

    public Flux<AssistantMessage> chat(String msg) {
        String systemPrompt = """
                你是一名AI助手。
                请以自然、亲切的方式与用户对话。
                用中文回复。
                """;
        PromptTemplate promptTemplate = new PromptTemplate(systemPrompt + "\n\n用户输入:{content}");
        Prompt prompt = promptTemplate.create(Map.of("content", msg));
        return chatModel.stream(new Prompt(prompt.getInstructions()))
                .map(response -> response.getResult().getOutput())
                .doOnComplete(() -> logger.info("流式聊天完成"))
                .doOnError(error -> logger.error("流式聊天失败", error));
    }

版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
AI大模型
拥抱AI,畅想未来
人工智能与大模型基础
2025/6/30
Prompt工程——使用提示词让AI更懂你
2025/5/5
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

目录
1
集成Ollama
依赖引入
配置
调用
默认调用
使用提示词
流式响应
2
集成智谱清言
依赖引入
配置
调用
默认调用
使用提示词
流式响应
使用示例
3
集成DeepSeek
依赖引入
配置
调用
默认调用
使用提示词
流式响应
目录
1
集成Ollama
依赖引入
配置
调用
默认调用
使用提示词
流式响应
2
集成智谱清言
依赖引入
配置
调用
默认调用
使用提示词
流式响应
使用示例
3
集成DeepSeek
依赖引入
配置
调用
默认调用
使用提示词
流式响应
博客
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
柒: @Honesty
因为这个系列主要是总结和代码相关的特性,不过这个特性感觉确实可以写一下
Honesty:
哎?Jdk25 对象头压缩这个很重要的特性没记呢
个人占星:
DeepSeek没有想象中的好用
个人占星:
想给自己的网站弄个统计功能,但不会弄,头疼
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2026 By 十玖八柒 版权所有
豫ICP备20021466号