Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Spring AI调用AI模型

使用Spring AI调用AI模型

作者头像
阿珍
发布于 2025-03-27 08:19:18
发布于 2025-03-27 08:19:18
54302
代码可运行
举报
运行总次数:2
代码可运行

简介

Spring AI是Spring框架对人工智能机器学习的支持模块,它提供了一套简单易用的API来集成各种AI服务和模型。

主要功能

  • 集成主流AI模型服务(如OpenAI、Azure、 Baidu千帆等)
  • 提供统一的API接口
  • 支持提示词工程
  • 内置向量存储功能
  • 支持文本嵌入和文本生成

核心概念

  1. AI Client统一的客户端接口,用于调用AI服务
  2. Prompt Template提示词模板系统,支持变量替换和格式化
  3. Vector Store向量数据存储,用于相似度搜索和文本匹配

使用步骤

添加依赖

Spring AI 1.0 M6之后的版本已经可以直接从中央仓库下载了,添加如下BOM

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xml 体验AI代码助手 代码解读复制代码    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0-M6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- openAI 服务 -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>

        <!-- 百度千帆 服务 -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-qianfan-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

对接Chat Model

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java 体验AI代码助手 代码解读复制代码@RestController
public class ChatController {
    private final OpenAiChatModel chatModel;

    @Autowired
    public ChatController(OpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", this.chatModel.call(message));
    }

    @GetMapping("/ai/generateStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }

    
    @GetMapping("/ai/tool/calling")
    public Map toolCalling(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        //目前会循环调用工具方法, 应该跟deepseek自身有关 https://api-docs.deepseek.com/zh-cn/guides/function_calling
        String response = ChatClient.create(chatModel).prompt(message).tools(new IdiomsTools()).call().content();
        return Map.of("generation", response);
    }

}

application.properties需要配置对应api key 信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh 体验AI代码助手 代码解读复制代码
spring.ai.openai.api-key=youkey
spring.ai.openai.base-url=https://api.deepseek.com
spring.ai.openai.chat.options.model=deepseek-chat

# 千帆
spring.ai.qianfan.api-key=you api key
spring.ai.qianfan.secret-key=you secret key

使用Advisors API增强AI交互

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java 体验AI代码助手 代码解读复制代码@RestController
@RequestMapping("/qianfan/advisor")
public class QianfanAdvisorController {

    private final QianFanChatModel chatModel;
    private final ChatClient chatClient;

    @Autowired
    public QianfanAdvisorController(QianFanChatModel chatModel) {
        this.chatModel = chatModel;
        this.chatClient = ChatClient.builder(chatModel)
                .defaultAdvisors(
                        new MessageChatMemoryAdvisor(new InMemoryChatMemory()) // chat-memory advisor
                )
                .build();
    }
    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {

        return Map.of("generation", this.chatClient.prompt().advisors(new LoggingAdvisor()).user(message).call().content());
    }

}

上面示例中通过InMemroyChatMemory实现每次会话过程将之前的上下文一起代入每次会话中。

对接阿里大模型

Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试官:如何实现大模型连续对话?
所有的大模型本身是不进行信息存储的,也不提供连续对话功能,所以想要实现连续对话功能需要开发者自己写代码才能实现。那怎么才能实现大模型的连续对话功能呢?
磊哥
2025/07/19
1230
面试官:如何实现大模型连续对话?
Spring AI 项目介绍
Spring AI 是一个为开发 AI 应用程序提供 Spring 友好的 API 和抽象层的项目。它将 Spring 生态系统的设计原则(如可移植性和模块化设计)应用到 AI 领域,并促进使用 POJO 作为 AI 应用程序的构建块。
martinzh7
2025/07/07
1530
Spring AI 项目介绍
SpringAI更新:废弃tools方法、正式支持DeepSeek!
AI 技术发展很快,同样 AI 配套的相关技术发展也很快。这不今天刚打开 Spring AI 的官网就发现它又又又又更新了,而这次更新距离上次更新 M7 版本才不过半个月的时间,那这次 Spring AI 给我们带来了哪些惊喜呢?一起来看。
磊哥
2025/05/15
4380
Spring AI集成DeepSeek
随着Spring Boot的流行,越来越多的开发者选择利用其快速开发和简化配置的优势,构建企业级应用。Spring Boot通过自动化配置和高度的模块化,使得开发者可以更快速地实现业务功能。而Spring AI作为Spring生态的一部分,提供了与人工智能技术结合的能力,可以帮助开发者轻松将AI能力集成到Spring Boot项目中。
有一只柴犬
2025/02/23
1K0
Spring AI集成DeepSeek
Spring 宣布接入 DeepSeek!!
https://api-docs.deepseek.com/zh-cn/updates
码农编程进阶笔记
2025/02/25
2070
Spring 宣布接入 DeepSeek!!
Spring AI调用Ollama+DeepSeek
ChatClient 是一个接口,它定义了一个与聊天服务交互的客户端。这个接口主要用于创建聊天客户端对象,设置请求规范,以及发起聊天请求。
鱼找水需要时间
2025/06/02
3120
Spring AI调用Ollama+DeepSeek
Spring AI 1.0 正式发布!核心内容和智能体详解
在经历了八个里程碑式的版本之后(M1~M8),Spring AI 1.0 正式版本,终于在 2025 年 5 月 20 日正式发布了,这是另一个新高度的里程碑式的版本,标志着 Spring 生态系统正式全面拥抱人工智能技术,并且意味着 Spring AI 将会给企业带来稳定 API 支持。
磊哥
2025/05/22
2.2K0
Spring AI 1.0 正式发布!核心内容和智能体详解
Spring AI + DeepSeek:轻松打造你的第一个 AI 应用
在当今数字化时代,人工智能(AI)已成为推动技术进步和创新的核心力量。从智能语音助手到图像识别系统,从个性化推荐引擎到自动化流程,AI 的应用无处不在,正深刻地改变着我们的生活和工作方式。
用户1220090
2025/02/27
8320
Spring AI + DeepSeek:轻松打造你的第一个 AI 应用
如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!
Spring Boot 启动器帮助通过属性创建和配置 语言模型、嵌入模型、嵌入存储 和其他核心 LangChain4j 组件。
JavaEdge
2024/09/20
9.1K0
如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!
Spring AI 与 LangChain4j 对比分析,实际项目中该如何选择?
一、引言 在 Java 技术栈中,Spring AI 和 LangChain4j 是目前比较热门的两个 AI 开发框架。它们都为开发者提供了便捷的 AI 功能集成方式,但又有着各自的特点和优势。本文将从多个方面对 Spring AI 与 LangChain4j 进行对比分析,并探讨如何根据实际情况进行选择。 二、框架概述
用户7353950
2025/06/15
8220
Spring AI 与 LangChain4j 对比分析,实际项目中该如何选择?
干货:DeepSeek+SpringAI实现流式对话!
前面一篇文章我们实现了《炸裂:SpringAI内置DeepSeek啦!》,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户。
磊哥
2025/02/14
1.1K0
干货:DeepSeek+SpringAI实现流式对话!
SpringBoot系列之Spring AI+DeekSeek创建AI应用
随着人工智能技术的飞速发展,AI 已经成为现代软件应用中不可或缺的一部分。从智能对话系统到内容生成工具,AI 的应用场景日益丰富。Spring AI 是 Spring 官方推出的用于简化 AI 集成的框架,而 DeepSeek 是一个强大的 AI 平台,提供了高效、灵活的语言模型和 API 接口。通过将 Spring AI 与 DeepSeek 结合,开发者可以在 Spring Boot 应用中快速实现智能对话、文本生成等 AI 功能。
SmileNicky
2025/03/04
2.1K2
SpringBoot系列之Spring AI+DeekSeek创建AI应用
SpringAI+Ollama三部曲之二:细说开发
程序员欣宸
2024/05/26
2.7K0
SpringAI+Ollama三部曲之二:细说开发
重要通知:spring-ai-hunyuan 已兼容 Spring AI 稳定版!
最近有小伙伴在使用 mvn 仓库中的 1.0.0-M6 版本时,已经遇到一些兼容性问题和未知异常。本着更好地维护 spring-ai-hunyuan 仓库,我这几天熬夜更新并整理了对 Spring AI 稳定版(即 1.0.0)的支持。
努力的小雨
2025/06/19
1490
必看!SpringAI轻松构建MCP Client-Server架构
MCP 这个概念相信大家已经听了无数次了,但不同人会有不同的解释,你可能也是听得云里雾里的。
磊哥
2025/03/30
9621
必看!SpringAI轻松构建MCP Client-Server架构
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
随着人工智能技术的飞速发展,AI大模型已经在众多领域展现出强大的能力,为业务拓展和商业价值提升带来了新的机遇。SpringBoot作为一款广受欢迎的Java微服务框架,以其简洁、高效的特点深受开发者喜爱。而LangChain4j作为一款专注于AI大模型集成的开源库,为Java开发者提供了一种简单且高效的方式来接入和利用各种AI大模型。本文将详细介绍如何在SpringBoot中整合LangChain4j,实现对AI大模型的操作,帮助读者快速上手并应用到实际项目中。
全干程序员demo
2025/04/09
1.7K1
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
如何用Spring AI构建MCP Client-Server架构
现代 Web 应用正加速与大语言模型(LLMs)深度融合,构建超越传统问答场景的智能解决方案。为突破模型知识边界,增强上下文理解能力,开发者普遍采用多源数据集成策略,将 LLM 与搜索引擎、数据库、文件系统等外部资源互联。然而,异构数据源的协议差异与格式壁垒,往往导致集成复杂度激增,成为制约 AI 应用规模化落地的关键瓶颈。因此,Anthropic公司推出了模型上下文协议(Model Context Protocol, MCP),通过标准化接口为 AI 应用与外部数据源建立统一交互通道。这一协议体系不仅实现了数据获取与操作的规范化,更构建起可扩展的智能体开发框架,使开发者能够基于原生 LLM 能力快速构建复杂工作流。
程序猿DD
2025/03/27
2.7K0
如何用Spring AI构建MCP Client-Server架构
Spring AI、DeepSeek 与 MCP:对话驱动的接口查询新范式
开篇 随着人工智能技术的飞速发展,我们正步
磊叔的技术博客
2025/06/09
5211
Spring AI、DeepSeek 与 MCP:对话驱动的接口查询新范式
Spring AI 模块架构与功能解析
Spring AI 是 Spring 生态系统中的一个新兴模块,专注于简化人工智能和机器学习技术在 Spring 应用程序中的集成。本文将详细介绍 Spring AI 的核心组件、功能模块及其之间的关系,帮助具有技术基础的读者快速了解和应用 Spring AI。
martinzh7
2025/05/22
2490
Spring AI 模块架构与功能解析
Spring AI实战之一:快速体验(OpenAI)
程序员欣宸
2024/05/26
4.5K0
Spring AI实战之一:快速体验(OpenAI)
推荐阅读
相关推荐
面试官:如何实现大模型连续对话?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验