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
相关推荐
CV工程师丁Sir10 小时前
ArkWeb 手记 04|DevTools 调试与缓存清理
java·spring·缓存·harmonyos
FPGA信号处理11 小时前
【模式识别】第三节课:分类误差的来源与线性分类器
人工智能·分类·数据挖掘
hrrrrxeeeee11 小时前
电商从业者AI技能提升:证书选择与商品、客服、运营场景落地
人工智能
小和尚同志16 小时前
1.8k star 的开源 token 使用量监控神器— TokenTracker
人工智能·ai编程
极客 - L U17 小时前
神经网络 - 激活函数、损失函数、优化器
人工智能·深度学习·神经网络
Sarvartha17 小时前
final 关键字
java·开发语言
2601_9520477917 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
数字融合17 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi01117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
xiangzhihong817 小时前
创之星花店多端业务闭环拆解
人工智能