【Spring Ai框架】

摘要:

本文简要介绍了Spring的Spring AI框架帮助用户快速了解该框架。Spring AI提供统一API对接多种AI服务,支持聊天、文本向量化、音频/图像处理等功能。核心优势包括:统一接口屏蔽不同AI服务的差异、与Spring生态无缝集成、开箱即用的starter依赖和企业级特性,框架支持流式响应、会话隔离和提示词模板管理,大幅降低AI应用开发门槛。

一,Spring AI 框架快速入门指南

Spring AI 是 Spring 生态系统推出的 AI 集成框架,旨在简化 Java 开发者将人工智能能力集成到应用中的过程。它提供了统一的 API 来对接各种 AI 服务和模型,让开发者无需深入了解 AI 技术细节就能快速构建 AI 驱动的应用。

1,核心优势

(1)统一接口:屏蔽不同 AI 服务(如 OpenAI、阿里云通义千问等)的 API 差异,切换模型无需修改代码

(2)Spring 原生集成:与 Spring Boot、Spring Cloud 等无缝衔接,支持依赖注入、自动配置等特性

(3)开箱即用:通过 starter 依赖快速集成,减少配置工作

(4)企业级特性:包含错误处理、安全管理、可观测性等生产环境必需功能

2,主要功能模块

(1)聊天客户端(ChatClient):用于与大语言模型交互,支持单轮 / 多轮对话

(2)嵌入客户端(EmbeddingClient):将文本转换为向量,用于语义搜索等场景

(3)音频处理:支持语音转文字等音频相关操作

(4)图像处理:支持图像生成和图像理解

(5)工具调用:允许 AI 模型调用外部工具和 API

(6)提示词模板:方便构建和管理提示词

二,快速上手

1,环境准备

(1)jdk17及以上

(2)引入依赖,这里采用阿里百炼平台

java 复制代码
<dependency>
   <groupId>com.alibaba.cloud.ai</groupId>
   <artifactId>spring-ai-alibaba-starter</artifactId>
   <version>1.0.0-M6.1</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

(3)配置密钥api-key 和地址base-url

java 复制代码
spring:
  ai:
    dashscope:
      chat:
        enabled: true
        options:
          model: deepseek-r1/....
      api-key: xxxxxx
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1

2,构筑ChatClient默认实例

(1)注册为IOC容器的bean

(2)通过参数自动注入

java 复制代码
    @Bean
    public ChatClient chatClient(DashScopeChatModel model,ChatMemory chatMemory){
        .....
}

(3)设置默认系统提示词,通过advisor拦截启动日志

java 复制代码
return ChatClient.builder(model)
        .defaultSystem(new ClassPathResource("system_prompt_1.txt"))
        //环绕增强,输出会话日志
        .defaultAdvisors(
                new SimpleLoggerAdvisor(),
                new MessageChatMemoryAdvisor(chatMemory)
        )
        .build();

3,简单聊天测试

(1).stream():返回一个流对象,用于处理异步数据流。.content():返回一个Flux<String>对象,表示一个异步的、可观察的字符串流。

(2).advisors():通过赋值chatId到CHAT_MEMORY_CONVERSATION_ID_KEY实现会话隔离

java 复制代码
    @RequestMapping(value = "/chat", produces = "text/html;charset=UTF-8")
    public Flux<String> chat(String prompt, String chatId){
        //请求模型
        return chatClient.prompt()
                .user("用户提示词")
                .advisors(a -> a.param(AbstractChatMemoryAdvisor.CHAT_MEMORY_CONVERSATION_ID_KEY, chatId))
                .stream()
                .content();
    }
相关推荐
Lyyaoo.3 小时前
【JAVA基础面经】线程安全的单例模式
java·安全·单例模式
汽车仪器仪表相关领域3 小时前
NHXJ-02汽车悬架检验台 实操型实战手册
人工智能·功能测试·测试工具·算法·安全·单元测试·可用性测试
枫叶林FYL3 小时前
【Python高级工程与架构实战】项目四 现代ETL编排平台:Airflow + dbt + Snowflake 企业级数据管道架构与实现
人工智能·python·架构·etl
AI服务老曹3 小时前
异构计算与边缘协同:基于 Spring Boot 的 AI 视频管理平台架构深度解析
人工智能·spring boot·音视频
源码之屋3 小时前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计
_李小白3 小时前
【OSG学习笔记】Day 39: NodeCallback(帧回调机制)
java·笔记·学习
咕噜签名-铁蛋3 小时前
Seedance 2.0公测API全面开放:无需排队过白,AI视频创作进入极速时代
人工智能·音视频
易基因科技3 小时前
易基因:NC/IF15.7:浙江大学陈淑洁/王良静团队acRIP-seq等揭示ac4C RNA修饰调控肠道衰老及年龄相关肠道疾病发病机制
人工智能·科研·生物学·生信分析
鸿乃江边鸟3 小时前
Nanobot 从 gateway 启动命令来看个人助理Agent的实现
人工智能·ai
如来神掌十八式3 小时前
设计模式之装饰器模式
java·设计模式