部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用Spring AI调用AI模型

使用Spring AI调用AI模型

作者头像
阿珍
发布2025-03-27 16:19:18
发布2025-03-27 16:19:18
10900
代码可运行
举报
运行总次数:0
代码可运行

简介

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
运行
复制
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
运行
复制
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
运行
复制
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
运行
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 使用步骤
    • 添加依赖
    • 对接Chat Model
    • 使用Advisors API增强AI交互
  • 对接阿里大模型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档