欢迎光临
我们一直在努力

Spring Cloud Alibaba 整合 Spring AI 的详细教程使用

整合 Spring Cloud Alibaba 与 Spring AI 的详细教程

Spring Cloud Alibaba 提供了一套完整的微服务解决方案,而 Spring AI 专注于人工智能能力的集成。以下是将两者整合的详细步骤:

小白零基础全栈学习开发

环境准备

确保开发环境满足以下要求:

  • JDK 1.8 或更高版本
  • Maven 3.2+ 或 Gradle 6.x+
  • Spring Boot 2.7.x 或 3.x
  • Spring Cloud Alibaba 2022.x 或更高版本
  • Spring AI 相关依赖(根据具体AI服务选择)

在这里插入图片描述

创建基础项目

小白零基础全栈学习开发

使用 Spring Initializr 创建项目,选择以下依赖:

  • Spring Web
  • Spring Cloud Alibaba Nacos Discovery(服务发现)
  • Spring Cloud Alibaba Sentinel(流量控制)
  • Spring AI(根据具体AI服务选择模块)

pom.xml 关键依赖示例:

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

配置 Nacos 服务注册

在 application.yml 中配置 Nacos:

spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: aiservice

配置 AI 服务

根据选择的 AI 服务配置参数,以 OpenAI 为例:

spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
model: gpt3.5turbo

创建 AI 服务接口

小白零基础全栈学习开发

实现一个简单的 AI 服务接口:

package com.cloud.nb.pay.controller;

import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@Slf4j
@RestController
@RequestMapping("/helloworld")
public class HelloworldController {
private static final String DEFAULT_PROMPT = "你是一个博学的智能聊天助手,请根据用户提问回答!";

private final ChatClient dashScopeChatClient;

public HelloworldController(ChatClient.Builder chatClientBuilder) {
this.dashScopeChatClient = chatClientBuilder
.defaultSystem(DEFAULT_PROMPT)
// 实现 Logger 的 Advisor
.defaultAdvisors(
new SimpleLoggerAdvisor()
)
// 设置 ChatClient 中 ChatModel 的 Options 参数
.defaultOptions(
DashScopeChatOptions.builder()
.withTopP(0.7)
.build()
)
.build();
}

/**
* ChatClient 简单调用
*/

@GetMapping("/simple/chat")
public String simpleChat(@RequestParam(value = "query", defaultValue = "你好,很高兴认识你,能简单介绍一下自己吗?")String query) {

return dashScopeChatClient.prompt(query).call().content();
}

/**
* ChatClient 流式调用
*/

@GetMapping(value = "/stream/chat2", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat2(
@RequestParam(value = "query", defaultValue = "你好,很高兴认识你,能简单介绍一下自己吗?") String query) {

return dashScopeChatClient.prompt(query)
.stream()
.content()
.map(content -> content + "\\n")
.doOnSubscribe(subscription ->
log.info("开始流式响应查询: {}", query));
}
}

集成 Sentinel 流控

配置 Sentinel 对 AI 接口进行保护:

spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
eager: true

为接口添加流控规则:

@SentinelResource(value = "aiChat", blockHandler = "blockHandler")
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.call(message);
}

public String blockHandler(String message, BlockException ex) {
return "请求过于频繁,请稍后再试";
}

服务间调用示例

小白零基础全栈学习开发

通过 OpenFeign 实现服务间调用 AI 功能:

@FeignClient(name = "ai-service")
public interface AIServiceClient {

@GetMapping("/ai/chat")
String chat(@RequestParam String message);
}

部署与测试

启动 Nacos 和 Sentinel 控制台后运行应用,测试以下功能:

  • 访问 /ai/chat?message=你好 测试AI功能
  • 通过 Nacos 控制台查看服务注册状态
  • 通过 Sentinel 控制台查看流量监控

[图片]

在这里插入图片描述

高级配置

对于生产环境,建议添加以下配置:

  • 配置 Nacos 集群
  • 设置 Sentinel 持久化规则
  • 为 AI 服务添加熔断降级策略
  • 配置分布式追踪(如 SkyWalking)监控AI调用链路

注意事项

  • AI 服务的 API 调用可能有速率限制,需要合理配置流控规则
  • 敏感信息如 API Key 应使用配置中心管理
  • 不同 AI 服务(如OpenAI、Azure AI等)的配置参数有所差异
  • 微服务调用AI功能时需要考虑网络延迟和超时设置

以上步骤完成了 Spring Cloud Alibaba 与 Spring AI 的基本整合。根据实际需求可以进一步扩展功能,如添加AI结果缓存、异步处理等优化措施。

赞(0)
未经允许不得转载:171主机测评 » Spring Cloud Alibaba 整合 Spring AI 的详细教程使用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址