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

【Java学习】Spring AI集成指南

在 Java 中使用 Spring AI 可以简化与生成式 AI(如 OpenAI、Hugging Face 等)的集成。以下是详细步骤和示例代码,帮助你快速上手。


1. 添加依赖

首先,在项目的 pom.xml 中添加 Spring AI 的依赖(以 OpenAI 为例):

xml

复制

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.1</version> <!-- 检查最新版本 -->
</dependency>

运行 HTML

如果使用 Gradle:

groovy

复制

implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter:0.8.1'

注意:Spring AI 正在快速发展,版本可能频繁更新,请检查 Spring AI 官方文档 获取最新版本。


2. 配置 API 密钥

在 application.properties 或 application.yml 中配置 OpenAI 的 API 密钥:

properties

复制

# application.properties
spring.ai.openai.api-key=YOUR_API_KEY

或 YAML 格式:

yaml

复制

# application.yml
spring:
  ai:
    openai:
      api-key: YOUR_API_KEY

确保替换 YOUR_API_KEY 为实际的 OpenAI API 密钥。


3. 创建 AI 服务类

创建一个 Spring 服务类,注入 OpenAITemplate 或 ChatClient 来调用 AI 模型:

java

复制

import org.springframework.ai.client.AiClient;
import org.springframework.ai.client.AiResponse;
import org.springframework.ai.prompt.Prompt;
import org.springframework.ai.prompt.SystemPrompt;
import org.springframework.ai.prompt.messages.UserMessage;
import org.springframework.stereotype.Service;

@Service
public class AIService {

    private final AiClient aiClient;

    public AIService(AiClient aiClient) {
        this.aiClient = aiClient;
    }

    public String generateText(String prompt) {
        // 构建请求
        Prompt request = new Prompt(new UserMessage(prompt));
        
        // 调用 AI 模型
        AiResponse response = aiClient.generate(request);
        
        // 提取生成的文本
        return response.getGeneration().getText();
    }
}

4. 创建 REST 控制器

创建一个控制器,暴露 API 接口供外部调用:

java

复制

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 AIService aiService;

    public AIController(AIService aiService) {
        this.aiService = aiService;
    }

    @GetMapping("/generate")
    public String generate(@RequestParam String prompt) {
        return aiService.generateText(prompt);
    }
}

5. 运行并测试

启动 Spring Boot 应用后,通过浏览器或工具(如 Postman)测试接口:

复制

http://localhost:8080/generate?prompt=用Java写一个Hello World程序

响应示例:

java

复制

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

高级用法

自定义模型参数

在生成文本时,可以调整温度(temperature)和最大 Token 数(maxTokens)等参数:

java

复制

PromptTemplate promptTemplate = new PromptTemplate("告诉我关于 {topic} 的信息");
Prompt prompt = promptTemplate.create(Map.of("topic", "量子力学"));

GenerationOptions options = new GenerationOptions();
options.setTemperature(0.7f);
options.setMaxTokens(200);

AiResponse response = aiClient.generate(prompt, options);
流式响应

如果需要实时流式响应(逐词返回结果),可以使用流式 API:

java

复制

aiClient.generateStream(prompt)
    .subscribe(chunk -> {
        System.out.print(chunk.getGeneration().getText());
    });

切换 AI 模型供应商

Spring AI 支持多种模型供应商(如 OpenAI、Hugging Face、Azure OpenAI 等)。例如,切换到 Hugging Face

  1. 修改依赖:

xml

复制

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-huggingface-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>

运行 HTML

  1. 配置 Hugging Face 的 API 密钥:

properties

复制

spring.ai.huggingface.api-key=YOUR_HF_API_KEY

常见问题

依赖找不到?

确保添加了 Spring 的仓库(如快照仓库):

xml

复制

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots><enabled>true</enabled></snapshots>
    </repository>
</repositories>

运行 HTML

安全性

API 密钥应通过环境变量或配置服务器管理,避免硬编码在代码中:

properties

复制

spring.ai.openai.api-key=${OPENAI_API_KEY}

通过以上步骤,你可以快速将 AI 功能集成到 Java 应用中。更多高级功能(如 Embeddings、RAG 等)可参考 Spring AI 官方文档。

相关文章:

  • 深入理解 v-if 指令及其使用方法
  • C++在Linux上生成动态库并调用接口测试
  • 七、Qt框架编写的多线程应用程序
  • JDK的卸载与安装
  • 【JavaScript——页面渲染】课程列表(蓝桥杯真题-2457)【合集】
  • 《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十二篇(完结篇):数据统计功能实现
  • Java高性能并发利器-VarHandle
  • 【sgSpliter】自定义组件:可调整宽度、高度、折叠的分割线
  • 【技术派部署篇】云服务器部署技术派
  • jeecg启动所需要安装的软件
  • GitHub Desktop 推送报错 Authentication Failed 身份验证失败
  • HarmonyOS 5.0分布式开发深度踩坑指南:从理论到实践的突围之路
  • Java递归练习----猴子偷桃
  • 基于ueditor编辑器的功能开发之增加自定义一键排版功能
  • Java IO 流
  • 【资料分享】瑞芯微RK3576,8核2.2GHz+6T算力NPU工业核心板说明书
  • STM32(基于标准库)
  • 多模态大模型[CLIP/Flamingo/Coca/BLIP]
  • Unity入门
  • 图谱可视化的海洋生物信息查询网站的设计与实现(springboot+ssm+vue)含文档
  • 自己可以给公司做网站吗/百度开户推广
  • 龙游网站制作/抖音seo怎么做的
  • 网站建设对网络营销的影响/360关键词排名百度
  • 做旅游网站教程/semseo
  • 怎么做网站主/谷歌应用商店
  • 比wordpress更好/天津seo优化