JeecgBoot框架集成spring ai并进行同步调用异步调用模板

来源项目:星辰wms

一.引入依赖

SpringAI完全适配了SpringBoot的自动装配功能,而且给不同的大模型提供了不同的starter,比如:

模型/平台 starter
Anthropic <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-anthropic-spring-boot-starter</artifactId> </dependency>
Azure OpenAI <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> </dependency>
DeepSeek <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency>
Hugging Face <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-huggingface-spring-boot-starter</artifactId> </dependency>
Ollama <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> </dependency>
OpenAI <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency>

1.版本

复制代码
<spring-ai.version>1.0.0-M6</spring-ai.version>

2.依赖管理

复制代码
<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>

3.引入所需依赖

复制代码
<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

4.将ai模块依赖引入到主体项目依赖中

复制代码
ependency>
    <groupId>org.jeecgframework.boot</groupId>
    <artifactId>jeecg-boot-module-airag</artifactId>
    <version>3.8.1</version>
</dependency>

二.修改配置

复制代码
spring:
  ai:
    ollama:
      base-url: http://localhost:11434 # ollama服务地址, 这就是默认值
      chat:
        model: deepseek-r1:7b # 模型名称
        options:
          temperature: 0.8 # 模型温度,影响模型生成结果的随机性,越小越稳定
    openai:
      base-url: https://dashscope.aliyuncs.com/compatible-mode
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: qwen-max-latest # 可选择的模型列表 https://help.aliyun.com/zh/model-studio/getting-started/models

三.创建ChatClient配置类

复制代码
@Configuration
public class ChatConfiguration {
    @Bean
    public ChatClient OllamaChatClient(OllamaChatModel model) {
        return ChatClient.builder(model)
                .build();
    }
    @Bean
    public ChatClient OpenAIChatClient(OpenAiChatModel model){
        return ChatClient.builder(model)
                .build();
    }
}

四.同步调用

复制代码
@RestController
@RequestMapping("/ai")
public class ChatController {
    @Resource(name = "chatClientOllama")
    private ChatClient chatClient;
    @RequestMapping("/chat")
    public String chat(String prompt){
        return chatClient
                .prompt(prompt)
                .call()
                .content();
    }
}

五.流式调用

复制代码
@RestController
@RequestMapping("/ai")
public class ChatController {
    @Resource(name = "chatClientOpenAI")
    private ChatClient chatClient;
    @RequestMapping(value = "/chat",produces = "text/html;charset=UTF-8")
    public Flux<String> chat(String prompt){
        return chatClient
                .prompt(prompt)
                .stream()
                .content();
    }
}

六.日志Advisor

SpringAI基于AOP机制实现与大模型对话过程的增强、拦截、修改等功能。所有的增强通知都需要实现Advisor接口。

创建chatClient时加入advisors

复制代码
@Configuration
public class ChatConfiguration {
    @Bean
    public ChatClient chatClientOllama(OllamaChatModel model) {
        return ChatClient.builder(model)
                .defaultAdvisors(new SimpleLoggerAdvisor())
                .build();
    }
    @Bean
    public ChatClient chatClientOpenAI(OpenAiChatModel model){
        return ChatClient.builder(model)
                .defaultAdvisors(new SimpleLoggerAdvisor())
                .build();
    }
}

修改日志级别

复制代码
logging:
  level:
    org.springframework.context.support.PostProcessorRegistrationDelegate: error
    org.flywaydb: debug
    org.jeecg.modules.system.mapper: info
相关推荐
龙萱坤诺21 分钟前
无限画布 + gpt-image-2:用智狐AI工作台把AI草图直接拖进排版区
人工智能·ai短剧·无限画布
马***4118 小时前
适配成人英语学习痛点,打造落地性强的学习辅助方式
人工智能·学习
夜焱辰8 小时前
浏览器端 Agent 的文件版本管理:不用 Git,基于 OPFS + SQLite 自己造了一个
前端·人工智能
Ricky05538 小时前
CTRL-WORLD:一种用于机器人操控的可控生成世界模型(中美2025年联合研究)
人工智能·机器人·世界模型
刀法如飞8 小时前
AI时代:DDD领域驱动建模与Ontology语义建模的区别
java·设计模式·架构
jeffer_liu8 小时前
Spring AI 生产级实战:工具调用
java·人工智能·后端·spring·ai编程
阿乔外贸日记8 小时前
2026尼日利亚五项清关政策更新,拉高能源装备进口综合成本
大数据·人工智能·搜索引擎·智能手机·云计算·能源
比昨天多敲两行8 小时前
linux 线程概念与控制
java·开发语言·jvm
8Qi89 小时前
LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅
java·算法·leetcode·指针·排序
民乐团扒谱机9 小时前
【AI笔记】短时纯音时长对音高感知偏移效应研究综述
人工智能·笔记