Spring Boot集成免费AI模型:企业级可插拔架构设计与工程实践
在实际企业级应用开发中如何高效、合规地集成人工智能能力正成为一个普遍的技术挑战。许多团队在项目初期受限于预算、审批流程或对技术栈的熟悉度往往会优先选择免费、开源的AI工具和模型进行探索与验证。这种做法不仅能快速验证技术可行性还能为后续的正式选型积累宝贵的工程经验。本文将从一个Java/Spring Boot开发者的视角探讨如何在企业级项目中基于免费或开源方案构建一个可落地、可维护的AI功能集成框架。我们会聚焦于如何设计一个清晰的架构将AI能力如大模型对话、内容生成作为服务组件嵌入现有系统并处理好配置、日志、异常和扩展性等工程问题。1. 理解企业级AI集成的核心挑战与架构原则在项目里引入AI远不止是调用一个API那么简单。它涉及到模型选择、接口适配、数据处理、错误处理、成本控制等一系列工程化问题。尤其是在预算有限或要求内部部署的场景下免费开源方案成为首选但这同时也带来了新的挑战。1.1 免费开源AI方案的典型场景与局限免费方案通常指无需付费调用或可本地部署的开源模型例如使用Spring AI项目集成本地运行的Ollama服务或调用某些提供免费额度的云端API。其核心价值在于低成本启动和技术验证。然而它们通常存在以下局限性能与能力免费模型的推理速度、理解能力和生成质量可能不及商业闭源模型。稳定性与服务等级协议SLA免费API通常不提供可用性保证可能随时调整策略或限流。功能完整性可能缺少高级功能如微调接口、长上下文支持或特定的工具调用能力。部署复杂性本地部署模型需要额外的运维知识涉及GPU资源、模型文件管理和服务监控。1.2 设计可插拔的AI服务层架构为了应对上述挑战并确保项目长期健康我们需要在业务代码和具体的AI模型/服务之间建立一个抽象层。这个服务层应遵循以下设计原则接口统一无论底层是本地模型还是云端API对上层业务提供一致的调用接口。配置驱动通过配置文件如application.yml轻松切换不同的AI服务提供商或模型。容错与降级当主用AI服务不可用时应有备用方案或优雅的失败处理机制。可观测性集成完善的日志、指标Metrics和链路追踪便于问题排查和成本分析。一个简化的架构图如下所示[业务层 (Controller/Service)] | v [AI服务抽象层 (AiService Interface)] | |--- [OpenAI Adapter] --- OpenAI API |--- [Ollama Adapter] --- 本地 Ollama 服务 --- [Mock Adapter] --- 用于测试的模拟实现2. 环境准备与项目骨架搭建我们将以一个Spring Boot Web项目为例演示如何集成一个免费的AI对话服务。这里选择Spring AI作为集成框架它提供了对多种AI模型的统一抽象并且支持本地模型。2.1 技术栈与依赖选择核心框架Spring Boot 3.xAI集成Spring AI (确保版本与Spring Boot兼容例如spring-ai-openai-spring-boot-starter)本地模型服务Ollama (一个用于在本地运行大模型的工具)项目管理Maven 或 Gradle首先创建一个标准的Spring Boot项目。在pom.xml中引入必要依赖。注意Spring AI的依赖可能需要添加特定的仓库。?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.5/version !-- 使用稳定版本 -- relativePath/ /parent groupIdcom.example/groupId artifactIdai-integration-demo/artifactId version0.0.1-SNAPSHOT/version nameai-integration-demo/name descriptionDemo project for AI integration/description properties java.version17/java.version spring-ai.version0.8.1/spring-ai.version !-- 确认使用最新稳定版 -- /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency !-- Spring AI OpenAI Starter (用于连接OpenAI兼容API包括本地Ollama) -- dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-openai-spring-boot-starter/artifactId version${spring-ai.version}/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies !-- 可能需要添加Spring AI仓库 -- repositories repository idspring-milestones/id nameSpring Milestones/name urlhttps://repo.spring.io/milestone/url snapshots enabledfalse/enabled /snapshots /repository /repositories build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration excludes exclude groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /exclude /excludes /configuration /plugin /plugins /build /project2.2 配置本地AI模型服务 (Ollama)为了使用免费的本地模型我们需要安装并运行Ollama。这是绕过云端API调用限制和成本的关键一步。下载与安装Ollama访问Ollama官网根据你的操作系统Windows/macOS/Linux下载安装包并安装。拉取并运行模型Ollama安装后可以通过命令行拉取开源模型。这里以轻量级的llama3.2:1b模型为例仅用于演示生产环境需根据需求选择更大模型。# 拉取模型 ollama pull llama3.2:1b # 运行模型服务默认监听 11434 端口 ollama run llama3.2:1b运行后Ollama会在本地http://localhost:11434提供一个兼容OpenAI API的端点。3. 实现可配置的AI服务抽象层有了本地模型服务下一步是在Spring Boot应用中配置并封装AI调用。3.1 配置Spring AI连接Ollama在application.yml中配置Spring AI指向我们本地运行的Ollama服务。# application.yml spring: ai: openai: # 这里配置为本地Ollama服务的地址 base-url: http://localhost:11434/v1 # 因为Ollama不需要真实的API Key但Spring AI配置需要可以填一个占位符 api-key: dummy-key # 指定使用的模型名称必须与Ollama中拉取的模型名匹配 chat: options: model: llama3.2:1b temperature: 0.7 # 创造性0-2之间越高越随机 max-tokens: 500 # 最大生成token数 # 自定义配置用于灵活切换AI服务源 app: ai: provider: ollama # 可选openai, ollama, mock enabled: true关键配置解释spring.ai.openai.base-url将其指向http://localhost:11434/v1Spring AI就会将请求发送给本地的Ollama。spring.ai.openai.api-key对于本地OllamaAPI Key不是必须的但Spring AI的配置项可能需要可以填写任意非空字符串。model必须与ollama pull和ollama run时使用的模型名称一致。app.ai.provider这是一个自定义配置用于在代码中控制使用哪个AI服务实现是实现可插拔的关键。3.2 创建统一的AI服务接口与实现首先定义一个业务层使用的AI服务接口。// com.example.ai.service.AiService.java public interface AiService { /** * 发送消息并获取AI回复 * param prompt 用户输入 * return AI回复内容 */ String chat(String prompt); /** * 检查AI服务是否可用 * return true如果服务健康 */ boolean isServiceAvailable(); }接着实现基于Spring AIChatClient的Ollama服务适配器。ChatClient是Spring AI提供的统一聊天客户端。// com.example.ai.service.impl.OllamaAiService.java import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.ai.chat.client.ChatClient; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; Slf4j Service RequiredArgsConstructor ConditionalOnProperty(name app.ai.provider, havingValue ollama) public class OllamaAiService implements AiService { // 注入Spring AI自动配置的ChatClient private final ChatClient chatClient; Override public String chat(String prompt) { log.info(OllamaAI 收到请求: {}, prompt); try { // 使用ChatClient发起同步调用 String response chatClient.prompt() .user(prompt) .call() .content(); log.info(OllamaAI 返回响应: {}, response); return response; } catch (Exception e) { log.error(调用Ollama AI服务失败, e); // 在实际项目中这里可以抛出自定义的业务异常或返回降级内容 return 抱歉AI服务暂时不可用。; } } Override public boolean isServiceAvailable() { // 这里可以添加更复杂的健康检查例如发送一个测试请求 // 简单起见假设服务配置了就是可用的 return true; } }代码要点ConditionalOnProperty这个注解是Spring Boot的条件装配注解。只有当配置app.ai.providerollama时这个Bean才会被创建并注入。这是实现多版本适配的核心。ChatClientSpring AI的核心接口屏蔽了底层是HTTP调用还是其他协议。我们通过自动配置的ChatClient实例与Ollama交互。异常处理在catch块中记录错误并返回降级响应。在生产环境中可能需要根据异常类型如超时、网络错误、模型错误进行更精细的处理或触发熔断机制。3.3 创建模拟服务与配置类为了支持测试和降级我们实现一个模拟服务。// com.example.ai.service.impl.MockAiService.java import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; Slf4j Service ConditionalOnProperty(name app.ai.provider, havingValue mock) public class MockAiService implements AiService { Override public String chat(String prompt) { log.info(MockAI 收到请求: {}, prompt); return 这是来自Mock服务的回复你的问题是: \ prompt \。实际运行请切换为ollama或openai。; } Override public boolean isServiceAvailable() { return true; } }如果需要集成真实的OpenAI API可以创建另一个实现类并使用ConditionalOnProperty(name app.ai.provider, havingValue openai)。其配置spring.ai.openai.base-url和api-key需要指向OpenAI官方端点并填写有效密钥。4. 构建业务接口并进行集成测试服务层准备好后我们可以创建一个简单的REST控制器来暴露AI能力。4.1 创建REST控制器// com.example.ai.controller.AiChatController.java import com.example.ai.service.AiService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; RestController RequestMapping(/api/ai) RequiredArgsConstructor public class AiChatController { private final AiService aiService; PostMapping(/chat) public String chat(RequestBody ChatRequest request) { if (request null || request.getPrompt() null || request.getPrompt().trim().isEmpty()) { return 请求内容不能为空; } return aiService.chat(request.getPrompt()); } GetMapping(/health) public String health() { return aiService.isServiceAvailable() ? AI服务状态: 健康 : AI服务状态: 异常; } // 简单的请求体 Data public static class ChatRequest { private String prompt; } }4.2 运行与验证启动服务确保Ollama服务在后台运行ollama run llama3.2:1b。然后启动Spring Boot应用。健康检查访问GET http://localhost:8080/api/ai/health应返回“AI服务状态: 健康”。发送聊天请求使用curl或Postman等工具测试。curl -X POST http://localhost:8080/api/ai/chat \ -H Content-Type: application/json \ -d {prompt: 用Java写一个Hello World程序}观察日志与控制台在应用日志和Ollama运行窗口中你应该能看到请求和响应的记录。Spring Boot应用会输出类似OllamaAI 收到请求: ...的日志Ollama控制台会显示模型的推理过程。4.3 切换服务提供商只需修改application.yml中的app.ai.provider配置即可无缝切换AI服务实现。设置为mock将使用模拟服务不依赖外部AI。设置为ollama将使用本地Ollama模型。如果实现了设置为openai将使用OpenAI官方API。重启应用后所有通过AiService接口的调用都会自动路由到新的实现。5. 生产环境进阶考量与常见问题排查将AI功能用于学习或演示是一回事将其集成到生产环境则需要更周全的考虑。5.1 生产环境配置清单考量维度学习/开发环境生产环境建议模型服务本地Ollama单实例容器化部署考虑GPU资源多副本负载均衡配置管理application.yml配置中心如Nacos, Apollo区分环境dev/test/prodAPI密钥/连接信息硬编码或简单配置使用Secrets管理如K8s Secrets, Vault严禁提交至代码库超时与重试默认设置根据模型性能设置合理的连接、读写超时配置重试策略如指数退避熔断与降级简单异常捕获集成Resilience4j或Sentinel在AI服务连续失败时快速失败并返回预设降级内容限流无根据业务量和AI服务能力在网关或应用层实施限流防止滥用或超额成本日志与监控控制台日志结构化日志JSON记录请求/响应摘要注意脱敏集成MetricsPrometheus监控调用量、延迟、错误率数据安全与合规较少考虑审查输入输出内容防止敏感信息泄露如需记录必须脱敏了解模型数据使用政策5.2 常见问题排查表在实际集成过程中你可能会遇到以下问题问题现象可能原因检查步骤解决方案应用启动失败报ChatClient相关错误1. Spring AI依赖或版本不正确。2. 配置项缺失或格式错误。1. 检查pom.xml中Spring AI依赖和仓库配置。2. 检查application.yml中spring.ai.openai下的配置项是否完整。1. 确认Spring Boot与Spring AI版本兼容性。2. 确保base-url、api-key即使是占位符、model均已配置。调用接口返回“AI服务暂时不可用”或超时1. Ollama服务未启动或崩溃。2. 网络端口不通。3. 模型名称不匹配。1. 在终端执行ollama list查看模型是否存在ollama ps查看服务是否运行。2. 使用curl http://localhost:11434/api/tags测试Ollama API是否可达。3. 核对application.yml中的model名与ollama run使用的名称是否完全一致。1. 重启Ollama服务ollama run [model-name]。2. 检查防火墙或安全组设置。3. 修正配置文件中的模型名称。AI回复内容质量差或胡言乱语幻觉1. 模型本身能力有限。2. 提示词Prompt不清晰。3. 温度temperature参数过高。1. 尝试更复杂、清晰的提示词。2. 检查temperature参数设置。1. 更换更强大的模型如llama3.2:3b或更大。2. 优化提示词工程提供更明确的上下文和指令。3. 将temperature调低如0.1以获得更确定性的输出。服务响应速度极慢1. 本地硬件CPU/内存不足。2. 模型过大首次加载需要时间。3. 请求的max-tokens设置过高。1. 观察系统资源监控CPU/内存占用。2. 查看Ollama日志确认是否是首次推理。1. 升级硬件或使用更小的模型。2. 预热模型提前发送一个简单请求。3. 适当降低max-tokens。5.3 最佳实践与扩展方向提示词模板化不要将用户输入直接发送给模型。构建一个提示词模板系统将系统指令、上下文、用户问题组合起来能显著提升回复质量。可以将模板放在数据库或配置文件中。String systemPrompt 你是一个专业的Java助手用简洁准确的代码回答问题。; String fullPrompt String.format(%s\n用户问题%s, systemPrompt, userInput);异步与非阻塞调用AI生成可能是耗时的操作。考虑使用CompletableFuture或Spring的Async将AI调用异步化避免阻塞Web容器线程提升应用整体吞吐量。上下文管理对于多轮对话需要在服务端维护会话上下文。可以为每个会话创建一个ID并将历史消息存储在缓存如Redis中每次请求时附带相关历史。成本与用量监控即使使用免费模型监控也是必要的。记录每个请求的模型、token消耗如果API提供、响应时间。这有助于评估性能、规划资源升级或在未来切换至付费服务时进行成本预估。面向接口编程本文的AiService接口是一个起点。随着业务复杂化可以定义更丰富的接口如AiImageService、AiEmbeddingService并为其提供不同的实现保持系统的清晰和可扩展性。通过以上步骤我们构建了一个结构清晰、可配置、易于维护的免费AI集成方案。这个方案的核心价值在于其可插拔性和工程化封装使得团队可以在免费开源方案上快速启动并在未来需要时能够以最小的代价迁移到更强大或更稳定的商业服务上而业务代码几乎无需改动。

相关新闻

2026机器人开发学习路线:从ROS2到AI集成的系统化进阶指南

2026机器人开发学习路线:从ROS2到AI集成的系统化进阶指南

这次我们来看一个面向2026年的机器人开发入门学习路线。如果你正打算进入机器人领域,或者想系统性地更新自己的知识体系,这篇文章会直接告诉你应该学什么、按什么顺序学、以及每个阶段需要掌握到什么程度。机器人开发是一个软硬件结合的复杂领域&#xf…

2026/8/22 12:12:54 阅读更多 →
AI智能体故障分类与工程化排查指南:从黑盒调试到白盒归因

AI智能体故障分类与工程化排查指南:从黑盒调试到白盒归因

你辛辛苦苦开发了一个AI智能体,它能写代码、查资料、分析数据,看起来无所不能。但当你把它部署到真实业务中,它却开始“犯病”:有时答非所问,有时卡死不动,有时甚至给出完全错误的指令。更头疼的是&#xf…

2026/8/22 12:50:50 阅读更多 →
Harness框架:从AI实验到工程化落地的技能生命周期管理

Harness框架:从AI实验到工程化落地的技能生命周期管理

你有没有遇到过这样的场景:花了好几天时间,把一个复杂的AI任务流程跑通,结果第二天想复用的时候,发现参数忘了、中间文件找不到了、环境变量没配好,一切又得从头开始?或者,当你试图把一个成功的…

2026/8/22 13:01:52 阅读更多 →

最新新闻

aws-athena-query-federation 安全指南:Secrets Manager、KMS 加密与联邦身份传递完整解析

aws-athena-query-federation 安全指南:Secrets Manager、KMS 加密与联邦身份传递完整解析

aws-athena-query-federation 安全指南:Secrets Manager、KMS 加密与联邦身份传递完整解析 【免费下载链接】aws-athena-query-federation The Amazon Athena Query Federation SDK allows you to customize Amazon Athena with your own data sources and code. …

2026/8/22 14:04:43 阅读更多 →
如何用Chumsky组合子写出完整的表达式解析器:Savage parse.rs 源码深度解析

如何用Chumsky组合子写出完整的表达式解析器:Savage parse.rs 源码深度解析

如何用Chumsky组合子写出完整的表达式解析器:Savage parse.rs 源码深度解析 【免费下载链接】savage A primitive computer algebra system 项目地址: https://gitcode.com/gh_mirrors/sa/savage Savage 是一个用纯 Rust 编写的开源计算机代数系统&#xff0…

2026/8/22 14:04:43 阅读更多 →
whisper.cpp CUDA GPU 加速实战教程:3 条命令跑通,推理提速 5-10 倍

whisper.cpp CUDA GPU 加速实战教程:3 条命令跑通,推理提速 5-10 倍

whisper.cpp CUDA GPU 加速实战教程:3 条命令跑通,推理提速 5-10 倍 【免费下载链接】whisper.cpp Port of OpenAIs Whisper model in C/C 项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp whisper.cpp 是 OpenAI Whisper 语音识别…

2026/8/22 14:04:43 阅读更多 →
导出QQ空间历史数据:用GetQzonehistory生成一份6个文件的完整说说档案

导出QQ空间历史数据:用GetQzonehistory生成一份6个文件的完整说说档案

导出QQ空间历史数据:用GetQzonehistory生成一份6个文件的完整说说档案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一款用于QQ空间历史数据导出的命令…

2026/8/22 14:04:43 阅读更多 →
5分钟跑通InternVideo2_CLIP_S:从零搭建视频文本检索Demo(附完整代码)

5分钟跑通InternVideo2_CLIP_S:从零搭建视频文本检索Demo(附完整代码)

5分钟跑通InternVideo2_CLIP_S:从零搭建视频文本检索Demo(附完整代码) 【免费下载链接】InternVideo2_CLIP_S 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_S InternVideo2_CLIP_S 是上海人工智能实验室…

2026/8/22 14:04:43 阅读更多 →
OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比

OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比

OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比 【免费下载链接】omg-tools Optimal Motion Generation-tools: motion planning made easy 项目地址: https://gitcode.com/gh_mirrors/om/omg-tools OMG-tools(Optimal Moti…

2026/8/22 14:03:42 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →