大模型JSON输出不稳定?从提示词到后处理的完整工程化解决方案
在实际 AI 应用开发中无论是构建智能 Agent 还是处理结构化数据让大语言模型稳定、准确地输出 JSON 格式都是一个高频且棘手的需求。模型可能输出不完整的 JSON、包含多余的解释文本或者在复杂嵌套时出现格式错误这些都会导致下游程序解析失败。对于准备大模型相关岗位面试的开发者而言理解并解决这个问题不仅是展示工程化能力的关键也是区分“只会调 API”和“能构建可靠系统”的重要标志。本文将深入探讨如何从提示词设计、API 调用参数控制、后处理校验以及架构设计等多个层面系统性地解决大模型 JSON 输出不稳定的问题。我们将从最简单的场景开始逐步深入到生产环境下的最佳实践并提供可复现的代码示例和详细的排查清单。1. 理解问题根源为什么大模型输出 JSON 不稳定在要求模型解决具体问题之前我们必须先理解它为何会“不听话”。大语言模型本质上是基于概率生成文本的序列预测器它并没有内置的 JSON 语法解析器或验证器。其不稳定性主要源于以下几个方面。1.1 训练数据与概率生成的本质模型在训练时学习了海量互联网文本其中包含大量结构化和非结构化数据。虽然它“见过”无数 JSON 例子但其学习目标是预测下一个 token词元的概率分布而非保证输出符合严格的语法规范。当生成过程涉及括号、引号、逗号时任何一个 token 的预测偏差都可能导致格式错误。例如模型可能预测右花括号}的概率很高但在生成长文本时也可能被“接下来应该解释一下”这类训练数据中的常见模式所影响从而插入多余的自然语言。1.2 提示词Prompt的模糊性模糊的指令是导致输出格式混乱的首要原因。对比以下两种提示模糊提示“请把用户信息整理成 JSON。”清晰提示“请严格输出一个 JSON 对象包含name(字符串)、age(整数)、hobbies(字符串数组) 三个字段。不要输出任何额外的解释、标记或文本。JSON 内容如下”第一种提示没有定义具体的字段名、类型和结构模型有很大的自由发挥空间很可能在 JSON 前后加上“好的这是整理后的信息”等文本。第二种提示则明确了格式、结构和约束。1.3 上下文Context的干扰如果对话历史或系统指令中包含了非 JSON 的格式示例、复杂的推理步骤要求或者本次查询的上下文本身就鼓励模型进行“思考”那么模型在输出时可能会模仿这种模式将“思考过程”也一并输出从而污染了纯 JSON 结果。1.4 模型本身的“创造性”与“服从性”权衡有些模型特别是早期版本或未经严格对齐的模型倾向于展示其推理能力或提供更“友好”的回答即使你要求它只输出 JSON它也可能认为加上说明会对用户更有帮助。这需要通过对模型参数的调整和更严格的指令来抑制。2. 核心解决方案从提示词工程到参数调优解决输出不稳定问题需要一套组合拳核心在于降低模型生成的不确定性并明确约束其输出空间。2.1 构建强约束的提示词Prompt Engineering提示词是控制模型行为的第一道也是最关键的防线。一个优秀的 JSON 生成提示应包含以下要素明确的角色与任务在系统提示System Prompt或用户消息开头定义模型角色。输出格式的严格规定使用“严格输出”、“只输出”、“必须遵循”等强动词。JSON Schema 描述详细描述期望的 JSON 结构包括字段名、数据类型string, number, boolean, array, object、是否必需、以及简单的约束如枚举值。示例Few-Shot Learning提供1-2个输入输出的配对示例这是让模型快速理解你要求的极佳方式。负面指令明确禁止模型做什么如“不要添加任何额外的解释”、“不要包含 markdown 代码块标记”。下面是一个整合了以上要素的提示词示例适用于 OpenAI Chat Completions APIsystem_prompt 你是一个专业的JSON数据生成器。你的任务是根据用户的输入生成一个严格符合给定格式的JSON对象。 请遵循以下规则 1. 输出必须是**一个且仅一个**完整的、语法正确的JSON对象。 2. 不要输出任何JSON以外的文本、解释、道歉、markdown代码块标记如json或前缀。 3. 严格使用以下JSON Schema定义的结构 { type: object, properties: { name: { type: string, description: 用户的全名 }, age: { type: integer, description: 用户的年龄必须是正整数 }, is_student: { type: boolean, description: 用户是否为在校学生 }, courses: { type: array, items: { type: string }, description: 用户选修的课程列表 } }, required: [name, age, is_student] } 示例1 用户输入张三30岁不是学生学过数学和物理。 输出{name: 张三, age: 30, is_student: false, courses: [数学, 物理]} 示例2 用户输入李四22岁是学生。 输出{name: 李四, age: 22, is_student: true, courses: []} 现在请处理新的用户输入。 user_input 王五25岁是一名学生正在学习计算机科学和英语。2.2 利用API的格式化功能主流的大模型API正在逐步原生支持结构化输出这是最稳定可靠的方法。OpenAI GPT-4o / GPT-4 Turbo支持response_format参数。将response_format设置为{“type”: “json_object”}可以显著提高模型输出JSON的倾向性。重要当使用此参数时系统或用户消息中必须明确指示模型输出JSON否则API可能报错。from openai import OpenAI client OpenAI() response client.chat.completions.create( modelgpt-4o, messages[ {role: system, content: 你输出JSON。}, {role: user, content: 列出三个水果及其颜色格式为JSON数组每个对象有‘name’和‘color’字段。} ], response_format{type: json_object}, # 关键参数 temperature0.1 # 降低随机性 ) print(response.choices[0].message.content)Anthropic Claude支持在系统提示中使用特定的XML标签来定义输出结构功能非常强大。system_prompt format { “fruits”: [ { “name”: “fruit name“, “color”: “color name“ } ] } /format 请根据用户描述将数据填充到上面的JSON格式中。只输出JSON不要有其他内容。 本地模型如通过 Ollama 部署许多微调模型如llama3.2、qwen2.5系列对json或json_object指令响应良好。提示词策略与上述类似同时可以结合temperature和top_p参数。2.3 调整生成参数以降低随机性模型的生成参数直接影响输出的确定性和创造性。为了获得稳定的JSON应进行如下配置参数推荐值说明temperature0.1 - 0.3控制随机性。值越低输出越确定、可重复。设为接近0的值可获得最稳定的JSON但可能牺牲一些灵活性。top_p(nucleus sampling)0.1 - 0.5与temperature类似控制候选词的范围。低值使模型仅考虑高概率token输出更稳定。通常与temperature配合使用调整一个即可。max_tokens适量调高确保预留足够的token数来生成完整的JSON。太短会导致输出被截断。可以根据你期望的JSON复杂度进行估算并留有余量。stop可设置\n等如果模型有在JSON后添加换行符再写解释的习惯可以设置停止序列。但需谨慎可能截断合法JSON内的换行。一个调用示例如下response client.chat.completions.create( modelgpt-4o, messagesmessages, response_format{type: json_object}, temperature0.2, # 低随机性 top_p0.3, # 高确定性采样 max_tokens500, # 预留足够长度 # stop[\n\n] # 可选根据情况设置 )3. 后处理与验证构建安全网无论提示词多完美参数多严格在生产环境中都不能完全信任模型的原始输出。必须建立可靠的后处理与验证流程。3.1 健壮的后处理解析后处理代码的目标是从模型的原始响应中尽可能提取出有效的 JSON 字符串。import json import re def extract_and_parse_json(raw_response: str): 从可能包含额外文本的响应中提取并解析JSON。 参数: raw_response: 模型返回的原始文本 返回: 解析后的Python字典或列表如果失败则返回None或抛出异常。 # 方法1尝试直接解析如果模型非常听话 try: return json.loads(raw_response) except json.JSONDecodeError: pass # 方法2使用正则表达式查找最像JSON的部分 # 这个正则匹配以 { 开头以 } 结尾且中间括号匹配的文本简化版适用于对象 json_match re.search(r\{[^{}]*\}|\{[^{}]*\{[^{}]*\}[^{}]*\}, raw_response, re.DOTALL) # 对于JSON数组可以匹配 \[.*?\] array_match re.search(r\[.*?\], raw_response, re.DOTALL) candidate None if json_match: candidate json_match.group(0) elif array_match: candidate array_match.group(0) if candidate: try: # 再次尝试解析找到的候选文本 return json.loads(candidate) except json.JSONDecodeError: # 可以尝试更激进的清理如去除首尾空白、换行但需小心 candidate_clean candidate.strip() # 处理常见的非JSON前缀如 json 或 反引号 if candidate_clean.startswith(json): candidate_clean candidate_clean[7:] elif candidate_clean.startswith(): candidate_clean candidate_clean[3:] if candidate_clean.endswith(): candidate_clean candidate_clean[:-3] try: return json.loads(candidate_clean) except json.JSONDecodeError as e: print(f清理后仍无法解析JSON: {e}) print(f原始文本: {raw_response[:200]}...) return None # 方法3如果以上都失败记录日志并返回None或抛出业务异常 print(f无法从响应中提取JSON: {raw_response[:500]}...) return None # 使用示例 raw_output model_response.choices[0].message.content parsed_data extract_and_parse_json(raw_output) if parsed_data: # 继续你的业务逻辑 process_data(parsed_data) else: # 触发降级策略如使用默认值、重试或人工审核 handle_failure()3.2 使用 JSON Schema 进行验证提取出 JSON 后必须验证其结构是否符合预期。jsonschema库是 Python 中的标准工具。from jsonschema import validate, ValidationError # 定义你期望的 Schema expected_schema { type: object, properties: { name: {type: string}, age: {type: integer, minimum: 0}, is_student: {type: boolean}, courses: { type: array, items: {type: string}, default: [] # Schema 可以定义默认值但 validate 不负责填充 } }, required: [name, age, is_student], additionalProperties: False # 禁止出现未定义的字段 } def validate_json_data(data): try: validate(instancedata, schemaexpected_schema) print(JSON 数据验证通过。) return True except ValidationError as e: print(fJSON 数据验证失败: {e.message}) print(f失败路径: {e.json_path}) # 这里可以记录更详细的错误信息用于优化提示词或触发重试 return False # 在解析后调用验证 if parsed_data and validate_json_data(parsed_data): # 数据完全符合预期安全使用 save_to_database(parsed_data)将additionalProperties设置为False是一个好习惯可以防止模型“臆造”出你不希望的字段。4. 高级策略与架构设计对于企业级或高可靠性应用需要从架构层面考虑稳定性。4.1 实现重试与降级机制网络波动、模型瞬时故障或偶尔的格式错误是不可避免的。一个健壮的系统应该具备重试能力。import time from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type class RobustJSONGenerator: def __init__(self, client, model): self.client client self.model model retry( stopstop_after_attempt(3), # 最多重试3次 waitwait_exponential(multiplier1, min2, max10), # 指数退避 retryretry_if_exception_type((json.JSONDecodeError, ValidationError, KeyError)) # 仅在解析/验证失败时重试 ) def generate_json_with_retry(self, user_input, system_prompt): messages [ {role: system, content: system_prompt}, {role: user, content: user_input} ] response self.client.chat.completions.create( modelself.model, messagesmessages, response_format{type: json_object}, temperature0.1, max_tokens1000 ) raw_json response.choices[0].message.content parsed_data json.loads(raw_json) # 直接解析假设提示词足够强 validate(instanceparsed_data, schemaexpected_schema) # 验证 return parsed_data def generate_json_with_fallback(self, user_input): 带有最终降级策略的生成 try: return self.generate_json_with_retry(user_input, strong_system_prompt) except Exception as e: print(f所有重试均失败: {e}) # 降级策略1使用更简单的提示词再试一次快速路径 try: return self._generate_with_simple_prompt(user_input) except Exception: # 降级策略2返回一个安全的默认值或空结构 return {name: N/A, age: 0, is_student: False, courses: []} # 或者将任务放入死信队列供后续人工处理 # send_to_dlq(user_input)4.2 为复杂任务设计分步 Agent对于极其复杂、一步到位的 JSON 生成容易出错的场景可以设计一个多步执行的智能体Agent。规划 Agent分析用户输入拆解出需要填充的 JSON 字段和所需的信息点。提取/推理 Agent针对每个信息点通过调用工具如搜索、计算、链式思考Chain-of-Thought等方式得出具体值。组装与校验 Agent将收集到的值按照 Schema 组装成 JSON并进行自我检查和修正。这种方式将单次生成的大概率错误风险分散到多个可控的小步骤中每一步都可以进行校验和重试整体成功率更高。可以使用 LangChain、LlamaIndex 等框架来编排此类工作流。4.3 微调Fine-tuning专用模型如果 JSON 输出的结构和领域非常固定例如始终从医疗报告摘要中提取相同的几十个字段那么收集一批高质量的输入输出 JSON配对数据对基础模型进行微调是获得最高稳定性和准确性的终极方案。微调后的模型会深刻理解你所需的格式几乎不再需要复杂的后处理。可以使用LlamaFactory、Axolotl等工具进行高效微调。5. 常见问题排查清单当你的大模型 JSON 输出仍然不稳定时请按照以下清单逐项检查问题现象可能原因检查与解决步骤输出包含额外文本如“好的这是JSON”提示词约束力不足或系统提示未生效。1. 检查系统提示System Prompt是否明确要求“只输出JSON”。2. 在用户提示中再次强调“不要输出任何非JSON文本”。3. 使用API的response_format参数如果支持。JSON不完整或被截断max_tokens参数设置过小。1. 估算输出JSON的大致长度可使用在线Token计算器。2. 将max_tokens设置为估算值的1.5-2倍。3. 检查后处理代码是否错误地截断了字符串。字段类型错误如数字写成字符串提示词中对字段类型的描述不够清晰或模型理解偏差。1. 在提示词的Schema描述中明确类型如“age”: {“type”: “integer”}。2. 提供包含正确类型的示例Few-Shot。3. 在后处理中使用jsonschema验证并对类型错误进行自动转换如int(parsed[“age”])。缺少必需字段或多了未知字段Schema定义不清或模型自由发挥。1. 在提示词中列出required字段。2. 在验证Schema中设置“additionalProperties”: false。3. 后处理时检查字段是否存在并为可选字段提供默认值。简单场景成功复杂场景失败复杂嵌套结构或逻辑超出了单次提示的处理能力。1. 考虑采用分步Agent策略先提取简单部分再组合。2. 尝试让模型“先思考后输出”将推理过程与JSON输出分离可通过临时变量实现。3. 检查复杂输入是否清晰无歧义。同一提示词在不同模型上效果差异大不同模型的对齐能力和指令遵循能力不同。1. 为不同模型定制提示词。较小或专用模型可能需要更详细、更示例化的提示。2. 优先选择在官方文档中明确支持JSON输出或函数调用的模型如GPT-4系列Claude 3。3. 测试并记录不同模型的稳定性作为选型依据。6. 生产环境最佳实践将大模型 JSON 生成能力投入生产除了上述技术点还需考虑工程和运维层面。配置与提示词外部化不要将提示词硬编码在代码中。将其存储在数据库、配置文件或配置中心便于动态调整、A/B测试和版本管理。全面的日志记录记录每一次调用的请求提示词、模型参数、原始响应、解析后的数据以及验证结果。这些日志是优化提示词、排查问题和评估模型性能的黄金数据。监控与告警定义关键指标进行监控如JSON解析成功率、Schema验证通过率、平均响应延迟、Token消耗量。当解析成功率下降时触发告警。设置速率限制与熔断对模型API的调用进行限流防止因意外循环或流量激增导致费用爆炸或服务雪崩。在连续失败时启动熔断机制。成本与性能权衡更强大的模型如GPT-4通常格式遵循能力更好但成本更高、速度更慢。要根据业务对准确率和延迟的要求进行选型。对于格式简单的任务性能优异的较小模型如qwen2.5配合精心设计的提示词可能是性价比更高的选择。人工审核回路对于关键业务数据或解析持续失败的案例设计流程将数据转入人工审核队列。这些人工纠正后的数据又可以作为高质量样本用于优化提示词或微调模型形成闭环。稳定获取大模型输出的 JSON 不是一个单点技巧而是一套涵盖提示词设计、API调用、后处理、验证和系统架构的工程体系。从定义一个清晰的 Schema 开始用强约束的提示词和低随机性参数引导模型再用健壮的后处理代码作为安全网最后通过监控和重试机制保障线上可靠性。在面对面试官时能够系统地阐述这套从预防到补救的完整方案远比仅仅回答“可以用正则表达式提取”更能体现你的工程深度和解决复杂问题的能力。在实际项目中建议从最简单的提示词和直接解析开始然后随着遇到的具体问题逐步引入更高级的策略最终构建出适合自身业务场景的稳定数据流水线。

相关新闻

【AI合规落地黄金 checklist】:20年监管专家亲授,7大必检项避坑指南(附GDPR+《生成式AI服务管理暂行办法》双对标表)

【AI合规落地黄金 checklist】:20年监管专家亲授,7大必检项避坑指南(附GDPR+《生成式AI服务管理暂行办法》双对标表)

更多请点击: https://intelliparadigm.com 第一章:AI合规落地的底层逻辑与风险全景图 AI合规并非单纯的技术适配或文档填充,而是数据治理、模型生命周期管控与法律义务三者深度耦合的系统工程。其底层逻辑根植于“可解释性驱动决策”“可追溯…

2026/8/4 13:11:41 阅读更多 →
泛微OA手写签名功能配置与二次开发指南

泛微OA手写签名功能配置与二次开发指南

1. 泛微OA手写签名功能实现指南在OA系统日常使用中,手写签名功能是审批流程电子化的重要环节。作为国内主流OA产品,泛微系统通过集成HTML5 Canvas技术实现了原笔迹签批功能。本文将基于泛微E9版本,详细解析从系统配置到实际应用的全流程实现方…

2026/8/4 13:11:41 阅读更多 →
最后37天!企鹅号AI内容扶持计划即将关闭:抓住流量红利末班车的6个不可逆动作

最后37天!企鹅号AI内容扶持计划即将关闭:抓住流量红利末班车的6个不可逆动作

更多请点击: https://codechina.net 第一章:最后37天!企鹅号AI内容扶持计划即将关闭:抓住流量红利末班车的6个不可逆动作 距离企鹅号AI内容专项扶持计划截止仅剩37天——这不仅是时间倒计时,更是一次算法推荐权重、流…

2026/8/4 13:11:41 阅读更多 →

最新新闻

终极指南:如何用LeetHub实现LeetCode与GitHub的自动化同步

终极指南:如何用LeetHub实现LeetCode与GitHub的自动化同步

终极指南:如何用LeetHub实现LeetCode与GitHub的自动化同步 【免费下载链接】LeetHub Automatically sync your leetcode solutions to your github account - top 5 trending GitHub repository 项目地址: https://gitcode.com/gh_mirrors/le/LeetHub LeetHu…

2026/8/5 17:11:52 阅读更多 →
如何快速下载国家中小学智慧教育平台电子课本:完整PDF下载指南

如何快速下载国家中小学智慧教育平台电子课本:完整PDF下载指南

如何快速下载国家中小学智慧教育平台电子课本:完整PDF下载指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …

2026/8/5 17:11:52 阅读更多 →
GitHub Desktop终极汉化指南:3分钟免费打造中文版Git客户端

GitHub Desktop终极汉化指南:3分钟免费打造中文版Git客户端

GitHub Desktop终极汉化指南:3分钟免费打造中文版Git客户端 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 你是否因为GitHu…

2026/8/5 17:11:52 阅读更多 →
我踩的那些 Python 布尔数组的坑

我踩的那些 Python 布尔数组的坑

那天我在做日志埋点数据的去重统计,每个用户当天有没有触发过某个事件,有就是 True,没有就是 False。数据量不大,大概几百万行日志,我觉得随便写写就行了。 上线那天下午,运维突然打电话说机器内存炸了。我…

2026/8/5 17:11:52 阅读更多 →
fatal error in launcher:unable to create process using 解决办法

fatal error in launcher:unable to create process using 解决办法

安装python库的时候老是提示:fatal error in launcher:unable to create process using,script目录也添加到了系统变量path中,就是报错。不直接pip安装了,换了命令:python -m pip install 库名称下载源,运行成功。遇到同问题的…

2026/8/5 17:11:52 阅读更多 →
HTML5 Form 表单新特性:减少一半JS校验代码

HTML5 Form 表单新特性:减少一半JS校验代码

HTML5 Form 表单新特性:减少一半JS校验代码 在现代Web开发中,表单验证一直是前端开发者最头疼的工作之一。传统的JavaScript校验往往需要编写大量重复代码来处理输入格式、必填项、错误提示等问题。幸运的是,HTML5引入了一系列强大的表单特性…

2026/8/5 17:10:52 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/4 11:09:16 阅读更多 →
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/4 13:38:40 阅读更多 →