让我们从Spring AI开始

Spring AI:使用Java迈入生成式AI的第一步

基于Java的企业系统通常难以与Python库及相关工具链协同工作。为此,Spring AI应运而生------这是一个旨在简化整合人工智能功能(特别是大型语言模型)应用开发的开源框架,它采用了Spring生态系统中大家熟悉的模式。

如果您是一名Java开发者,希望将ChatGPT或Google Gemini等强大功能集成到企业应用程序中,而又不想费力研究各提供商特定的SDK,那么Spring AI是您的理想工具。

什么是Spring AI?

Spring AI的核心是充当AI模型的通用抽象层

可以将其类比于Spring Data JPA之于数据库的关系:正如Spring Data抽象了SQL和数据库的具体细节一样,Spring AI则抽象了不同AI提供商(如OpenAI、Google、Azure、Anthropic等)之间的差异。

这种方法带来了两大显著优势:

  1. 可移植性:您只需极少的代码改动即可在不同AI模型和提供商之间切换,从而为您的用例选择最具成本效益或性能最佳的模型。

  2. 熟悉度 :它使用了依赖注入、自动配置和流式API(如WebClientJdbcClient)等标准的Spring概念,使得数以百万计的现有Spring开发者能够轻松上手。

为什么选择Spring AI而不是LangChain?

尽管LangChain 是一个强大且与提供商无关的框架,并因LLM调用的"链式"编排而广受欢迎,但它主要为Python 生态系统构建。相比之下,Spring AI则是从零开始构建,遵循Java语言习惯 ,并能与Spring Boot应用无缝集成。

以下是Java企业开发者应该认真考虑使用Spring AI的原因:

符合"Java习惯"的优势

对于一个Java团队来说,选择Spring AI意味着:

  • 无需多语言复杂性:您可以避免在生产Java环境中引入Python依赖、虚拟环境以及进程间通信带来的麻烦。

  • 性能:Spring AI原生运行在Java虚拟机(JVM)内,充分利用其卓越的垃圾回收和性能优化能力。

  • 工具链:您可以享受到静态类型检查、强大的调试支持以及Java测试框架(如JUnit、Mockito)完整生态系统的益处。

简而言之,如果您的应用程序是用Java编写并使用Spring Boot,那么Spring AI就是集成生成式AI最自然、阻力最小的选择。

Spring AI的核心概念

要构建一个基本的AI应用,您需要理解三个核心组件:

构建一个简单的聊天服务

让我们创建一个极简的Spring Boot应用程序,它使用ChatClient根据用户的消息生成回复。在本示例中,我们将使用OpenAI模型。

1. 项目设置(Maven)

将以下内容添加到您的pom.xml文件中:

xml 复制代码
<dependencies>

  <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

  </dependency>

  <dependency>

    <groupId>org.springframework.ai</groupId>

    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>

  </dependency>

</dependencies>

<dependencyManagement>

  <dependencies>

    <dependency>

      <groupId>org.springframework.ai</groupId>

      <artifactId>spring-ai-bom</artifactId>

      <version>1.0.0</version>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

  </dependencies>

</dependencyManagement>

2. 配置(application.properties)

您需要提供AI提供商的API密钥。将其放在src/main/resources/application.properties文件中。

properties 复制代码
# 用您实际的OpenAI API密钥替换

spring.ai.openai.api-key=<YOUR_OPENAI_API_KEY>

3. 控制器(AiController.java)

这个类定义了一个REST端点,用于接收消息并使用注入的ChatClient获取响应。

java 复制代码
package com.example.aidemo;

import org.springframework.ai.chat.client.ChatClient;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class AiController {

    private final ChatClient chatClient;

    /**

     * Spring Boot会根据依赖项和属性自动配置并注入ChatClient。

     */

    public AiController(ChatClient.Builder chatClientBuilder) {

        // 使用注入的构建器构建ChatClient实例

        this.chatClient = chatClientBuilder.build();

    }

    @GetMapping("/generate")

    public String generate(@RequestParam(value = "message", defaultValue = "Tell me a short, friendly joke.") String message) {

        // 使用流式API定义提示词并调用模型

        return chatClient.prompt()

            .user(message) // 设置用户的输入消息

            .call()       // 执行对AI模型的调用

            .content();   // 从响应中提取纯文本内容

    }

}

4. 运行与测试

  • 运行您的Spring Boot应用程序。

  • 测试端点:http://localhost:8080/generate?message=Explain%20Spring%20AI%20in%20one%20sentence


【注】本文译自:Lets start with Spring AI

相关推荐
松小鼠呀3 小时前
我不敢再生孩子:ChatGPT 曾花 $2m 让他闭嘴,AI 巨头到底隐藏了什么秘密?
人工智能·安全·chatgpt·ai编程·科技热点
Patrick在香港4 小时前
Claude Agent 进阶:4 种工具调用编排模式,让 0820 那 13 个 endpoint 并行起来
python·ai·ai编程
happyprince4 小时前
01-整体观-Codex全貌解读(源码)
算法·ai编程
Flynt6 小时前
DeepSeek终于能看图了:V4 Flash Vision实测,1分钱9张图但有个大坑
agent·ai编程·deepseek
星核0penstarry7 小时前
Copilot 用 GLM:自备密钥和官方内置,到底差在哪?
copilot·运维开发·ai编程·api聚合平台
happyprince8 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
明月_清风8 小时前
vLLM 深度实战:2026 年生产级 LLM 推理引擎完全指南
前端·后端·ai编程
rannn_1119 小时前
Codex安全盲区:代码漏洞生成实测
ai编程
撑伞的鱼99379 小时前
零成本AI编程实践,我花0元拿到了不限量 Token
人工智能·个人开发·免费·ai编程
陈天伟教授9 小时前
【30天学会机械制图 第4天】项目一 从平面图形开始 任务1 按标准来画图,秒懂!
人工智能·平面·ai编程·具身智能机器人技术·机械制图