news 2026/8/14 1:35:27

基于SpringAI架构的多智能体协作(进阶版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于SpringAI架构的多智能体协作(进阶版)

目录

一、订单智能体的背景

二、订单智能体的介绍

1. 工程定位

2. Spring AI 框架核心价值与工程落地

(1)统一模型接口:屏蔽多源工具差异

(2)StateGraph 流程编排:智能体协作的 “大脑”

(3)原生 RAG 支持:物流节点的智能化核心

(4)与 Spring 生态无缝融合

3. 工程核心模块分工

三、工程优势

四、工程结构(极简版)

五、核心依赖(pom.xml)

六、核心配置类

1. OpenAI 原生 API 配置(OpenAiConfig.java)

2. 支付宝 MCP 配置(AlipayConfig.java)

七、协作上下文(AgentContext.java)

八、服务层实现

1. 订单节点服务(OrderAgentService.java)

2. 支付节点服务(PaymentAgentService.java)

​编辑

3. 物流节点服务(LogisticsAgentService.java)

4. 流程编排服务(MultiAgentWorkflowService.java)

九、控制层(MultiAgentController.java)

十、启动类(MultiAgentApplication.java)

十一、配置文件(application.yml)

十二、测试类(MultiAgentFlowTest.java)

总结

运行说明


一、订单智能体的背景

随着电子商务行业的规模化发展,订单处理、支付校验、物流调度的全流程协同面临三大核心挑战:一是流程耦合度高,传统单体系统中订单、支付、物流模块强绑定,修改或扩展任一环节需重构整体逻辑;二是智能化能力不足,人工配置的固定规则难以适配复杂场景(如动态物流方案、个性化订单生成);三是第三方接口整合复杂,OpenAI 大模型、支付宝支付、RAG 知识库等多源工具的调用需大量胶水代码,维护成本高。

多智能体系统(MAS)作为解决复杂分布式任务的有效方案,在电子商务领域已得到成熟应用,其核心优势在于将复杂流程拆解为独立智能体,通过协作完成整体任务。而 Spring AI 框架的出现,为 Java 开发者提供了企业级的 AI 工程化解决方案 —— 无需切换编程语言,即可无缝集成大模型与第三方工具,实现智能体的快速开发与流程编排,彻底解决了传统 AI 应用开发中 “接口碎片化、配置繁琐、扩展性差” 的痛点。

本项目基于 Spring AI 框架构建电商场景多智能体协作系统,聚焦 “订单→支付→物流” 核心流程,通过智能体分工协作与流程自动化,提升业务处理效率与智能化水平。

二、订单智能体的介绍

1. 工程定位

本工程是一套基于 Spring AI 的企业级多智能体协作解决方案,专为电商核心流程设计,实现订单自动生成、支付状态校验、物流方案智能推荐的全链路自动化。工程采用 Spring Boot 注解驱动开发,严格遵循 “分层设计 + 组件化拆分” 原则,确保代码的可维护性与可扩展性。

2. Spring AI 框架核心价值与工程落地

Spring AI 作为 Spring 官方推出的 AI 应用开发框架,其核心设计理念是 “让 AI 工程化更简单”,在本工程中主要体现为三大核心能力:

(1)统一模型接口:屏蔽多源工具差异

Spring AI 提供了标准化的模型抽象,将 OpenAI 原生 API 封装为可直接注入的 Java 客户端(OpenAiCompletionsClientOpenAiEmbeddingClient等),无需手动处理 HTTP 请求、JSON 序列化等底层逻辑。工程中通过OpenAiConfig配置类,仅需 3 行代码即可完成 OpenAI 多接口的初始化,后续若需切换为文心一言、通义千问等模型,仅需修改配置文件,无需改动业务代码,实现 “一键切换” 的高可移植性。

(2)StateGraph 流程编排:智能体协作的 “大脑”

Spring AI 核心模块spring-ai-core提供的StateGraph组件,借鉴了 LangGraph 的状态机理念,支持基于状态驱动的复杂流程编排。本工程通过MultiAgentWorkflowService构建 “订单→支付→物流” 的顺序执行流,每个智能体作为独立节点,通过AgentContext上下文对象传递数据,支持条件分支(如支付失败时跳过物流节点)、状态持久化等复杂场景,确保流程的幂等性与可恢复性。

(3)原生 RAG 支持:物流节点的智能化核心

物流节点的智能推荐能力依赖 RAG(检索增强生成)技术,Spring AI 深度整合了向量存储与嵌入模型,工程中通过OpenAiEmbeddingClient调用 OpenAI Embeddings API 生成订单文本向量,再结合自定义知识库 API 实现相关物流规则的精准检索,最终通过OpenAiChatClient生成个性化物流方案。这一过程无需手动实现向量计算与检索逻辑,Spring AI 已完成底层封装,开发者可聚焦业务场景设计。

(4)与 Spring 生态无缝融合

工程完全遵循 Spring Boot 开发规范,通过@Service@Configuration@Autowired等注解实现组件管理与依赖注入,无需额外引入胶水代码。例如,支付宝 MCP 客户端、OpenAI 客户端均通过配置类声明为 Bean,在业务服务中直接注入使用,保持了 Spring 生态的一致性与易用性。

3. 工程核心模块分工

配置层(config):封装 OpenAI 与支付宝 MCP 的客户端初始化逻辑,通过配置文件注入密钥与地址,实现 “配置与业务分离”;

服务层(service):4 个服务类分别对应 “订单生成、支付校验、物流推荐、流程编排”,每个智能体职责单一,符合 “单一职责原则”;

DTO 层(dto)AgentContext作为全局上下文,统一管理各节点的输入 / 输出数据,避免多节点间参数传递混乱;

控制层(controller):通过MultiAgentController暴露 REST 接口,支持外部系统调用全流程协作功能;

测试层(test):覆盖单节点测试与全流程测试,确保每个智能体独立可用、协作流程顺畅。

三、工程优势

智能化程度高:订单生成采用 OpenAI 流式输出,物流方案基于 RAG 知识库动态生成,相比传统固定规则,适配更多复杂场景;

扩展性强:基于 Spring AI 的统一接口抽象,可快速集成新的大模型或第三方工具(如微信支付、京东物流 API);

工程化规范:严格分层设计,代码简洁无冗余,测试覆盖全面,符合企业级应用的开发标准;

低门槛集成:Java 开发者无需学习 Python 即可快速上手 AI 应用开发,Spring AI 已屏蔽底层复杂度,聚焦业务逻辑。

本工程通过 Spring AI 框架的强大能力,将多智能体协作从理论落地为可复用的工程方案,为电商行业的流程自动化与智能化升级提供了高效、可扩展的技术支撑。

四、工程结构(极简版)

src/main/java/com/ai/multiagent/

├── MultiAgentApplication.java // 启动类

├── config/ // 配置类

│ ├── OpenAiConfig.java // OpenAI 原生API配置

│ └── AlipayConfig.java // 支付宝MCP配置

├── controller/ // 控制层

│ └── MultiAgentController.java // 协作入口接口

├── service/ // 服务层

│ ├── OrderAgentService.java // 订单节点服务

│ ├── PaymentAgentService.java // 支付节点服务

│ ├── LogisticsAgentService.java // 物流节点服务

│ └── MultiAgentWorkflowService.java // 流程编排(StateGraph)

├── dto/ // 数据传输对象

│ └── AgentContext.java // 协作上下文(传递节点数据)

└── test/ // 测试类

└── MultiAgentFlowTest.java // 全流程测试

五、核心依赖(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

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

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

<version>3.2.6</version>

<relativePath/>

</parent>

<groupId>com.ai</groupId>

<artifactId>multi-agent-demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<dependencies>

<!-- Spring AI 核心(对接OpenAI原生API) -->

<dependency>

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

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

<version>1.0.0-M1</version>

</dependency>

<!-- Spring Boot Web -->

<dependency>

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

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

</dependency>

<!-- 支付宝MCP工具 -->

<dependency>

<groupId>com.alipay.sdk</groupId>

<artifactId>alipay-sdk-java</artifactId>

<version>4.38.0.ALL</version>

</dependency>

<!-- Spring AI StateGraph(流程编排) -->

<dependency>

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

<artifactId>spring-ai-core</artifactId>

<version>1.0.0-M1</version>

</dependency>

<!-- 测试依赖 -->

<dependency>

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

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

<scope>test</scope>

</dependency>

</dependencies>

<repositories>

<repository>

<id>spring-milestones</id>

<url>https://repo.spring.io/milestone</url>

</repository>

</repositories>

</project>

六、核心配置类

1. OpenAI 原生 API 配置(OpenAiConfig.java)

package com.ai.multiagent.config;

import org.springframework.ai.openai.OpenAiApi;

import org.springframework.ai.openai.OpenAiChatClient;

import org.springframework.ai.openai.OpenAiCompletionsClient;

import org.springframework.ai.openai.OpenAiEmbeddingClient;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class OpenAiConfig {

@Value("${spring.ai.openai.api-key}")

private String apiKey;

@Bean

public OpenAiApi openAiApi() {

return new OpenAiApi("https://api.openai.com/v1", apiKey);

}

// 订单节点:流式Prompt输出

@Bean

public OpenAiCompletionsClient completionsClient() {

return new OpenAiCompletionsClient(openAiApi());

}

// 物流节点:RAG向量嵌入

@Bean

public OpenAiEmbeddingClient embeddingClient() {

return new OpenAiEmbeddingClient(openAiApi());

}

// 通用对话

@Bean

public OpenAiChatClient chatClient() {

return new OpenAiChatClient(openAiApi());

}

}

2. 支付宝 MCP 配置(AlipayConfig.java)

package com.ai.multiagent.config;

import com.alipay.api.AlipayClient;

import com.alipay.api.DefaultAlipayClient;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class AlipayConfig {

@Value("${alipay.app-id}")

private String appId;

@Value("${alipay.private-key}")

private String privateKey;

@Value("${alipay.public-key}")

private String alipayPublicKey;

@Value("${alipay.gateway-url}")

private String gatewayUrl;

@Bean

public AlipayClient alipayClient() {

return new DefaultAlipayClient(gatewayUrl, appId, privateKey,

"json", "UTF-8", alipayPublicKey, "RSA2");

}

}

七、协作上下文(AgentContext.java)

package com.ai.multiagent.dto;

import lombok.Data;

// 节点间数据传递上下文

@Data

public class AgentContext {

private String orderId; // 订单ID

private String orderInfo; // 订单节点输出

private boolean paymentSuccess;// 支付节点结果

private String logisticsPlan; // 物流节点输出

private String productInfo; // 商品信息(入参)

private String tradeNo; // 支付宝交易号

}

八、服务层实现

1. 订单节点服务(OrderAgentService.java)

package com.ai.multiagent.service;

import org.springframework.ai.openai.OpenAiCompletionsClient;

import org.springframework.stereotype.Service;

import com.ai.multiagent.dto.AgentContext;

import reactor.core.publisher.Flux;

@Service

public class OrderAgentService {

private final OpenAiCompletionsClient completionsClient;

public OrderAgentService(OpenAiCompletionsClient completionsClient) {

this.completionsClient = completionsClient;

}

// 订单节点执行:流式Prompt输出

public AgentContext execute(AgentContext context) {

String prompt = String.format("生成订单%s的JSON格式信息,包含商品:%s、金额、收货地址",

context.getOrderId(), context.getProductInfo());

// 调用OpenAI流式接口

Flux<String> stream = completionsClient.stream(prompt);

StringBuilder orderInfo = new StringBuilder();

stream.subscribe(chunk -> orderInfo.append(chunk),

e -> System.err.println("订单生成异常:" + e.getMessage()));

// 阻塞等待(测试用,生产用异步)

try { Thread.sleep(2000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }

context.setOrderInfo(orderInfo.toString().trim());

return context;

}

}

2. 支付节点服务(PaymentAgentService.java)

package com.ai.multiagent.service;

import com.alipay.api.AlipayClient;

import com.alipay.api.request.AlipayTradeQueryRequest;

import com.alipay.api.response.AlipayTradeQueryResponse;

import com.ai.multiagent.dto.AgentContext;

import org.springframework.stereotype.Service;

import java.util.HashMap;

import java.util.Map;

@Service

public class PaymentAgentService {

private final AlipayClient alipayClient;

public PaymentAgentService(AlipayClient alipayClient) {

this.alipayClient = alipayClient;

}

// 支付节点执行:调用支付宝MCP工具

public AgentContext execute(AgentContext context) {

try {

AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();

Map<String, String> bizContent = new HashMap<>();

bizContent.put("out_trade_no", context.getOrderId());

bizContent.put("trade_no", context.getTradeNo());

request.setBizContent(bizContent.toString());

// 调用支付宝MCP真实接口

AlipayTradeQueryResponse response = alipayClient.execute(request);

context.setPaymentSuccess(response.isSuccess() && "TRADE_SUCCESS".equals(response.getTradeStatus()));

} catch (Exception e) {

context.setPaymentSuccess(false);

System.err.println("支付校验异常:" + e.getMessage());

}

return context;

}

}

3. 物流节点服务(LogisticsAgentService.java)

package com.ai.multiagent.service;

import com.ai.multiagent.dto.AgentContext;

import org.springframework.ai.openai.OpenAiChatClient;

import org.springframework.ai.openai.OpenAiEmbeddingClient;

import org.springframework.stereotype.Service;

import org.springframework.web.client.RestTemplate;

import java.util.HashMap;

import java.util.Map;

@Service

public class LogisticsAgentService {

private final OpenAiEmbeddingClient embeddingClient;

private final OpenAiChatClient chatClient;

private final RestTemplate restTemplate = new RestTemplate();

// RAG知识库API地址

private final String RAG_API_URL = "http://localhost:8080/api/rag/knowledge";

public LogisticsAgentService(OpenAiEmbeddingClient embeddingClient, OpenAiChatClient chatClient) {

this.embeddingClient = embeddingClient;

this.chatClient = chatClient;

}

// 物流节点执行:RAG知识库调用

public AgentContext execute(AgentContext context) {

try {

// 1. 调用OpenAI Embeddings生成向量(RAG核心)

float[] embedding = embeddingClient.embed(context.getOrderInfo()).getEmbedding();

// 2. 调用RAG知识库API(真实接口)

Map<String, Object> ragRequest = new HashMap<>();

ragRequest.put("orderId", context.getOrderId());

ragRequest.put("embedding", embedding);

Map<String, String> ragContext = restTemplate.postForObject(RAG_API_URL, ragRequest, Map.class);

// 3. 生成物流方案

String prompt = String.format("基于知识库:%s,为订单%s生成物流方案(快递、时效、运费)",

ragContext.get("context"), context.getOrderId());

context.setLogisticsPlan(chatClient.call(prompt));

} catch (Exception e) {

context.setLogisticsPlan("物流方案生成失败:" + e.getMessage());

}

return context;

}

// 模拟RAG知识库API(真实部署时独立提供)

public Map<String, String> ragKnowledgeApi(Map<String, Object> request) {

Map<String, String> response = new HashMap<>();

response.put("context", "江浙沪顺丰1天0运费,偏远地区中通3天15运费");

return response;

}

}

4. 流程编排服务(MultiAgentWorkflowService.java)

package com.ai.multiagent.service;

import com.ai.multiagent.dto.AgentContext;

import org.springframework.ai.stategraph.StateGraph;

import org.springframework.stereotype.Service;

@Service

public class MultiAgentWorkflowService {

private final OrderAgentService orderAgent;

private final PaymentAgentService paymentAgent;

private final LogisticsAgentService logisticsAgent;

public MultiAgentWorkflowService(OrderAgentService orderAgent,

PaymentAgentService paymentAgent,

LogisticsAgentService logisticsAgent) {

this.orderAgent = orderAgent;

this.paymentAgent = paymentAgent;

this.logisticsAgent = logisticsAgent;

}

// 构建StateGraph流程(订单→支付→物流)

public StateGraph<AgentContext> buildWorkflow() {

return StateGraph.<AgentContext>builder()

// 1. 订单节点

.step("order", context -> orderAgent.execute(context))

// 2. 支付节点(依赖订单完成)

.step("payment", context -> paymentAgent.execute(context))

// 3. 物流节点(依赖支付成功)

.step("logistics", context -> {

if (context.isPaymentSuccess()) {

return logisticsAgent.execute(context);

}

context.setLogisticsPlan("支付失败,跳过物流");

return context;

})

// 定义执行顺序

.edge("order", "payment")

.edge("payment", "logistics")

// 起始节点

.start("order")

.build();

}

// 执行全流程

public AgentContext runWorkflow(AgentContext initialContext) {

StateGraph<AgentContext> graph = buildWorkflow();

return graph.execute(initialContext);

}

}

九、控制层(MultiAgentController.java)

package com.ai.multiagent.controller;

import com.ai.multiagent.dto.AgentContext;

import com.ai.multiagent.service.MultiAgentWorkflowService;

import org.springframework.http.ResponseEntity;

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

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

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

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

@RestController

@RequestMapping("/api/agent")

public class MultiAgentController {

private final MultiAgentWorkflowService workflowService;

public MultiAgentController(MultiAgentWorkflowService workflowService) {

this.workflowService = workflowService;

}

// 多智能体协作入口

@PostMapping("/run")

public ResponseEntity<AgentContext> runWorkflow(@RequestBody AgentContext context) {

AgentContext result = workflowService.runWorkflow(context);

return ResponseEntity.ok(result);

}

// RAG知识库API(模拟)

@PostMapping("/rag/knowledge")

public ResponseEntity<Map<String, String>> ragApi(@RequestBody Map<String, Object> request) {

Map<String, String> response = new LogisticsAgentService(null, null).ragKnowledgeApi(request);

return ResponseEntity.ok(response);

}

}

十、启动类(MultiAgentApplication.java)

package com.ai.multiagent;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class MultiAgentApplication {

public static void main(String[] args) {

SpringApplication.run(MultiAgentApplication.class, args);

}

}

十一、配置文件(application.yml)

server:

port: 8080

spring:

ai:

openai:

api-key: ${OPENAI_API_KEY} # 替换为真实Key

alipay:

app-id: ${ALIPAY_APP_ID} # 替换为真实值

private-key: ${ALIPAY_PRIVATE_KEY}

public-key: ${ALIPAY_PUBLIC_KEY}

gateway-url: https://openapi.alipay.com/gateway.do

十二、测试类(MultiAgentFlowTest.java)

package com.ai.multiagent;

import com.ai.multiagent.dto.AgentContext;

import com.ai.multiagent.service.MultiAgentWorkflowService;

import com.ai.multiagent.service.OrderAgentService;

import com.ai.multiagent.service.PaymentAgentService;

import com.ai.multiagent.service.LogisticsAgentService;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest

public class MultiAgentFlowTest {

@Autowired

private OrderAgentService orderAgent;

@Autowired

private PaymentAgentService paymentAgent;

@Autowired

private LogisticsAgentService logisticsAgent;

@Autowired

private MultiAgentWorkflowService workflowService;

// 测试1:单独测试订单节点

@Test

public void testOrderAgent() {

AgentContext context = new AgentContext();

context.setOrderId("TEST_001");

context.setProductInfo("iPhone 15 256G");

AgentContext result = orderAgent.execute(context);

System.out.println("【订单节点测试】结果:" + result.getOrderInfo());

}

// 测试2:单独测试支付节点

@Test

public void testPaymentAgent() {

AgentContext context = new AgentContext();

context.setOrderId("TEST_001");

context.setTradeNo("2024050122001410086000000001");

AgentContext result = paymentAgent.execute(context);

System.out.println("【支付节点测试】结果:" + result.isPaymentSuccess());

}

// 测试3:单独测试物流节点

@Test

public void testLogisticsAgent() {

AgentContext context = new AgentContext();

context.setOrderId("TEST_001");

context.setOrderInfo("{\"orderId\":\"TEST_001\",\"product\":\"iPhone 15\",\"address\":\"杭州\"}");

AgentContext result = logisticsAgent.execute(context);

System.out.println("【物流节点测试】结果:" + result.getLogisticsPlan());

}

// 测试4:全流程测试(StateGraph编排)

@Test

public void testFullWorkflow() {

AgentContext initialContext = new AgentContext();

initialContext.setOrderId("TEST_001");

initialContext.setProductInfo("iPhone 15 256G");

initialContext.setTradeNo("2024050122001410086000000001");

AgentContext result = workflowService.runWorkflow(initialContext);

System.out.println("【全流程测试】订单信息:" + result.getOrderInfo());

System.out.println("【全流程测试】支付状态:" + result.isPaymentSuccess());

System.out.println("【全流程测试】物流方案:" + result.getLogisticsPlan());

}

}

总结

核心设计:基于StateGraph实现订单→支付→物流的顺序执行,节点间通过AgentContext传递数据;

接口真实性

订单节点调用 OpenAI Completions 流式接口实现 Prompt 输出;

支付节点调用支付宝 MCP 真实接口校验支付状态;

物流节点通过 OpenAI Embeddings + 自定义 RAG API 实现知识库调用;

分层清晰:Controller 暴露接口,Service 实现业务逻辑,Config 配置第三方客户端,测试类覆盖单节点 + 全流程;

简洁性:使用 SpringBoot 注解(@Service/@RestController/@Configuration),代码无冗余,聚焦核心逻辑。

运行说明

替换配置文件中的OPENAI_API_KEY、支付宝密钥为真实值;

启动应用后,可通过POST /api/agent/run调用全流程接口;

运行测试类可依次验证每个节点的执行效果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:52:48

Spring Cloud架构下的日志追踪:传统MDC vs 王炸SkyWalking

为什么我们需要日志追踪&#xff1f; 想象一下&#xff0c;在一个大型的微服务架构中&#xff0c;一次用户的请求可能会经过网关、用户服务、订单服务、支付服务等多个微服务。当出现问题时&#xff0c;如果没有日志追踪&#xff0c;我们看到的就是一堆杂乱无章的日志&#xf…

作者头像 李华
网站建设 2026/7/14 15:53:07

【爬虫】使用 Scrapy 框架爬取豆瓣电影 Top 250 数据的完整教程

前言 在大数据和网络爬虫领域&#xff0c;Scrapy 是一个功能强大且广泛使用的开源爬虫框架。它能够帮助我们快速地构建爬虫项目&#xff0c;并高效地从各种网站中提取数据。在本篇文章中&#xff0c;我将带大家从零开始使用 Scrapy 框架&#xff0c;构建一个简单的爬虫项目&am…

作者头像 李华
网站建设 2026/7/14 15:52:53

Simpack轨道车辆轮对扁疤故障设置及结果探秘

simpack轨道车辆&#xff0c;轮对扁疤故障设置&#xff0c;结果如下。 非教程。在轨道车辆的研究领域中&#xff0c;Simpack可是一款大名鼎鼎的多体动力学仿真软件。今天咱就唠唠Simpack轨道车辆里轮对扁疤故障设置这一有趣话题&#xff0c;顺便瞅瞅得出的结果都有啥门道。先来…

作者头像 李华
网站建设 2026/7/14 15:52:51

从CPU低延迟、GPU高带宽到大规模GPU集群

一、CPU和GPU的架构和特性计算任务的耗时体现在两个方面&#xff1a;逻辑复杂&#xff0c;海量。为了更快地处理比较复杂的任务&#xff0c;需要优化处理单个任务的时间&#xff0c;也就是低延迟&#xff0c;于是产生了CPU&#xff1b;为了更快地处理巨量互不依赖的任务&#x…

作者头像 李华