OpenAI宣布支持MCP

根据最新信息,OpenAI宣布支持Model Context Protocol(MCP),这是其在AI工具集成领域的一项重大进展。
在这里插入图片描述
同时在GitHub更新了OpenAI Agents SDK框架。
在这里插入图片描述

  1. MCP是什么?
    MCP是由Anthropic公司主导发布的一种开放协议标准,旨在解决AI模型与外部数据源/工具集成的标准化问题。它类似于AI模型的“USB接口”,通过统一协议让开发者能够像“即插即用”一样连接各种工具,极大扩展AI的应用能力。
  2. OpenAI如何支持MCP?
    • 技术集成:OpenAI在2025年3月27日宣布,其Agent SDK正式支持MCP,允许开发者通过标准化的接口无缝接入第三方工具。
    • 核心功能:
    • 统一接口:支持网络搜索、数据库查询、文件操作等工具的一键集成,例如:
    • 集成金融分析工具,实时获取股票数据并提供投资建议;
    • 使用浏览器自动化工具(如BrowserbaseMCP)控制导航和截图;
    • 通过数据追踪服务(如OpikMCP)获取统计信息。
    • 动态工具发现:Agent运行时自动检测可用工具列表,无需硬编码,工具增减可实时适应。
    • 性能优化:工具列表缓存减少调用延迟,按需加载降低资源消耗。
    • 开发简化:模块化设计使工具开发与Agent逻辑解耦,支持独立调试与部署。
  3. MCP的优势
    • 标准化:统一协议降低集成门槛,开发者无需为每个工具编写定制代码。
    • 灵活性:支持STDIO(本地)和SSE(远程)两种传输模型,兼容JSON-RPC 2.0标准。
    • 生态扩展:已有Firecrawl(数据抓取)、Brave(搜索)等MCP服务开源,未来更多服务商加入将丰富生态。
  4. 行业评价
    • OpenAI CEO Sam Altman公开赞扬MCP,称其是“AI智能体技术的重要突破”。
    • 该协议被视为推动复杂自动化应用(如企业级数据助手、编码工具集成)的关键基础设施。
在 Spring 框架中集成 OpenAI 并使用 MCP 客户端进行开发,可以结合 Spring Boot、Spring AI 以及 MCP 协议实现模块化 AI 服务通信。以下是一个完整的集成方案: ### 1. 引入依赖项 首先,在 `pom.xml` 文件中添加 Spring Boot、Spring AI 以及 MCP 相关的依赖。此外,还需引入 OpenAI 的客户端库,如 `openai-java`。 ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Spring AI Core --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-core</artifactId> <version>1.0.0</version> </dependency> <!-- Spring AI MCP Support --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp</artifactId> <version>1.0.0</version> </dependency> <!-- OpenAI Java Client --> <dependency> <groupId>com.azure</groupId> <artifactId>openai-java</artifactId> <version>1.0.0</version> </dependency> </dependencies> ``` ### 2. 配置 OpenAI 客户端 在 `application.properties` 或 `application.yml` 中配置 OpenAI 的 API 密钥和基础 URL。 ```properties spring.ai.openai.api-key=your_openai_api_key spring.ai.openai.base-url=https://api.openai.com/v1 ``` ### 3. 创建 MCP 客户端 Bean 通过 Spring 的配置类创建 MCP 客户端 Bean,并集成 OpenAI 提供的模型能力。 ```java @Configuration public class AiConfig { @Value("${spring.ai.openai.api-key}") private String apiKey; @Bean public OpenAIClient openAIClient() { return new OpenAIClientBuilder() .credential(new AzureKeyCredential(apiKey)) .buildClient(); } @Bean public MpcClient mpcClient(OpenAIClient openAIClient) { return new MpcClient(openAIClient); // 假设 MpcClient 是封装了 OpenAI 调用的类 } } ``` ### 4. 实现 MCP 客户端逻辑 定义一个 MCP 客户端类,封装与 OpenAI 的交互逻辑,并实现 MCP 协议所需的方法。 ```java public class MpcClient { private final OpenAIClient openAIClient; public MpcClient(OpenAIClient openAIClient) { this.openAIClient = openAIClient; } public String callModel(String prompt) { ChatCompletionsOptions options = new ChatCompletionsOptions( Arrays.asList(new ChatMessage(ChatRole.SYSTEM, prompt))); ChatCompletions chatCompletions = openAIClient.getChatCompletions("gpt-3.5-turbo", options); return chatCompletions.getChoices().get(0).getMessage().getContent(); } } ``` ### 5. 使用 MCP 客户端 在业务逻辑中注入 `MpcClient` 并调用其方法。 ```java @RestController @RequestMapping("/ai") public class AiController { private final MpcClient mpcClient; public AiController(MpcClient mpcClient) { this.mpcClient = mpcClient; } @GetMapping("/chat") public String chat(@RequestParam String prompt) { return mpcClient.callModel(prompt); } } ``` ### 6. 支持异步通信与 SSE 推送 为了支持异步通信,可以结合 Spring 的 `WebClient` 或 `SseEmitter` 实现服务端推送。 ```java @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter streamChat(@RequestParam String prompt) { SseEmitter emitter = new SseEmitter(60_000L); Executors.newSingleThreadExecutor().submit(() -> { String response = mpcClient.callModel(prompt); try { emitter.send(response); emitter.complete(); } catch (IOException e) { emitter.completeWithError(e); } }); return emitter; } ``` ### 7. 日志与异常处理 确保在开发过程中记录关键日志,处理超时、认证失败等常见异常情况,提升系统的健壮性。 ```java @ExceptionHandler(OpenAIException.class) public ResponseEntity<String> handleOpenAIException(OpenAIException ex) { return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body("AI service unavailable: " + ex.getMessage()); } ``` 通过上述步骤,可以在 Spring 框架中成功集成 OpenAI,并基于 MCP 协议构建灵活的 AI 服务客户端,支持同步与异步交互模式[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值