Z次元
文章 笔记 日志
专题
专栏分类
文章归档
友链
友情链接
朋友圈
留言
头像
系列文章
SpringBoot快速集成AI大模型
系列文章
AI大模型
更新于:2026/1/21
|
发布于: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:
    prompt-suffix: -dev
    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));
    }

使用示例

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

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

删除确认

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

这里还没有评论哦

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

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