四层防御解决LLM输出JSON解析难题:从提示词到后处理的工程实践
在调用大语言模型LLM生成结构化数据时你是否也遇到过这样的场景你明确要求模型输出一个干净的 JSON 对象但得到的回复却总是夹杂着“好的这是您要的 JSON”这样的前言或者“希望这个 JSON 对您有帮助”之类的后语。当你满怀信心地将这段文本丢给JSON.parse()时迎来的却是冰冷的SyntaxError: Unexpected token解析错误。这个问题看似简单却在实际工程中频繁出现严重影响了自动化流程的稳定性和开发效率。本文将系统性地拆解这一痛点并提供一套从“提示词设计”到“后端健壮性校验”的四层防御方案确保你从模型那里得到的 JSON 数据每一次都能被优雅、稳定地解析。无论你是正在构建 AI 应用的后端开发者还是需要集成 LLM 能力的数据工程师这套方案都能帮你告别 JSON 解析的“玄学”报错。1. 问题背景为什么 LLM 总爱“画蛇添足”在深入解决方案之前我们首先要理解问题的根源。大语言模型如 GPT、Claude、文心一言等本质上是基于概率生成文本的序列模型。它们的训练目标是生成“人类偏好”的、流畅且自然的语言。1.1 模型的“礼貌性”与指令遵循的偏差当你提出“请输出一个 JSON”的请求时模型会将其理解为一个需要“回应”的对话回合。在它庞大的训练数据中大量的人类对话示例都包含了开场白、结束语等社交性文本。因此模型倾向于生成一个完整的、符合人类交流习惯的“回答”而不仅仅是冷冰冰的数据结构。这导致了它在 JSON 前后添加了非结构化的文本。1.2 提示词模糊性的代价简单的指令如“生成一个用户信息的 JSON”是模糊的。模型不确定你是否需要纯粹的 JSON 字符串还是一个包含 JSON 的文本段落。这种模糊性为模型的“自由发挥”留下了空间。1.3 工程影响这种非标准输出会直接导致下游处理流程崩溃前端/客户端解析失败JavaScript 的JSON.parse()、Python 的json.loads()会立即抛出异常。数据管道中断自动化 ETL 流程因此停滞需要人工干预清洗数据。API 响应格式污染如果直接将模型回复作为 API 响应返回会破坏与客户端约定的契约。接下来我们将构建一个由外到内、层层递进的防御体系来解决这个问题。2. 第一层防御精准的提示词工程提示词是与模型沟通的第一道也是最重要的指令。我们的目标是消除歧义强化约束。2.1 使用系统指令System Prompt明确角色在对话开始时通过系统指令为模型设定一个严格的、无情感的“数据接口”角色。你是一个严格的数据生成API。你的任务是根据用户请求输出且仅输出一个符合指定JSON Schema的JSON对象。不要添加任何解释、问候语、前言、后语、Markdown代码块标记如json或任何其他非JSON文本。你的输出必须能被标准的JSON解析器直接解析。2.2 在用户指令User Prompt中重复并具体化要求在每次请求中都清晰地重复输出格式要求。请生成一个描述图书信息的JSON对象。要求如下 - 键名必须为title, author, year, genres (数组) - year 为整数。 - 仅输出JSON不要有任何其他文字。 示例图书《三体》2.3 指定输出格式模板直接给出一个几乎完整的 JSON 骨架让模型只填充值。请将以下信息填充到JSON结构中 书名机器学习实战 作者Peter Harrington 出版年2013 分类[计算机, 人工智能] 输出必须严格遵循此格式 {title: , author: , year: , genres: []}3. 第二层防御Few-shot 示例引导Few-shot Learning少样本学习是引导模型输出的强大工具。通过提供几个输入-输出对的示例模型能更准确地模仿我们期望的、纯净的输出格式。3.1 构建高质量的示例对示例应直接展示“用户输入 - 纯净 JSON 输出”的映射关系。示例1 用户生成一本关于Python编程的书的JSON包含书名、作者、年份和标签。 AI{title: 流畅的Python, author: Luciano Ramalho, year: 2015, tags: [编程, Python, 高级]} 示例2 用户给我一个水果的JSON有名称、颜色和价格。 AI{name: 苹果, color: 红色, price: 5.8} 现在请根据我的请求生成JSON 用户创建一个电影信息的JSON要有片名、导演、上映年份和评分。3.2 示例的关键作用格式示范明确展示了输出就是 JSON 字符串本身没有额外包装。风格固化让模型适应这种“问-答纯数据”的交互模式。减少随机性相比零样本Zero-shotFew-shot 能显著降低输出格式的不可预测性。4. 第三层防御调用参数约束大多数 LLM API如 OpenAI, Anthropic, 国内各大平台都提供了生成参数我们可以利用这些参数从概率层面抑制“废话”的生成。4.1 利用stop序列设置停止序列防止模型在生成 JSON 结束后继续“说话”。例如可以将\n换行符设置为停止序列因为一个标准的、紧凑的 JSON 通常在一行内完成。如果模型想换行添加后语就会被终止。# 以 OpenAI API 为例 import openai response openai.chat.completions.create( modelgpt-3.5-turbo, messages[...], # 你的提示词 temperature0.3, # 降低随机性 stop[\n, ] # 如果检测到换行或代码块结束符则停止生成 )4.2 降低temperaturetemperature参数控制输出的随机性。值越低接近0输出越确定、保守。对于需要严格格式的数据生成任务将其设置为一个较低的值如 0.1 到 0.3可以减少模型“即兴发挥”添加文本的概率。4.3 使用response_format(如果API支持)部分先进的 API 直接支持强制 JSON 输出模式。例如OpenAI 的gpt-4-turbo和gpt-3.5-turbo支持response_format{ type: json_object }。这能极大地保证输出是合法的 JSON。response openai.chat.completions.create( modelgpt-3.5-turbo-1106, # 或更新版本 messages[ {role: system, content: 你只输出JSON。}, {role: user, content: 生成一个用户JSON包含name和age。} ], response_format{type: json_object}, # 关键参数 temperature0.1 ) print(response.choices[0].message.content) # 输出将直接是一个 JSON 字符串如 {name: 张三, age: 30}5. 第四层防御后处理与健壮性解析无论前三层多么完善在复杂的生产环境中我们仍需假设输入可能“不干净”。因此一个健壮的后处理解析层是最后的也是必不可少的安全网。5.1 使用正则表达式提取 JSON编写一个正则表达式从回复文本中提取最可能存在的 JSON 对象。import re import json def extract_json_from_text(llm_response: str): 从可能包含额外文本的LLM回复中提取第一个有效的JSON对象。 # 匹配以 { 开头以 } 结尾且中间内容平衡的字符串 # 使用 re.DOTALL 让 . 匹配换行符 json_pattern r\{[^{}]*\}|(\{(?:[^{}]|(?1))*\}) # 更简单直接的贪婪匹配适用于大多数单层或嵌套不深的情况 json_pattern r(\{.*\}) match re.search(json_pattern, llm_response, re.DOTALL) if match: json_str match.group(1) try: # 尝试解析 json_obj json.loads(json_str) return json_obj except json.JSONDecodeError as e: # 如果提取出来的还不是合法JSON可以尝试二次清理 # 例如去除可能残留的Markdown代码块符号 json_str_clean json_str.strip().strip().strip() if json_str_clean.startswith(json): json_str_clean json_str_clean[4:].strip() try: return json.loads(json_str_clean) except json.JSONDecodeError: raise ValueError(f无法从回复中解析出有效JSON。原始回复片段{llm_response[:200]}...) else: raise ValueError(回复中未找到类似JSON的结构。) # 使用示例 llm_output 好的这是您需要的用户信息\njson\n{\name\: \李四\, \age\: 25}\n\n希望有用 data extract_json_from_text(llm_output) print(data) # 输出{name: 李四, age: 25}5.2 结合 AST抽象语法树进行更安全的提取对于更复杂的情况可以尝试使用 Python 的ast模块来查找并提取可能是 JSON 的字符串字面量但这通常更适用于代码生成场景。5.3 封装健壮的解析函数将上述逻辑封装成一个统一的解析函数并在整个应用中调用。import json import re from typing import Any, Optional def robust_json_parse(llm_text: str, default: Any None) - Optional[Any]: 健壮的JSON解析函数。 1. 首先尝试直接解析整个文本。 2. 如果失败尝试用正则提取最像JSON的部分再解析。 3. 如果还失败返回默认值或抛出异常。 # 尝试1直接解析 llm_text_stripped llm_text.strip() if llm_text_stripped.startswith({) and llm_text_stripped.endswith(}): try: return json.loads(llm_text_stripped) except json.JSONDecodeError: pass # 继续尝试其他方法 # 尝试2去除常见的包装文本和Markdown # 移除可能的 json ... 包装 lines llm_text_stripped.splitlines() cleaned_lines [] in_json_block False for line in lines: stripped_line line.strip() if stripped_line.startswith(json): in_json_block True continue elif stripped_line.startswith() and in_json_block: in_json_block False continue if not (stripped_line.startswith(好的) or stripped_line.startswith(这是) or stripped_line.endswith(。) or stripped_line.endswith()): cleaned_lines.append(line) cleaned_text \n.join(cleaned_lines).strip() # 再次尝试直接解析清理后的文本 if cleaned_text.startswith({) and cleaned_text.endswith(}): try: return json.loads(cleaned_text) except json.JSONDecodeError: pass # 尝试3使用正则表达式进行贪婪匹配 json_match re.search(r(\{[\s\S]*\}), llm_text_stripped) if json_match: try: return json.loads(json_match.group(1)) except json.JSONDecodeError: pass # 所有尝试都失败 if default is not None: return default else: raise json.JSONDecodeError(f无法从文本中解析JSON。文本开头{llm_text_stripped[:100]}, llm_text_stripped, 0) # 使用示例 responses [ {name: Alice}, # 完美情况 JSON如下{name: Bob}, # 有前言 json\n{name: Charlie}\n, # Markdown 代码块 好的为您生成\n{\n name: David\n}\n请查收。, # 多行有前后文 ] for resp in responses: data robust_json_parse(resp, default{error: parse failed}) print(f输入: {resp[:30]}... - 解析结果: {data})6. 完整实战案例构建一个用户信息生成服务让我们通过一个完整的 Python 项目示例将以上四层防御整合到一个实际的服务中。这个服务会调用 LLM API 生成随机用户信息并确保总能得到可解析的 JSON。6.1 项目结构user_generator/ ├── config.py ├── llm_client.py ├── parser.py ├── main.py └── requirements.txt6.2 依赖文件 (requirements.txt)openai1.0.0 pydantic2.0.0 python-dotenv1.0.06.3 配置与提示词模板 (config.py)import os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 class Config: # 从环境变量读取API密钥安全起见不要硬编码 OPENAI_API_KEY os.getenv(OPENAI_API_KEY) OPENAI_BASE_URL os.getenv(OPENAI_BASE_URL, https://api.openai.com/v1) MODEL_NAME os.getenv(MODEL_NAME, gpt-3.5-turbo) # 系统提示词 - 第一层防御核心 SYSTEM_PROMPT 你是一个用户信息JSON生成器。你的唯一任务是根据用户的请求生成一个完全符合以下JSON Schema的用户对象。 你必须遵守以下规则 1. 输出必须是且仅是一个合法的JSON对象。 2. 不要添加任何解释、问候语、前言、后语、Markdown标记。 3. 确保所有字段类型正确。 JSON Schema: { type: object, properties: { id: {type: integer}, username: {type: string}, email: {type: string, format: email}, age: {type: integer, minimum: 1, maximum: 120}, interests: {type: array, items: {type: string}} }, required: [id, username, email, age, interests] } # Few-shot 示例 - 第二层防御 FEW_SHOT_EXAMPLES [ { role: user, content: 生成一个测试用户ID为100兴趣包含阅读和游泳。 }, { role: assistant, content: {id: 100, username: test_user_100, email: user100example.com, age: 28, interests: [阅读, 游泳]} } ]6.4 LLM 客户端封装 (llm_client.py)import openai from openai import OpenAI from config import Config import logging logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) class LLMClient: def __init__(self): self.client OpenAI( api_keyConfig.OPENAI_API_KEY, base_urlConfig.OPENAI_BASE_URL ) self.model Config.MODEL_NAME def generate_user_json(self, user_prompt: str) - str: 调用LLM生成用户JSON字符串。 整合了第一、二、三层防御系统提示词、Few-shot、生成参数。 messages [ {role: system, content: Config.SYSTEM_PROMPT}, ] # 加入 Few-shot 示例 messages.extend(Config.FEW_SHOT_EXAMPLES) # 加入本次用户请求 messages.append({role: user, content: user_prompt}) try: response self.client.chat.completions.create( modelself.model, messagesmessages, temperature0.2, # 低随机性 max_tokens500, # 如果模型支持使用 response_format 强制JSON输出 # response_format{type: json_object}, # 根据模型支持情况开启 stop[\n\n, ] # 防止多输出 ) raw_content response.choices[0].message.content logger.info(fLLM原始返回: {raw_content[:100]}...) return raw_content.strip() except Exception as e: logger.error(f调用LLM API失败: {e}) raise6.5 健壮解析器 (parser.py)import json import re from typing import Any, Dict import logging from pydantic import BaseModel, ValidationError logger logging.getLogger(__name__) # 定义我们期望的数据模型 class User(BaseModel): id: int username: str email: str age: int interests: list[str] def extract_json_robust(text: str) - str: 第四层防御从文本中提取JSON字符串。 text text.strip() # 情况1已经是纯净JSON if text.startswith({) and text.endswith(}): return text # 情况2被包裹在Markdown代码块中 md_match re.search(r(?:json)?\s*(\{.*\})\s*, text, re.DOTALL) if md_match: return md_match.group(1).strip() # 情况3有前后文使用贪婪匹配找第一个最长的 {...} 结构 # 这个正则尝试匹配平衡的花括号对于简单JSON足够 json_match re.search(r(\{(?:[^{}]|(?R))*\}), text, re.DOTALL) if json_match: return json_match.group(1) # 情况4如果以上都不行尝试逐行清理 lines text.splitlines() json_lines [] for line in lines: line_stripped line.strip() if line_stripped and not line_stripped.startswith((好的, 这是, , 希望, 请问)): json_lines.append(line) potential_json .join(json_lines).strip() if potential_json.startswith({) and potential_json.endswith(}): return potential_json raise ValueError(f无法从文本中提取出有效的JSON结构。文本: {text[:200]}) def parse_and_validate(json_text: str) - User: 解析JSON字符串并用Pydantic进行验证。 确保数据类型和约束符合要求。 try: # 1. 提取 extracted extract_json_robust(json_text) logger.debug(f提取后的JSON字符串: {extracted}) # 2. 解析 data_dict json.loads(extracted) # 3. 验证 user User(**data_dict) return user except json.JSONDecodeError as e: logger.error(fJSON解析失败: {e}。原始文本: {json_text[:200]}) raise except ValidationError as e: logger.error(f数据验证失败: {e}) raise except ValueError as e: logger.error(fJSON提取失败: {e}) raise6.6 主程序 (main.py)from llm_client import LLMClient from parser import parse_and_validate import logging logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) def main(): 主函数演示完整流程 client LLMClient() # 模拟多个不同的用户请求 test_prompts [ 生成一个ID为500的用户喜欢音乐和旅行。, 请创建一个新用户年龄30岁兴趣是编程和篮球。, 我需要一个测试用户数据ID随便邮箱用testtest.com。, ] for i, prompt in enumerate(test_prompts, 1): logger.info(f\n{*50}) logger.info(f测试用例 {i}: {prompt}) logger.info(f{*50}) try: # 步骤1 2 3: 通过LLM客户端获取原始响应已应用前三层防御 raw_response client.generate_user_json(prompt) logger.info(f1. LLM原始响应:\n{raw_response}) # 步骤4: 使用健壮解析器进行后处理与验证 user_obj parse_and_validate(raw_response) logger.info(f2. 解析并验证成功) logger.info(f 用户ID: {user_obj.id}) logger.info(f 用户名: {user_obj.username}) logger.info(f 邮箱: {user_obj.email}) logger.info(f 年龄: {user_obj.age}) logger.info(f 兴趣: {user_obj.interests}) # 可以在这里将 user_obj 存入数据库或进行下一步处理 # save_to_database(user_obj) except Exception as e: logger.error(f处理失败: {e}) # 在实际应用中这里应该有更完善的错误处理如重试、降级等 if __name__ __main__: main()6.7 运行与输出运行python main.py你将会看到类似以下的输出即使 LLM 的原始回复格式不一最终都能被正确解析和验证INFO:root: 测试用例 1: 生成一个ID为500的用户喜欢音乐和旅行。 INFO:root:LLM原始返回: {id: 500, username: music_traveler_500, email: user500example.net, age: 32, interests: [音乐, 旅行]} INFO:root:1. LLM原始响应: {id: 500, username: music_traveler_500, email: user500example.net, age: 32, interests: [音乐, 旅行]} INFO:root:2. 解析并验证成功 用户ID: 500 用户名: music_traveler_500 邮箱: user500example.net 年龄: 32 兴趣: [音乐, 旅行]这个案例展示了四层防御如何协同工作提示词和 Few-shot 让模型输出更规范生成参数约束其行为最后的解析器作为终极保障确保任何“意外”都能被妥善处理。7. 常见问题与排查清单在实际集成中你可能会遇到以下问题7.1 模型仍然输出非 JSON 内容检查系统提示词是否足够强硬和明确尝试使用“必须”、“仅输出”、“禁止”等词汇。检查 Few-shot 示例示例是否足够典型输出是否绝对纯净增加示例数量3-5个可能效果更好。降低 temperature尝试将temperature设置为 0.1 或 0。使用支持response_format的模型优先选择如gpt-3.5-turbo-1106、gpt-4-turbo-preview等支持 JSON 模式的模型版本。7.2 JSON 解析器报错Unexpected token / Unterminated string启用后处理提取确保你已经实现了类似extract_json_robust的函数而不是直接解析原始响应。检查编码和特殊字符模型的输出可能包含不可见的 Unicode 字符如零宽空格\u200b。在解析前可以使用text.replace(\u200b, )进行清理。验证 JSON 格式将出错的字符串粘贴到在线 JSON 校验器如 jsonlint.com中查看具体错误位置。7.3 提取出了 JSON但字段类型不对强化 Schema 描述在系统提示词中明确写出字段类型例如age: {type: integer}。使用 Pydantic 等验证库就像我们实战案例中所做的那样在解析后立即进行数据验证和类型转换将不符合预期的数据在进入业务逻辑前拦截掉。在 Few-shot 中提供类型示范在示例中明确展示数字不加引号字符串加引号。7.4 性能与延迟考虑正则表达式复杂度用于提取 JSON 的正则表达式在极端嵌套情况下可能性能不佳或出错。对于生产环境如果模型输出非常不可控可以考虑更简单的策略先查找第一个{和最后一个}的位置然后截取子串。备用方案如果连续多次解析失败可以触发一个“降级”流程例如使用一个预定义的模板 JSON或者向用户返回一个清晰的错误信息而不是让整个服务崩溃。8. 最佳实践与工程建议8.1 提示词设计原则角色扮演始终从系统提示词开始给模型一个明确的、功能性的角色。指令清晰使用祈使句、编号列表来让指令结构化。格式示范在提示词中直接写出你期望的输出格式样板。负面约束明确告诉模型“不要”做什么有时比告诉它“要”做什么更有效。8.2 代码健壮性防御式编程永远不要相信外部系统包括 LLM的输出。robust_json_parse这样的函数应该是处理 LLM 响应的标准流程。集中处理将所有的 LLM 响应解析逻辑封装在一个统一的模块或类中避免在业务代码中散落着各种try...except json.JSONDecodeError。详尽日志在解析的每个关键步骤收到原始响应、提取后、解析后、验证后都记录日志。当出错时这些日志是排查的黄金信息。8.3 可观测性与监控定义成功/失败指标监控 JSON 解析的成功率。如果成功率低于某个阈值如 95%就需要检查是提示词问题、模型问题还是解析逻辑问题。记录原始响应在非生产环境或抽样记录下 LLM 的原始响应。定期审查这些响应能帮助你发现模型新的“捣乱”模式从而更新你的提示词或解析策略。8.4 结合更高级的技术Function Calling / Tool Use如果使用的 LLM API 支持函数调用如 OpenAI 的tools参数这将是解决此问题的最优雅方案。你可以定义一个“输出用户信息”的函数让模型以结构化方式调用该函数API 会直接返回结构化的参数完全绕过文本生成的不确定性。输出解析器Output Parsers在 LangChain、LlamaIndex 等 LLM 应用框架中提供了PydanticOutputParser等工具它们内部实现了与我们所述类似的提示词构造和后处理逻辑可以直接使用。通过实施以上四层防御策略——精心设计的提示词、引导性的 Few-shot 示例、约束性的 API 参数以及健壮的后处理解析——你可以极大程度地将 LLM 输出 JSON 的解析问题从一个令人头疼的“玄学”故障转变为一个可控的、可预测的工程流程。这套组合拳不仅能用于 JSON稍加调整也可应用于要求模型输出 CSV、XML 或特定格式文本的场景。

相关新闻

XHTTP 和 HTTP 到底有什么区别?从协议原理到 VLESS + XHTTP + REALITY 一次讲透

XHTTP 和 HTTP 到底有什么区别?从协议原理到 VLESS + XHTTP + REALITY 一次讲透

一、先给结论:HTTP 和 XHTTP 不是一个层级把整个链路拆开,会清楚很多。 普通 Web 访问通常可以抽象为: Browser / App↓ HTTP/1.1 / HTTP/2 / HTTP/3↓ TLS↓ TCP / QUIC↓ IP而 Xray 中常见的: VLESS XHTTP REALITY更准确的分层…

2026/8/12 16:44:10 阅读更多 →
企业媒体发稿怎么做好AI收录沉淀?传播易智能投放解决方案

企业媒体发稿怎么做好AI收录沉淀?传播易智能投放解决方案

进入2026年,企业新闻发稿的行业核心痛点已经完成迭代。当下品牌传播的核心难题,早已不是找不到发稿渠道、无法完成稿件发布,而是普遍面临稿件投放去向不明、受众触达模糊、搜索收录留存不稳定、传播效果无法核验溯源等一系列行业顽疾。传统中…

2026/8/12 16:42:43 阅读更多 →
9款必备MCP Server配置指南:解锁Cursor AI私有数据访问与效率革命

9款必备MCP Server配置指南:解锁Cursor AI私有数据访问与效率革命

1. 项目概述:为什么MCP Server是提升Cursor效率的“核武器”?如果你和我一样,日常重度依赖Cursor这款AI编程工具,那你肯定经历过这样的时刻:写代码时,想让它帮你分析一下某个私有Git仓库的提交历史&#xf…

2026/8/12 16:42:43 阅读更多 →

最新新闻

拒绝模板化套路!深度解析龙潭古镇网站建设如何讲好千年故事并实现本地流量变现

拒绝模板化套路!深度解析龙潭古镇网站建设如何讲好千年故事并实现本地流量变现

做网站这行干了十几年,我见过太多让人叹气的项目。尤其是当我们聊到像龙潭古镇这样的文化IP时,很多甲方或者项目负责人脑子里蹦出来的第一个念头往往是:“赶紧弄个好看的页面,把照片放上去,能搜到就行。”这种想法太危险了,也太廉价了。龙潭古镇,这座有着深厚历史底蕴的…

2026/8/14 4:19:04 阅读更多 →
LeetCode刷题 day38

LeetCode刷题 day38

目录1.打家劫舍 III2.扁平化嵌套列表迭代器3.整数拆分1.打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这…

2026/8/14 4:19:04 阅读更多 →
唐朔飞计算机组成原理核心难点解析:Cache、CPU与总线系统

唐朔飞计算机组成原理核心难点解析:Cache、CPU与总线系统

1. 项目概述:为什么我们需要一份“唐版”计组总结?如果你正在学习计算机组成原理,尤其是手头捧着唐朔飞老师那本经典的《计算机组成原理(第3版)》,那你大概率正经历着和我当年一样的“甜蜜烦恼”。这本书内…

2026/8/14 4:19:04 阅读更多 →
GetQzonehistory:QQ空间历史说说备份工具完整指南,把青春记忆轻松搬进本地

GetQzonehistory:QQ空间历史说说备份工具完整指南,把青春记忆轻松搬进本地

GetQzonehistory:QQ空间历史说说备份工具完整指南,把青春记忆轻松搬进本地 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想把QQ空间的历史说说完整备份到本地&…

2026/8/14 4:19:04 阅读更多 →
探索银川市建设局网站如何助力城市腾飞与民生改善

探索银川市建设局网站如何助力城市腾飞与民生改善

在这座被黄沙与黄河共同雕琢的塞上明珠里,日子总是过得慢条斯理却又充满生机。作为一名在这个城市扎根多年的老银川人,我时常喜欢骑着那辆斑驳的自行车,沿着南熏大道缓缓骑行。清晨的空气中弥漫着羊杂碎汤的香气,傍晚的贺兰山轮廓在夕阳下显得格外温柔。这里的一切变化,都…

2026/8/14 4:19:04 阅读更多 →
德阳中恒网站建设怎么做才能既省钱又专业?揭秘企业官网升级的五大关键步骤

德阳中恒网站建设怎么做才能既省钱又专业?揭秘企业官网升级的五大关键步骤

在这个数字化浪潮席卷全球的今天,如果你还觉得企业官网只是一个放几张图片、挂几个联系方式的“电子名片”,那恐怕真的要落后时代了。对于德阳地区的中小企业主来说,尤其是那些正在考虑或已经开始着手德阳中恒网站建设的老板们,大家心中最纠结的问题往往不是“要不要做”,…

2026/8/14 4:18:03 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/13 10:41:49 阅读更多 →
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/13 10:41:49 阅读更多 →