LLM驱动教育游戏开发:动态内容生成与智能体架构实战
在教育技术领域大型语言模型LLM与教育游戏的结合正在开辟新的可能性。这种融合不仅仅是简单地将问答功能嵌入游戏而是通过LLM的动态内容生成、个性化交互和情境理解能力创造出能够适应学生水平、提供即时反馈并持续进化的学习体验。对于教育开发者、产品经理以及技术决策者而言理解如何将LLM有效地整合到教育游戏中是把握未来教育科技趋势的关键。本文将围绕LLM在教育游戏中的实际应用展开从核心概念、技术选型、架构设计到具体实现、内容生成策略、智能体Agent交互以及生产环境中的挑战提供一个全面的技术实践指南。我们将通过一个模拟的“历史冒险”游戏案例展示如何利用LLM生成动态剧情、角色对话和个性化题目并讨论RAG检索增强生成、智能体架构等关键技术如何提升教育内容的准确性和交互深度。1. 理解LLM在教育游戏中的核心价值与工作机制1.1 为什么LLM能改变教育游戏的设计范式传统的教育游戏通常依赖预置的脚本和固定的题目库。虽然能够提供一定的互动性但其内容往往是静态的难以适应不同学生的学习进度和知识盲点。LLM的引入从根本上改变了这一模式。它能够根据学生的实时输入动态生成符合教学目标的叙事内容、对话和挑战问题。例如在一个历史主题的游戏中LLM可以根据学生当前的选择生成不同的历史人物对话甚至改变剧情的走向使每次游戏体验都是独特的。更重要的是LLM具备强大的语言理解和生成能力能够理解学生用自然语言提出的问题并给出解释、提示或新的学习线索。这种能力使得教育游戏从“被动答题”转向“主动探索”更能激发学生的学习兴趣和批判性思维。1.2 LLM在教育游戏中的关键技术角色在技术架构上LLM在教育游戏中主要扮演三个角色动态内容生成器负责生成游戏内的叙事文本、角色对话、题目描述和选项。这要求LLM不仅要有良好的语言流畅性还要能严格遵守预设的知识范围和教学目标避免生成错误或不当内容。个性化学习引擎通过分析学生的对话历史、答题记录和游戏行为LLM可以推断学生的知识掌握程度和学习风格从而调整后续生成内容的难度和侧重点实现真正的个性化学习路径。交互式智能体LLM可以驱动游戏中的非玩家角色NPC使其能够与学生进行有意义的、上下文相关的对话。这些NPC可以扮演导师、同伴或对手通过对话引导学生思考提供帮助或提出挑战。1.3 核心挑战准确性、可控性与成本尽管前景广阔但将LLM用于教育游戏面临几个核心挑战。首先是事实准确性LLM可能产生“幻觉”Hallucination生成与史实或科学事实不符的内容。其次是可控性如何确保LLM生成的内容始终符合游戏设定的教育目标和价值观。最后是延迟与成本LLM API调用带来的延迟会影响游戏体验而高频调用也会产生可观的计算成本。解决这些挑战需要综合运用提示工程Prompt Engineering、RAG和模型微调Fine-tuning等技术后续章节将详细展开。2. 构建LLM教育游戏的技术栈与环境准备2.1 LLM服务选型云端API与本地部署的权衡选择LLM服务是第一步主要考虑因素包括模型能力、成本、延迟和隐私。方案代表服务优点缺点适用场景云端APIOpenAI GPT-4, Anthropic Claude, 文心一言通义千问开箱即用能力强大无需维护有网络延迟和API调用成本数据隐私需关注快速原型验证对生成质量要求高的正式产品本地部署Llama 2/3, ChatGLM, Qwen数据完全私有无持续调用费用需要GPU资源模型能力可能稍弱运维复杂对数据隐私要求极高或希望完全控制推理流程的项目对于大多数教育游戏项目初期建议从云端API开始以快速验证核心玩法。生产环境如果对延迟和隐私有严格要求再考虑混合方案或本地部署。2.2 游戏开发引擎与LLM的集成教育游戏本身通常使用成熟的游戏引擎开发如Unity、Unreal Engine或Web端的Phaser.js、Three.js。集成LLM的核心是在游戏逻辑中发起HTTP请求调用LLM API。以Unity使用C#调用OpenAI API为例需要准备以下环境Unity环境2020.3 LTS或更高版本。网络请求库Unity自带的UnityWebRequest或更易用的第三方库如RestClient。JSON序列化库Newtonsoft.Json需通过Unity Package Manager导入。API密钥从LLM服务商处获取。2.3 项目结构与核心依赖一个典型的LLM教育游戏项目可能包含以下目录结构HistoryAdventureGame/ ├── Assets/ │ ├── Scripts/ │ │ ├── LLM/ │ │ │ ├── LLMClient.cs // 封装LLM API调用 │ │ │ ├── PromptBuilder.cs // 构建系统提示词 │ │ │ └── ResponseParser.cs // 解析LLM返回的JSON │ │ ├── GameManager.cs // 游戏总控协调LLM调用与游戏逻辑 │ │ ├── DialogueSystem.cs // 处理角色对话的显示与交互 │ │ └── QuestSystem.cs // 管理任务和题目生成 │ ├── Scenes/ // 游戏场景 │ └── Resources/ │ └── KnowledgeBase/ // 存放用于RAG的文本资料.txt ├── Packages/ // Unity包管理 └── ProjectSettings/关键依赖的版本需要对齐例如Newtonsoft.Json for Unity的版本应选择与当前Unity版本兼容的稳定版。3. 实现动态内容生成从提示词工程到RAG3.1 设计系统提示词System Prompt以约束生成内容系统提示词是控制LLM行为的最重要手段。对于教育游戏提示词必须明确角色、任务、规则和禁忌。以下是一个用于生成历史对话的系统提示词示例你是一位严谨的历史学家正在协助开发一款面向中学生的历史教育游戏。你的任务是生成一段与[特定历史时期]相关的角色对话。 **规则** 1. 对话必须基于可靠史实不允许虚构关键历史事件和人物关系。 2. 语言风格要符合该历史时期的背景但需让现代中学生能轻松理解。 3. 对话应自然嵌入一个历史知识点例如某个重要政策、科技发明或文化现象。 4. 对话长度在100-200字之间。 5. 绝对避免任何现代政治、暴力、色情或宗教敏感内容。 **输出格式要求严格的JSON** { dialogue: [{character: 角色A姓名, text: 角色A的对话内容}, ...], embedded_knowledge: 所嵌入的知识点描述, suggested_question: 基于此对话可向玩家提出的一个问题 }在代码中我们需要构建一个提示词模板并动态填充变量如[特定历史时期]。// PromptBuilder.cs public class PromptBuilder { private string systemPromptTemplate ...; // 上面的提示词内容 public string BuildHistoryDialoguePrompt(string historicalPeriod, string characterA, string characterB) { string prompt systemPromptTemplate .Replace([特定历史时期], historicalPeriod); // 也可以动态替换角色名 return prompt; } }3.2 集成RAG确保事实准确性为了解决LLM的“幻觉”问题尤其是在历史、科学等事实准确性要求高的领域必须引入RAG。其原理是从一个可信的知识库中检索相关信息并将其作为上下文提供给LLM从而“锚定”LLM的生成内容。实现一个简单的RAG流程知识库准备将教科书、权威百科文章等资料处理成纯文本片段存入向量数据库如ChromaDB或甚至先简单存储为文本文件。检索当需要生成关于“罗马帝国军团”的内容时先在知识库中检索与“罗马军团”最相关的文本片段。增强提示将检索到的片段作为额外上下文插入到给LLM的用户提示中。// 伪代码示例 public class RAGService { public string RetrieveRelevantContext(string query) { // 1. 对query进行关键词提取或向量化 // 2. 在本地知识库如一个文本文件列表中进行简单相似度匹配 // 3. 返回最匹配的1-2段文本 return retrievedText; } public string BuildAugmentedPrompt(string userQuestion, string context) { return $基于以下背景信息\n{context}\n\n请回答{userQuestion}; } }在实际项目中可以使用专门的向量数据库如ChromaDB, Weaviate和嵌入模型如OpenAI的text-embedding-3来实现更精准的检索。3.3 处理LLM的API响应与解析LLM API通常返回JSON格式的数据。我们需要在游戏代码中稳健地处理这些响应。// LLMClient.cs using UnityEngine; using System.Collections; using Newtonsoft.Json; [System.Serializable] public class LLMDialogueResponse { public DialogueLine[] dialogue; public string embedded_knowledge; public string suggested_question; } [System.Serializable] public class DialogueLine { public string character; public string text; } public class LLMClient : MonoBehaviour { private string apiKey your-api-key; private string apiUrl https://api.openai.com/v1/chat/completions; public IEnumerator GenerateDialogue(string prompt, System.ActionLLMDialogueResponse onSuccess, System.Actionstring onError) { // 构建请求体 var requestBody new { model gpt-4, messages new[] { new { role user, content prompt } }, max_tokens 500, temperature 0.7 // 控制创造性教育游戏可适当调低如0.3以提高确定性 }; string jsonBody JsonConvert.SerializeObject(requestBody); using (var request new UnityWebRequest(apiUrl, POST)) { byte[] bodyRaw System.Text.Encoding.UTF8.GetBytes(jsonBody); request.uploadHandler new UploadHandlerRaw(bodyRaw); request.downloadHandler new DownloadHandlerBuffer(); request.SetRequestHeader(Content-Type, application/json); request.SetRequestHeader(Authorization, $Bearer {apiKey}); yield return request.SendWebRequest(); if (request.result UnityWebRequest.Result.Success) { var apiResponse JsonConvert.DeserializeObjectOpenAIResponse(request.downloadHandler.text); string content apiResponse.choices[0].message.content; // 尝试解析LLM返回的JSON内容 try { LLMDialogueResponse dialogueResponse JsonConvert.DeserializeObjectLLMDialogueResponse(content); onSuccess?.Invoke(dialogueResponse); } catch (System.Exception e) { onError?.Invoke($Failed to parse LLM response: {e.Message}); } } else { onError?.Invoke($API request failed: {request.error}); } } } }4. 构建交互式学习智能体LLM Agent4.1 智能体架构让NPC拥有“记忆”和“目标”一个简单的问答NPC和一个真正的学习智能体之间的关键区别在于状态管理。智能体需要记住与玩家的交互历史并有一个明确的目标例如“帮助玩家理解牛顿第三定律”。我们可以为每个NPC智能体设计一个简单的状态结构// DialogueAgent.cs public class DialogueAgent { public string AgentName { get; set; } public string RoleDescription { get; set; } // 例如一位耐心的科学导师 public ListDialogueExchange ConversationHistory { get; set; } public string CurrentTeachingGoal { get; set; } public DialogueAgent(string name, string role, string goal) { AgentName name; RoleDescription role; CurrentTeachingGoal goal; ConversationHistory new ListDialogueExchange(); } public void AddExchange(string playerInput, string agentResponse) { ConversationHistory.Add(new DialogueExchange(playerInput, agentResponse)); // 限制历史长度防止上下文过长 if (ConversationHistory.Count 10) { ConversationHistory.RemoveAt(0); } } } public struct DialogueExchange { public string PlayerInput; public string AgentResponse; public DialogueExchange(string input, string response) { PlayerInput input; AgentResponse response; } }4.2 驱动智能体对话每次玩家与智能体交互时我们将完整的对话历史、智能体角色和目标一起发送给LLM以生成上下文相关的回复。public class DialogueManager : MonoBehaviour { public IEnumerator GetAgentResponse(DialogueAgent agent, string playerMessage, System.Actionstring onResponse) { // 构建包含上下文的提示词 StringBuilder prompt new StringBuilder(); prompt.AppendLine($你扮演{agent.RoleDescription}你的教学目标是{agent.CurrentTeachingGoal}。); prompt.AppendLine(以下是当前的对话历史); foreach (var exchange in agent.ConversationHistory) { prompt.AppendLine($玩家{exchange.PlayerInput}); prompt.AppendLine($你{exchange.AgentResponse}); } prompt.AppendLine($玩家{playerMessage}); prompt.AppendLine(你); // 调用LLMClient生成回复 yield return StartCoroutine(llmClient.GenerateText(prompt.ToString(), (response) { agent.AddExchange(playerMessage, response); onResponse?.Invoke(response); }, (error) { Debug.LogError(error); onResponse?.Invoke(抱歉我暂时无法理解。我们能换个话题吗); })); } }这种架构使得NPC能够进行多轮连贯的对话并始终围绕教学目标展开。5. 生产环境考量性能、评估与安全5.1 优化性能与成本高频调用LLM API是成本和延迟的主要来源。以下策略至关重要缓存对相同的提示词或极其相似的提示词可通过向量相似度判断的生成结果进行缓存。例如将(prompt_hash, parameters)作为键存储生成的对话或题目。异步加载在游戏场景切换、播放过场动画时预加载下一个环节可能需要的LLM生成内容。限流与降级设置调用频率限制。当API不可用或响应过慢时游戏应能优雅降级使用预置的备用内容保证游戏流程不中断。提示词优化精简提示词减少不必要的max_tokens使用更高效的模型如gpt-3.5-turbo处理要求不高的任务。5.2 内容安全与评估机制在教育产品中内容安全是底线。必须建立多层防护提示词约束如前所述在系统提示词中明确禁止生成各类不安全、不准确的内容。后处理过滤对LLM生成的内容进行关键词、敏感词过滤。人工审核流程对于核心教学内容尤其是在项目初期建立人工审核环节将LLM生成的内容纳入审核池批准后再进入游戏。A/B测试与反馈收集上线后通过A/B测试比较不同版本内容的学习效果并收集学生和教师的反馈持续优化提示词和生成策略。5.3 监控与日志完善的监控是稳定运行的保障。需要记录LLM API调用的成功率、延迟。生成内容的长度、被过滤的比例。玩家与智能体交互的热点话题和常见问题。 这些日志有助于发现系统瓶颈、优化提示词和理解用户需求。6. 常见问题与排查路径在实际开发中会遇到各种典型问题。以下是一个快速排查指南。问题现象可能原因检查点与解决方案LLM生成内容偏离主题或包含错误系统提示词约束力不足知识库检索失效。1. 检查系统提示词是否清晰定义了角色和规则。2. 验证RAG检索到的上下文是否相关。3. 尝试降低temperature参数。API调用返回错误如429 401频率超限API密钥无效或配额不足。1. 检查代码中的API密钥是否正确。2. 查看服务商后台的用量和配额。3. 在代码中实现指数退避重试机制。游戏卡顿等待LLM响应时间过长网络延迟API服务响应慢同步调用阻塞主线程。1. 确保所有LLM调用都是异步的如使用协程。2. 添加超时控制。3. 考虑使用更轻量级的模型或在本地部署小模型处理简单任务。NPC对话上下文断裂忘记之前内容对话历史管理出错未正确传递给LLM。1. 调试检查每次请求的提示词确认历史对话是否被正确拼接。2. 检查对话历史列表的长度限制是否设置合理。生成的内容格式不符合预期JSON解析失败LLM没有严格遵守输出格式指令。1. 在提示词中强化对JSON格式的要求。2. 在代码中实现更健壮的解析逻辑例如使用正则表达式进行预处理。3. 考虑使用LLM的“JSON mode”如果API支持。对于更复杂的问题如智能体行为逻辑异常需要系统地检查智能体的状态机、目标更新逻辑以及它与LLM提示词构建的交互流程。添加详细的调试日志是定位这类问题的关键。LLM为教育游戏带来了前所未有的动态性和个性化潜力但其集成是一项复杂的工程需要仔细权衡技术选型、内容质量、用户体验和成本控制。从设计一个约束良好的系统提示词开始逐步引入RAG、智能体架构和性能优化策略是通往成功产品的务实路径。最终衡量一个LLM教育游戏是否成功的标准不在于它使用了多炫酷的模型而在于它是否真正提升了学生的学习效果和参与度。持续收集数据、迭代优化才能让技术真正服务于教育本身。

相关新闻

3个关键步骤:使用OpCore-Simplify快速配置黑苹果系统

3个关键步骤:使用OpCore-Simplify快速配置黑苹果系统

3个关键步骤:使用OpCore-Simplify快速配置黑苹果系统 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于想要在非苹果硬件上运行macOS的用…

2026/10/16 12:01:59 阅读更多 →
英雄联盟智能助手Seraphine:告别繁琐查询,开启数据驱动的游戏新时代

英雄联盟智能助手Seraphine:告别繁琐查询,开启数据驱动的游戏新时代

英雄联盟智能助手Seraphine:告别繁琐查询,开启数据驱动的游戏新时代 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟对局开始前,手忙脚乱地打开多个网页…

2026/10/15 17:47:33 阅读更多 →
【AI量化交易实战】第04讲:小晴(情报官)上岗——搭建本地数据管道与清洗流水线

【AI量化交易实战】第04讲:小晴(情报官)上岗——搭建本地数据管道与清洗流水线

开篇导语上一讲我们搭建了Python量化开发环境,并通过akshare完成了第一次"从数据到决策"的多因子选股实验。但这里有一个隐患你可能已经察觉了:每次运行策略都需要临时从网上抓数据——慢、不稳定、不可复现。真正能打仗的量化团队&#xff0c…

2026/10/16 21:25:00 阅读更多 →

最新新闻

diagram-design:构建可维护图表设计系统的核心方法论

diagram-design:构建可维护图表设计系统的核心方法论

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次看到 diagram-design 这个词,很多人会下意识觉得它只是“画图”的另一种说法。但真正在项目里被图表折磨过的人会明白,画图本身从来不是难点,难的是让图在三个月…

2026/10/19 6:03:37 阅读更多 →
artcraft框架:从创意到实物的完整工作流拆解

artcraft框架:从创意到实物的完整工作流拆解

1. 从“artcraft”这个名字说起:它到底想解决什么问题第一次看到“artcraft”这个标题,我脑子里蹦出来的第一反应是:这大概率不是一个单纯的绘画工具,也不是一个纯粹的手工教程合集。把“art”和“craft”拼在一起,本身…

2026/10/19 6:03:37 阅读更多 →
工业指针仪表识别系统:抗油污低光倾斜的Python全流程方案

工业指针仪表识别系统:抗油污低光倾斜的Python全流程方案

简介:本资源是一份面向工业智能化巡检场景的Python图像识别系统设计论文,适用于自动化、仪器仪表、计算机视觉方向的本科生、研究生及现场工程师,解决指针式模拟仪表人工读数效率低、无人巡检落地难的核心痛点。论文提出基于DeepLabV3语义分割…

2026/10/19 6:03:37 阅读更多 →
从防御规避到加密流量检测:AES-256-GCM下的安全运营实战

从防御规避到加密流量检测:AES-256-GCM下的安全运营实战

之前和一些同行聊“免杀”这个话题,大家的反应往往两极分化:有人觉得它神秘,有人觉得它就是恶意软件对抗杀毒的手段,没什么好聊的。我自己的看法其实不同——在安全运营和检测工程这个视角里,“免杀”并不是一个孤立的…

2026/10/19 6:03:37 阅读更多 →
昆仑通态触摸屏与台达温控器Modbus RTU联调:寄存器映射与报警批量配置

昆仑通态触摸屏与台达温控器Modbus RTU联调:寄存器映射与报警批量配置

1. 联调前必须捋清楚:接线、通信参数与485总线的坑1.1 最小系统怎么搭:从硬件接线开始做项目这些年,最怕的不是工艺逻辑复杂,而是上位机和仪表的“通信语言”对不上。前阵子接手一套加热设备改造,现场是25台台达DT330温…

2026/10/19 6:03:37 阅读更多 →
React 18并发渲染实战:自动批处理、startTransition与Suspense优化搜索筛选页

React 18并发渲染实战:自动批处理、startTransition与Suspense优化搜索筛选页

前段时间我接手一个搜索筛选页的重构,数据量不算夸张,两千多条记录、六七个筛选条件,但旧实现里每敲一个字,键盘都明显发沉。页面后来变流畅,靠的就是React 18的并发渲染能力,重点落在Suspense、Transition…

2026/10/19 6:02:37 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →