大模型应用开发入门:吴恩达课程提示工程、RAG与避坑指南
简介:面向希望快速上手大模型与人工智能应用开发的开发者,这是一份完整中文化吴恩达大模型系列课程并复现范例代码的入门教程,适合具备基础 Python 知识、希望系统学习 LLM 开发流程的技术人群。内容围绕提示工程、检索增强生成、函数调用等课程核心主题展开,以中文 Prompt 串联细粒度课程笔记与可运行示例,帮助国内开发者降低理解与实操门槛。压缩包共469个文件,包含176个 md 课程笔记、74个 ipynb 可执行示例、116个 png 图解,以及配套 pdf、py 脚本、parquet/pkl 数据与模型文件,按章节组织便于按需检索;整体大小约226.11MB。已有1305人浏览学习。通过这份资料,学习者可对照中文笔记高效理解概念,直接运行 Notebook 复现课程实验,并利用附带的示例数据与模型文件进行调试扩展,从而快速掌握面向实际业务的 LLM 应用开发方法。
1. 大模型入门,别再靠感觉:这门课到底在解决什么
很多开发者第一次接触 LLM 时,状态是这样的:看过几篇公众号推文,知道 Transformer、注意力机制这些名词,打开某个大模型的官网点了几下“生成”,觉得“不过如此”。真到自己写代码,却连一个稳定的对话接口都调不明白——不知道上下文窗口怎么控制,不知道结构化输出怎么约束,不知道幻觉问题为什么在业务场景里这么难缠。吴恩达的大模型系列课程(中文版)就是把这段从“知道”到“能做”的落差补上,面向的不是算法研究员,而是要在大模型之上写业务代码的开发者。它不推导公式,不啃论文,每一课都围绕一个真实问题展开:怎么让模型按格式输出、怎么给模型接上你的数据、怎么评估模型改没改好。适合两类人:一类是刚接触大模型的后端、前端工程师,另一类是已经调过 API、但感觉自己在“黑匣子”里瞎试的开发者。
2. 拆开这门课:吴恩达大模型系列到底讲了什么
2.1 课程矩阵:从提示工程到 RAG,每一门课的真正目标
吴恩达这个大模型系列不是一门课,而是一组课,不同时期推出的课程合在一起,覆盖了开发者上手 LLM 最常踩的几条路径。很多人以为入门课就是讲提示词,实际拆开看,这组课程的核心脉络是三层:怎么和模型对话、怎么给模型外挂知识、怎么让模型按工程要求输出。
第一层是提示工程。这门课讲的是“和模型对话的语法”,核心内容围绕系统提示词、少样本示例、思维链这些基础操作展开。和第二层、第三层相比,它最容易上手,但也最容易被低估——很多人觉得自己“会用 ChatGPT 就会提示工程”,真到写生产代码时就发现,提示词不稳定、格式乱、该输出的信息漏掉,问题全在这一层没打牢。
第二层是给模型接数据。这一层对应的是 RAG 这个方向——把文档切块、做向量化、塞进向量数据库,然后在用户提问时检索相关内容拼进上下文。课程的实战性很强,它会带着你把一个 PDF 文档变成模型可以回答问题的知识库,整个过程里你会接触到的不是抽象概念,而是“嵌入模型选哪个”“切片大小怎么定”“检索结果怎么过滤”这些实际决策点。
第三层是 LLM 应用的工程化。这块包括如何用函数调用(Function Calling)让模型输出结构化 JSON,如何做模型行为的评估,以及如何用 LangChain 这类框架把多个调用组合成真实应用。到这里,课程的目标已经不只是让你“会调 API”,而是让你能做出一个即便面对用户乱输入也不太容易翻车的应用。
还有一个值得注意的点:这组课程里有一课专门讲“如何开发 AI 应用”,由吴恩达和另一位工程师合作讲授,内容是让开发者从需求分析开始,走完一个 LLM 应用的完整生命周期。这课不是讲代码技巧,而是讲设计决策——什么时候用 RAG,什么时候该微调,什么时候干脆别用大模型。这些判断力,恰恰是很多自学开发者最缺的部分。
2.2 为什么说“面向开发者”:讲原理但不绕开代码
这组课程和我印象里的“名校公开课”不一样——它不推导数学公式,而是用代码、示例和前后对比来展示每个概念到底长什么样。吴恩达的讲解风格是:先告诉你“这里会出问题”,然后让你的代码跑出一个坏结果,再引入解决办法跑出好结果。这种“先翻车再修复”的教学节奏,非常贴近真实开发体验。
举个例子,在讲提示工程那一课里,他会展示同一个问题在“没写清格式约束”和“写了格式约束”两种情况下的输出差异。你可能觉得这没什么,但真到自己做应用时,大部分坑都出在“你觉得模型能理解你的隐含要求,但模型真的不理解”。课程用大量这种对比,把这种直觉磨出来。
和课程配套的练习代码是需要认真跟的。每一课的 Notebook 都是可以独立运行的,代码量不大,但每一步都设计在“让你亲手改一个参数然后看结果变化”这个逻辑上。我不建议只看视频不动手——这课的视频信息密度不高,真正的学习发生在你运行代码、改参数、观察输出的那个过程里。
对中文开发者来说,中文版的价值不只是省去翻译成本。大模型相关术语在中文社区里的用法比较混乱,比如“温度”“Top-P”“上下文窗口”这些词,英文资源里上下文清楚,翻成中文后经常被不同博主讲出不同含义。这套课程的中文版在术语翻译上比较克制,保留了关键英文术语,降低了踩概念坑的概率。
3. 跟着课程把第一个 Demo 跑起来:环境搭建与最小调用
3.1 环境准备:Python 版本、依赖与密钥管理
这套课程的练习代码基本都用 Python,用的也是当时主流的 OpenAI SDK。建议直接在自己电脑上跑,而不是用云 Notebook——因为后面要调参数的次数太多,本地跑能让你更快地形成“改代码 → 跑 → 看结果”的反馈循环。
Python 版本建议 3.10 或更高。课程出的时间比较早,但代码本身不挑版本,用新版本反而少遇到依赖冲突。依赖安装用 pip 就好:
python -m venv llm-course source llm-course/bin/activate # Windows 下用 llm-course\Scripts\activate pip install openai python-dotenv jupyter这段代码做了三件事:建一个独立的虚拟环境,激活它,然后装三个最小的依赖。openai 是调用模型的 SDK,python-dotenv 用来管理密钥,jupyter 用来跑课程自带的 Notebook。为什么要用虚拟环境?因为这套课程会用到 LangChain 这类重依赖库,不隔离环境的话,很容易和你本地其他项目的包版本打架——这是我见过最多人踩的第一个坑。
密钥管理按课程的做法来,把 API Key 写进.env文件而不是直接写在代码里:
touch .env # .env 内容: # OPENAI_API_KEY=sk-你的密钥这里有个实际好处:课程代码里用的是 OpenAI 的接口风格,但今天国内可以买到很多兼容 OpenAI 协议的模型服务,你只需要把 base_url 改成本地或第三方服务地址,就能用同样的代码跑不同的模型。密钥不进代码,意味着你换服务商时不用改业务代码,只改.env。
3.2 跑通一个最小示例:提示工程课的课后练习
环境就绪后,我建议直接从提示工程课的 Notebook 入手,但不要照着从头到尾跑完——先做一个“最小验证”:自己写一个 20 行的 Python 脚本,调用一次模型,拿到一个结构化输出。这个脚本虽然短,但能帮你确认环境、密钥、网络三条链路都通。
from openai import OpenAI import os from dotenv import load_dotenv load_dotenv() client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1") ) response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "你是一个信息抽取助手。只输出JSON,不要输出任何其他文字。"}, {"role": "user", "content": "从这句话里抽取公司名和金额:张三昨天在腾飞科技报销了1200元差旅费。"} ], temperature=0, response_format={"type": "json_object"} ) print(response.choices[0].message.content)这段代码的核心不是调用本身,而是两件事:system 提示词里写死了输出格式约束,response_format在接口层强制 JSON 输出。这两个约束同时生效时,模型基本不会跑偏。temperature=0也值得注意——抽取类任务里,随机性越小越好,这不是玄学,是工程上对稳定输出的基本要求。
跑通之后,你可以做一个很有价值的实验:把response_format那行删掉,再跑一次,会看到模型偶尔输出 JSON 以外的内容。这个实验能帮你建立对“接口约束”与“提示词约束”两个层次的直观理解——这正是课程后面所有内容的地基。
4. 避坑清单:开发者学这门课最容易翻车的五个位置
4.1 环境与依赖的坑:版本、密钥、网络三座大山
踩坑一:代码跑在旧版 SDK 上,报错根本看不懂。现象是运行课程 Notebook 时报AttributeError: module 'openai' has no attribute 'ChatCompletion'。原因很简单,课程早期代码用的是 openai 0.x 的接口,而新版 SDK 从 1.0 开始把接口改成了client.chat.completions。网上搜报错会搜到一堆旧答案,越看越乱。解决方式是把依赖升到最新版本,然后按照新版 SDK 的写法重写调用代码,不要试图退回旧版。新版 SDK 的接口风格和课程逻辑是对应的,只是名字变了。
踩坑二:密钥写在代码里,然后不小心把代码传到 GitHub 上。现象不是报错,而是过几天收到账单通知——你的 Key 被爬虫扫到,被人用来跑模型了。这个坑的代价可大可小,但完全可以用习惯规避:从第一天起就把密钥放在.env文件里,并且把.env加进.gitignore。同时建议在服务商后台设置月度消费上限,这是后悔药,不是保险。
踩坑三:本地网络访问不了默认的 API 地址,卡在超时。这个不用多说,按你所在环境选择合适的接口地址,把base_url配置到.env里就行。关键是要有这个认知:OpenAI SDK 只是一个客户端,它访问的地址是可以通过配置切换的。理解了这一点,后面接各种模型服务都会顺手很多。
4.2 学习路径的坑:跳着看、只看不练、混淆课程目标
踩坑四:跳着看视频,跳过练习代码,最后发现什么也没学会。现象是课程刷完了,但自己写代码时还是无从下手。原因是这课的练习代码不是“巩固知识”,它本身就是知识——每一个 Notebook 里都藏着一组“参数怎么调、结果怎么变”的对照实验,这部分不亲手跑,视频等于白看。解决方式是给自己定一个规矩:每看完一课,必须把该课的 Notebook 从头到尾运行一遍,并且至少改一个参数观察输出变化,这个过程比看十遍视频都有用。
踩坑五:把课程当成“大模型理论课”来学,去深挖注意力机制和反向传播。现象是产生了挫败感,觉得自己“基础不够”。原因是你用错了目标——这门课的目标读者是应用开发者,课程默认你理解“模型是个黑匣子”,教学重点是怎么用好这个黑匣子,而不是拆开它。如果你想学模型内部原理,应该去找吴恩达的深度学习专项课程,而不是这套大模型系列。用对工具,比硬啃更重要。
5. 学完这套课程之后:从跟练到微调,怎样验证你真的入门了
课程跟完,你需要一个“毕业设计”来验证自己真的入门了。我的建议是做一个小型 RAG 问答机器人,数据源选你自己最熟悉的文档——比如你团队的接口文档,或者你最近在看的某本技术书的 PDF。用课程里学到的知识,把文档切片、做向量化、搭检索、拼上下文、接模型回答。当你把这个流程完整跑下来,你就具备了构建 LLM 应用的最小闭环能力。
做完这个毕业设计之后,下一个值得投入的方向是微调。但请注意:微调和 RAG 解决的不是同一个问题。RAG 是“给模型外挂知识”,微调是“改变模型的行为模式”。课程里会提到微调,但不会带你完整跑一遍——因为微调的工程成本高,需要准备数据集、做格式转换、跑训练、做评估,这不是入门阶段该碰的东西。入门阶段,先专心把 RAG 和提示工程做扎实。
我自己的经验是:学完这套课程后,再去看 LangChain 的文档,会发现顺畅很多。这不是因为 LangChain 的文档写得好,而是因为 LangChain 抽象的概念——模型包装、提示模板、检索器、输出解析——在这套课程里都已经被拆开讲过了。你看到的每一个框架抽象,背后都是课程里讲过的某个具体问题。带着这种“我看过原件”的视角去学框架,学习速度会快很多。
如果你打算把这个方向做深,接下来值得关注三件事:结构化输出在实际业务中的更多约束方式、主流向量数据库的选型对比、以及模型评估方法论。这三件事在课程里都有提及,但展开的空间有限,需要你自己在真实项目里补充。希望帮到你。
本文还有配套的精品资源,点击获取