使用Spring AI调用AI模型

简介: Spring AI是Spring框架的模块,支持人工智能和机器学习,提供简单易用的API集成主流AI服务(如OpenAI、Azure、百度千帆等)。其主要功能包括统一API接口、提示词工程、向量存储、文本嵌入与生成。核心概念涵盖AI Client、Prompt Template和Vector Store。通过添加依赖和配置API密钥,可快速对接Chat Model并使用Advisors API增强交互体验。此外,Spring AI Alibaba项目为阿里云通义模型提供了高层次API抽象,助力开发者构建AI应用。

简介

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

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

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 信息

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交互

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 应用。


转载来源:https://juejin.cn/post/7478149373647913023

相关文章
|
18天前
|
人工智能 搜索推荐 Java
Spring AI与DeepSeek实战三:打造企业知识库
本文基于Spring AI与RAG技术结合,通过构建实时知识库增强大语言模型能力,实现企业级智能搜索场景与个性化推荐,攻克LLM知识滞后与生成幻觉两大核心痛点。
211 7
|
17天前
|
存储 人工智能 自然语言处理
RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用
通过遵循以上最佳实践,可以构建一个高效、可靠的 RAG 系统,为用户提供准确和专业的回答。这些实践涵盖了从文档处理到系统配置的各个方面,能够帮助开发者构建更好的 RAG 应用。
593 114
|
17天前
|
人工智能 编解码 异构计算
Neo-1:全球首个原子级生成式AI模型!这个AI模型把10年药物研发周期压缩到1个月
VantAI推出的Neo-1是全球首个统一分子生成与原子级结构预测的AI模型,采用潜在空间扩散技术,结合大规模训练和定制数据集,显著提升药物研发效率。
74 15
Neo-1:全球首个原子级生成式AI模型!这个AI模型把10年药物研发周期压缩到1个月
|
17天前
|
数据采集 人工智能 Java
使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用
使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用
169 22
|
4天前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
100 1
|
10天前
|
人工智能 前端开发 Java
AI大模型进阶系列(02)基于Spring AI实现AI chatbot助理|一句话让deepseek实现
本文介绍了通过DeepSeek生成一个基于Spring AI的在线AI聊天助手项目的全过程。项目采用JDK17+Spring AI+Thymeleaf+Spring Web技术栈,实现了一个简单的聊天界面,用户可输入内容并获得DeepSeek返回的结果。文章详细描述了从需求明确、项目结构设计到配置参数启动的步骤,并展示了核心代码片段如pom.xml、application.properties及主要Java类文件。尽管功能简单,但体现了AI在编程领域的高效应用,未来有望进一步优化上下文记忆等功能,提升开发体验与效率。
|
17天前
|
人工智能 Java 程序员
Java程序员在AI时代必会的技术:Spring AI
在AI时代,Java程序员需掌握Spring AI技术以提升竞争力。Spring AI是Spring框架在AI领域的延伸,支持自然语言处理、机器学习集成与自动化决策等场景。它简化开发流程,无缝集成Spring生态,并提供对多种AI服务(如OpenAI、阿里云通义千问)的支持。本文介绍Spring AI核心概念、应用场景及开发步骤,含代码示例,助你快速入门并构建智能化应用,把握AI时代的机遇。
|
16天前
|
人工智能 Java 决策智能
Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现
此次官方发布的 Spring AI Alibaba OpenManus 实现,包含完整的多智能体任务规划、思考与执行流程,可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析,操作浏览器,执行代码等来完成复杂任务等。
|
29天前
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
1850 7
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):成熟AI模型与自研如何选择?
本文为AI训练师提供选型指南,探讨使用成熟模型还是自研算法。内容涵盖NLP、CV和多模态场景下主流模型推荐,如DeepSeek-Chat、GPT-4o、ResNet-50等,以及自研模型的应用场景与技术实现。同时提供懒人四步决策法和避雷口诀,帮助快速选择适合的工具。新手建议从预训练模型入手,逐步深入魔改或自研,避免常见坑点。附带场景化对比表,助力高效决策。
45 5

热门文章

最新文章