ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

用提示词工程打造AI导师:teach skill教学闭环实操指南

2026/8/26 13:27:14 拓冰建站 浏览量
用提示词工程打造AI导师:teach skill教学闭环实操指南 这次我们来看一个非常实操的 AI 应用方向把 ChatGPT、Claude 这类大模型变成一个有教学节奏、会追问、会检查理解程度的“真老师”。标题里出现的 Matt Pocock 实战教程核心就落在teach skill这个概念上。简单说它不是某个需要下载的软件而是一套可以复用的提示词工程思路讲清楚 AI 怎么从“回答问题”升级为“完成教学闭环”。这个案例对两类人最有价值一是做 AI 应用开发的工程师想给自己的产品加一个“AI 导师”模块二是知识付费、在线教育从业者想用大模型做个性化辅导工具。文章会从 teach skill 的设计原理讲起给出系统提示词模板、课程化流程、Python API 接入示例、效果评估方法最后是排错清单和合规边界。先说结论teach skill 不是一个模型而是一种“教学角色工程化”的提示词设计方法。你不需要高配显卡不需要本地部署大模型只需要一个能调用的大模型 API加上一套设计良好的系统提示词和教学流程就能把通用模型改造成一门课的助教。1. teach skill 核心能力速览能力项说明项目性质提示词工程方法/教学技能编排非独立模型核心目标让 AI 按教师节奏讲解、追问、评估而非一次性给答案实现门槛需要一个 LLM API 或本地模型无特殊硬件要求主要功能课程拆解、渐进讲解、苏格拉底式提问、理解度测试、反馈纠错启动方式通过系统提示词注入或封装成函数/ API 服务是否支持 API支持任何兼容 OpenAI 格式的大模型接口都可接入是否支持批量任务支持可对多学员、多知识点并发生成教学对话适合场景编程教学、语言学习、考试辅导、企业内训、AI 助教产品典型输出分步讲解文本、追问问题、随堂测验、学习评估报告需要注意这个能力速览基于 teach skill 的方法论特征整理不同模型对提示词的遵循程度有差异实际效果需要在自己选择的模型上验证。2. 适用场景与使用边界2.1 适合谁来用AI 应用开发者想把“讲题、辅导、陪练”做成产品能力teach skill 提供了一套比“直接让 AI 回答”更稳定的交互框架。在线教育从业者需要自动生成课程讲解、习题解析、个性化答疑可以用 teach skill 控制 AI 的说话方式。个人学习者想用 AI 学编程、学英语、学某个领域知识把 teach skill 写进自定义指令就能获得更有节奏的学习体验。企业内部培训团队把产品手册、技术文档喂给模型用 teach skill 做成新人问答陪练。2.2 不适合什么场景需要绝对权威、高精度知识的领域如医疗诊断、法律判决AI 教学可能产生“自信的错误”不能直接作为唯一知识来源。需要真实教学资历和情感陪伴的场景AI 只能模拟教学动作不代表真实教育者。需要完全离线、隐私要求极高的场景如果使用云端 API需要注意数据脱敏。2.3 使用边界与合规提醒涉及企业内部资料、未公开课程内容、版权教材时要确认是否有权把这些内容输入给 AI 服务并关注服务商的数据使用政策。教学对话中如果收集学习者个人信息需要遵守个人信息保护相关要求。生成的教学内容和测验题要复核避免错误内容被当作权威结论传播。不要用 AI 教学功能绕过付费课程、盗版教材的版权限制。3. 理解 teach skill 的核心设计思路很多人用 AI 学习时遇到的问题是问一个知识点AI 直接给出完整答案没有讲解过程没有拆解也没有确认你是否真的懂了。teach skill 想解决的就是这个“教育缺位”问题。它的核心设计可以拆成五个阶段第一阶段目标对齐。AI 先确认学习者当前水平、学习目标和可用时间不急着灌内容。第二阶段分块讲解。把大知识点拆成若干小块每次只讲一小块讲完做一次确认。第三阶段主动提问。不是直接给答案而是用提问引导学习者回忆和思考也就是苏格拉底式教学。第四阶段理解度检查。通过小测验、示例改写、让学习者用自己的话复述等方式判断是否真的掌握。第五阶段动态调整。如果检测到理解不到位就降级到更基础的讲解如果掌握得好就加速进入下一个知识点。这五个阶段不是简单的角色扮演而是对教学流程的结构化约束。相比之下普通提示词只说“你是一个老师”模型只会模仿教师的语气不会主动完成教学闭环。teach skill 的关键在于给模型提供了可执行的教学步骤和判断规则。4. 基础实现把“老师角色”写进系统提示词先给一个最基础的 teach skill 系统提示词模板。这段提示词可以直接用在 ChatGPT 自定义指令、Claude System Prompt或者本地模型的 system 字段里。你是一位严格但有耐心的导师。你的目标不是直接给出答案而是帮助学习者真正理解知识。 教学规则 1. 开始前先询问学习者的当前水平和学习目标必要时给出三个选项让其选择。 2. 把知识点拆成不超过 5 个步骤的小块每次只讲解一个步骤。 3. 每讲完一个步骤用一道选择题或一个开放式问题确认理解。 4. 优先使用提问引导学习者自己得出结论不要总是直接给完整答案。 5. 如果学习者回答正确简要肯定并进入下一块如果回答错误指出具体错误点换一种方式重新讲解。 6. 在完成全部步骤后给出一个综合练习要求学习者独立完成。 7. 结束时输出一份学习小结列出已掌握内容和建议复习内容。 禁止事项 - 禁止一次性输出超过 300 字的连续讲解。 - 禁止在没有确认理解的情况下进入下一个知识点。 - 禁止直接替学习者完成练习。这个模板可以适配不同的教学场景。比如学编程可以在“练习”部分要求学习者写代码并检查学英语可以在“综合练习”部分设计情景对话。使用提示词时有一个值得注意的点大模型对长提示词的遵循程度会随对话轮次衰减。如果对话超过二三十轮建议定期提醒模型“请回到教学规则”或者在关键节点重新注入系统提示词。5. 进阶实现课程化教学流程基础提示词解决的是“单次教学对话”的问题。要真正做成一门课还需要把 teach skill 变成一套有状态的课程流程。这里给出一种课程化设计的参考结构。5.1 课程拆解与学习路径在开始教学之前先让 AI 输出一份课程大纲按“章节 - 知识点 - 练习 - 测验”组织。可以用 JSON 格式保存方便后续做进度管理。{ course: { title: Python 基础入门, level: beginner, modules: [ { module_id: 1, name: 变量与数据类型, objective: 理解变量赋值和基本数据类型, knowledge_points: [ 变量命名规则, int / float / string / bool, 类型转换 ], exercise: 写一个程序把字符串数字转换成整数并输出, quiz: [ 下列哪个是合法的变量名, type(123) 返回什么类型 ] } ] } }5.2 轮次控制与进度追踪一种简单可靠的做法是让 AI 在每个教学步骤结束时输出一个结构化的“状态标记”包含当前课程 ID、当前知识点、完成度、下一步动作。这样前端或调用方就能根据状态决定下一步。请在每次教学步骤末尾输出如下状态标记 [STATE] step: 2 knowledge_point: 变量命名规则 complete: false next_action: 提问确认 [/STATE]这个标记让 AI 的“教学进度”变成了可解析的文本协议。用正则或者字符串提取就能把状态存下来不需要复杂的 Agent 框架。5.3 从“单轮教学”到“多知识点课程”多知识点课程的关键是记忆管理。大模型的上下文窗口有限课程越长越容易遗忘前面的知识点。工程上可以这样做每次只向模型注入当前知识点的教学材料。用一份独立的“学习进度摘要”记录已学内容在每轮开始时拼接到系统提示词后面。学习者提问旧知识点时先让模型判断该知识点是否已学再决定是复习还是进入新模式。这个思路本质上就是把大模型当作“无状态的教学引擎”用外部存储管理课程状态。缺点是工程复杂度上升优点是不依赖模型自身的长上下文能力稳定性更好。6. 实战接入把 teach skill 封装成可调用的教学服务要真正把 teach skill 用在产品里光靠网页对话框是不够的。下面给出一套基于 Python 的 API 调用示例。这里使用 OpenAI 兼容接口规范实际接入时需要替换为你的模型服务地址、API Key 和模型名称。import requests import json # 配置模型服务地址实际使用时替换为你的服务商地址 API_URL https://api.example.com/v1/chat/completions API_KEY your-api-key MODEL your-model-name SYSTEM_PROMPT 你是一位严格但有耐心的导师。你的目标不是直接给出答案 而是帮助学习者真正理解知识。 教学规则 1. 开始前先询问学习者的当前水平和学习目标。 2. 把知识点拆成不超过 5 个步骤的小块每次只讲解一个步骤。 3. 每讲完一个步骤用一道选择题或开放式问题确认理解。 4. 优先使用提问引导学习者自己得出结论。 5. 如果回答正确简要肯定并进入下一块如果回答错误指出具体错误点。 6. 所有回答控制在 300 字以内。 def get_teaching_reply(user_input, historyNone): 把用户输入和历史对话发给模型返回老师的回答 messages [{role: system, content: SYSTEM_PROMPT}] if history: messages.extend(history) messages.append({role: user, content: user_input}) payload { model: MODEL, messages: messages, temperature: 0.7, max_tokens: 800 } headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } try: response requests.post(API_URL, jsonpayload, headersheaders, timeout60) response.raise_for_status() data response.json() return data[choices][0][message][content] except Exception as e: return f调用失败{e} if __name__ __main__: # 单次调用示例 reply get_teaching_reply(我想学 Python但完全没基础从哪里开始) print(reply)这段代码是接口调用的最小骨架。实际项目中你需要把API_URL、API_KEY、MODEL替换成自己使用的模型服务。如果要在多个学习者的场景下使用还要给每个学习者维护独立的history列表避免对话串人。6.1 批量任务多学习者异步教学如果要在产品中同时服务大量学习者建议把“生成教学回复”改成异步任务。核心流程是接收请求 - 写入任务队列 - 异步调用模型 API - 回调或轮询结果。import time from concurrent.futures import ThreadPoolExecutor # 简单线程池版批量调用生产环境建议用消息队列 executor ThreadPoolExecutor(max_workers10) def process_batch_learners(learners): learners 是包含用户输入和历史记录的字典列表 futures [] for learner in learners: future executor.submit( get_teaching_reply, learner[input], learner.get(history, []) ) futures.append((learner[learner_id], future)) results [] for learner_id, future in futures: try: reply future.result(timeout90) results.append({learner_id: learner_id, reply: reply}) except Exception as e: results.append({learner_id: learner_id, error: str(e)}) return results批量模式下要考虑限流。大模型 API 服务商通常有每分钟请求数RPM限制直接开高并发容易触发限流建议在调用层做令牌桶或者固定间隔限速失败请求做指数退避重试。6.2 把教学服务暴露成 HTTP 接口如果要在前端页面里调用可以用 FastAPI 包一层 HTTP 服务。这里给出一个最简示例# 需要先安装 fastapi 和 uvicorn # pip install fastapi uvicorn from fastapi import FastAPI, Request from pydantic import BaseModel from typing import Optional, List import uvicorn app FastAPI() class TeachingRequest(BaseModel): learner_input: str history: Optional[List[dict]] None class TeachingResponse(BaseModel): reply: str app.post(/teach, response_modelTeachingResponse) async def teach(req: TeachingRequest): reply get_teaching_reply(req.learner_input, req.history) return TeachingResponse(replyreply) if __name__ __main__: uvicorn.run(app, host0.0.0.0, port8000)启动服务后用 curl 验证接口curl -X POST http://127.0.0.1:8000/teach \ -H Content-Type: application/json \ -d {learner_input: 请讲解变量这个概念, history: []}需要说明的是如果服务绑定在0.0.0.0局域网内其他机器也能访问。生产环境需要加上鉴权避免接口被滥用。同时建议在反向代理层配置 HTTPS保证传输安全。7. 效果验证怎么判断 AI 教得好不好teach skill 和普通对话式 AI 的区别需要从教学效果维度来验证而不是只看“回答是否通顺”。建议用下面这套测试用例。7.1 教学行为检查清单给 AI 提出一个知识点然后逐项检查它是否表现出教学行为检查项预期表现通过标准目标对齐先问学习者水平或目标出现询问句式而不是直接开讲分块讲解输出长度控制得当单次讲解不超过设定字数理解确认讲完一个知识点后提问出现“你能说一下”“下面哪个正确”等错误纠正指出具体错误而非简单否定回答中包含错误点说明引导式提问优先让学习者思考出现“你觉得呢”“为什么”学习小结结束时输出总结有要点回顾或复习建议7.2 模拟对话测试用下面这组测试脚本观察同一知识点在不同设置下的差异# 直接提问不注入 teach skill curl -X POST https://api.example.com/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $API_KEY \ -d { model: your-model-name, messages: [{role: user, content: 讲一下闭包是什么}] } # 注入 teach skill在 system 中带入教学规则 curl -X POST https://api.example.com/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $API_KEY \ -d { model: your-model-name, messages: [ {role: system, content: 你是一位严格但有耐心的导师先确认水平再分块讲解每讲完一块要提问确认。}, {role: user, content: 讲一下闭包是什么} ] }对比两次输出就能直观看出没有注入时AI 通常会一次性输出完整定义注入后AI 会更倾向于先询问“你学过函数吗”然后逐层展开。7.3 稳定性评估教学类任务的稳定性比单次回答质量更重要。建议准备 10 个知识点的测试集每个知识点跑 5 次统计每次都执行“先确认水平”的比例。单次回答超过 300 字的比例。是否在回答中加入提问。是否有明显的事实错误。从工程角度看只要“确认水平”这个动作在 5 次中出现 4 次以上就可以认为提示词约束有效。如果稳定在 2 次以下说明提示词对当前模型的约束力太弱需要调整措辞或减少规则条数。8. 常见问题与排查方法问题现象可能原因排查方式解决方案AI 不询问水平直接开讲提示词约束力弱或规则顺序靠后检查 system prompt 是否被截断把“先询问水平”放到规则第一条并在结尾再次强调单次输出过长max_tokens 设置过大查看实际返回 token 数降低 max_tokens在提示词中写明字数上限教学节奏混乱跳知识点上下文过长导致模型遗忘规则检查对话轮次和上下文长度定期重新注入系统提示词使用状态标记控制步骤提问环节变成直接给答案模型理解偏差用独立测试对话验证增加“禁止直接给出完整答案”的负向指令接口调用超时模型服务响应慢或网络问题查看日志和响应时间增加重试机制设置合理的 timeout 值批量任务触发限流并发请求超过服务商限制查看 429 状态码增加限速、退避重试降低并发数多个学习者历史记录串线会话状态未隔离检查 history 参数是否正确按 learner_id 维护独立历史不共用列表学习者回答错误未被识别模型判断能力不足用明显错误答案做测试在提示词中增加“从学习者回答中找出错误点”的指令生成内容包含错误知识点模型幻觉对关键结论交叉验证设置人工审核流程重要课程内容标注“建议复核”接口被外部滥用缺少鉴权或绑定地址过宽查看访问日志来源 IP增加 API Key 鉴权限制内网访问使用 HTTPS9. 最佳实践与合规提醒9.1 工程化建议先小参数测试再放大。第一次接入 teach skill 时先用 2 到 3 个知识点、少量测试用户跑通流程确认教学行为和接口稳定性再扩展全量课程内容。保留一套最小可运行配置。把系统提示词、模型名称、温度参数、max_tokens、限流策略存成一份配置文件方便在不同课程间复用和做增量调整。# teach_skill_config.yaml 示例 model: name: your-model-name temperature: 0.7 max_tokens: 800 teaching: max_step_length: 300 require_goal_check: true require_question_after_step: true require_summary_at_end: true api: timeout_seconds: 60 max_retries: 3 retry_backoff: 2 batch: max_concurrency: 10 rate_limit_per_minute: 60目录化管理课程素材。课程大纲、知识讲解素材、练习题、测验题库、学习记录分开存储避免把所有内容塞进提示词导致上下文混乱。批量任务必须有日志和重试。记录每轮调用的模型、时间、token 消耗、返回内容长度、状态标记。失败时按指数退避重试连续失败超过 3 次要告警。接口服务限制访问范围。教学接口建议部署在内网或通过网关控制访问不要直接暴露公网。如果必须面向公网至少做 API Key 鉴权和 IP 白名单。9.2 内容与合规提醒课程素材来源要清晰。如果使用了他人课件、教材、视频内容需确认已获授权不要直接输入给 AI 二次生成后对外发布。涉及未成年人学习场景要设置内容安全过滤避免模型输出不适宜内容。AI 教学生成的测验题、答案解析、知识点总结发布前要做人工复核。尤其是考试辅导、职业认证类内容错误答案可能造成实际影响。使用云端大模型 API 时注意不要上传未脱敏的企业内部数据和个人隐私信息确认服务商的数据保存政策。不要利用 AI 教学功能批量生成并销售疑似侵权课程内容避免版权风险。10. 总结与下一步teach skill 这个方向最值得尝试的点不是让 AI 更“像人”而是让 AI 的教学行为变得可预期、可控制、可评估。通过系统提示词注入教学目标、分块讲解规则、理解度确认机制和状态标记一块通用大模型就能变成一套可以接入产品的基础教学引擎。如果你现在想动手验证建议按这个顺序来先复制第 4 节的系统提示词在任意大模型对话框中测试一个熟悉的知识点观察它是否主动询问水平、是否分块讲解、是否在结尾做小结然后按第 6 节的 Python 示例搭一个最小接口把教学对话做成可调用的服务最后加上状态标记和批量调用就能支撑一个简单的 AI 助教功能。最容易踩的坑有三个一是提示词规则太多导致模型漏执行建议控制在五条以内二是对话轮次变长后模型遗忘教学规则需要定期重注入或使用状态标记三是接口层没有限流批量调用时容易触发服务商限制。往后的扩展方向也比较明确在 teach skill 基础上叠加专用知识库RAG让 AI 用你自己整理的资料讲课加上语音输入输出变成口语陪练加上学习进度数据库让 AI 根据每个学习者的历史记录动态调整难度。这套方法的成本和门槛都不高值得先试起来。