当前位置: 首页 > news >正文

【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)引入依赖,这里采用阿里百炼平台

<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

spring:ai:dashscope:chat:enabled: trueoptions:model: deepseek-r1/....api-key: xxxxxxbase-url: https://dashscope.aliyuncs.com/compatible-mode/v1

2,构筑ChatClient默认实例

(1)注册为IOC容器的bean

(2)通过参数自动注入

    @Beanpublic ChatClient chatClient(DashScopeChatModel model,ChatMemory chatMemory){.....
}

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

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实现会话隔离

    @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();}

http://www.dtcms.com/a/330249.html

相关文章:

  • CMake笔记:配置(Configure)、生成(Generate)和构建(Build)
  • 软件架构重构:从混沌到有序的系统性演进
  • 第6节 torch.nn介绍
  • 什么是脏读、幻读、不可重复读?
  • linux编程----文件(framebuffer)
  • 正则表达式解析(三)
  • 方法论基础。
  • 与Deepseek对话了解无线电通信知识
  • 自动曝光算法参考
  • Linux Framebuffer(帧缓冲)与基本 UI 绘制技术
  • GitHub宕机时的协作方案
  • 力扣 hot100 Day72
  • Transformer开端
  • 有效涂色问题-二维dp
  • C++进阶之lambda三种回调方式性能差异(四百二十七)
  • 【13】Transformers快速入门:Transformers 分词器 (Tokenizer) 实战?
  • 哈希表之两个数组的交集(leetcode349)
  • 智能合约开发全流程实战指南
  • 【LeetCode】4. 寻找两个正序数组的中位数
  • 芯伯乐300kHz降压DC/DC转换器XBL4005:4.5V~40V宽电压范围,5A大电流高效输出
  • 三伍微电子GSR2406 IoT FEM 2.4G PA 射频前端模组芯片
  • 深入解析C语言嵌套结构体的内存管理与操作实践
  • linux_网络层-ip协议
  • [系统架构设计师]信息安全技术基础知识(三)
  • SpringBoot3+ Elasticsearch8 Spring-data-Elasticsearch使用
  • 多模态数据集分级方案设计与实现
  • 容器基础镜像制作
  • ETLCloud批流一体化体现在哪
  • 【Python】Python 函数基本介绍(详细版)​
  • 版图设计学习2_掌握PDK中的层定义(工艺文档精读)