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
相关推荐
weixin_446260859 小时前
从被动镜像到主动智能体:面向网络物理人工智能的整体论数字孪生(HDT-Net)
网络·人工智能
秋枫要学习9 小时前
你的鼠标,正在被 AI 抢走
人工智能·计算机外设
ZJH__GO9 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆9 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光9 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
满怀冰雪10 小时前
19-图像数据处理:PaddleVision Transform 实战
人工智能·深度学习·计算机视觉·paddle
IT_陈寒10 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
marvelyu10 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
带娃的IT创业者10 小时前
Kimi-K3 开源背后:2.8 万亿参数的“暴力美学”与智能体的新拐点
人工智能·开源·大模型·智能体·开源模型·kimi-k3·moonshot ai
m0_3807438710 小时前
实战看出 LLM API 的隐性消耗
人工智能