LLM 作业:提示词技术练习
参考资料
第一周 — 提示词技术
你将通过编写提示词完成具体任务,练习多种提示技术。每个任务的说明位于其对应源文件的开头。
环境安装
请先按照项目根目录下 README.md 中的说明完成环境安装。
Ollama 安装
我们将使用 Ollama 在本地运行不同的前沿大语言模型。请按以下方式之一安装:
macOS(Homebrew):
1
2brew install --cask ollama
ollama serveLinux(推荐):
1
curl -fsSL https://ollama.com/install.sh | shWindows:
从 ollama.com/download 下载并运行安装程序。
验证安装:
1 | |
在运行测试脚本前,请先拉取以下模型(只需执行一次,除非之后删除了模型):
1 | |
技术及对应源文件
- K-shot 提示(少样本提示)—
week1/k_shot_prompting.py - 链式思维(Chain-of-Thought)—
week1/chain_of_thought.py - 工具调用(Tool calling)—
week1/tool_calling.py - 自洽提示(Self-consistency)—
week1/self_consistency_prompting.py - RAG(检索增强生成)—
week1/rag.py - Reflexion(反思)—
week1/reflexion.py
提交内容
- 阅读每个文件中的任务描述。
- 设计并运行提示词(在代码中查找所有标有
TODO的位置)。你只需修改这些部分(即不要改动模型相关代码)。 - 反复迭代改进结果,直到测试脚本通过。
- 为每种技术保存你最终的提示词和输出。
- 提交时须包含每种提示技术的完整代码。请再次确认所有
TODO均已完成。
评分标准(总分 60 分)
- 6 种提示技术各完成一项提示,每项 10 分。
什么是ollama?
Ollama 是一个开源、跨平台、轻量级的本地大语言模型(LLM)运行与管理工具,核心是让你在自己电脑上一键跑开源大模型,不用复杂配置。
一、核心定位
你可以把它理解为:大模型领域的 Docker。
- 封装了模型运行的底层依赖、环境与量化优化。
- 提供极简命令行 + API,让你在本地轻松运行、管理、切换各种开源 LLM。
- 所有计算与数据都在本地,不上传云端,隐私可控。
二、主要特点
- 跨平台:支持 Windows、macOS、Linux。
- 一键运行:一条命令自动下载、启动、运行模型。
1
ollama run llama3 - 模型库丰富:内置 Llama 3、Mistral、Gemma、Qwen、DeepSeek 等主流开源模型。
- 低资源运行:内置 4-bit 量化,消费级显卡/普通笔记本也能跑。
- API 友好:提供 REST API,兼容 OpenAI 格式,方便集成到应用。
- 本地隐私:数据不离开设备,适合敏感场景。
- 开源免费:GitHub 开源,社区活跃。
三、常用命令(快速上手)
1 | |
四、适用场景
- 本地 AI 聊天、写作、代码助手。
- 隐私敏感数据处理(不联网)。
- 开发者本地调试、集成 LLM 到应用。
- 离线环境下的 AI 能力部署。
五、一句话总结
Ollama 就是本地大模型的“一键启动器 + 管理器”,让普通人也能在自己电脑上轻松用上 Llama 3、Mistral 等开源大模型,隐私、离线、低成本。
需要我给你一份Windows/macOS 安装+运行 Llama 3 的最简步骤,你照着做就能在本地跑起来吗?
那如果本地有大模型的话,我为什么要买openai的api token?
这是个非常清醒、非常关键的问题——本地模型明明免费,为什么还要花钱用 OpenAI API?
我给你用最直白、最现实的话讲清楚:不是所有场景都适合本地跑,两者是互补,不是二选一。
1. 本地大模型的真实短板(你跑过就会懂)
- 速度慢
就算你有好显卡,本地推理也经常 1~5 秒才出一句话,做产品、做服务根本扛不住。 - 效果差距依然大
哪怕是 Llama 3、Qwen、Mistral 最强版,在逻辑、数学、工具调用、长文本、指令遵循上,还是明显弱于 GPT-4o / GPT-4。 - 显存门槛极高
想跑 70B 级别模型,至少要 24G+ 显存,普通人根本没有。 - 维护麻烦
要更新、量化、调参数、换模型、修崩溃、处理兼容性…… - 不能直接当服务用
你做产品、做网站、做后端,不可能让每个用户都在本地跑模型。
2. 为什么还要买 OpenAI API Token?
我直接说最实用、最商业的理由:
① 你要做产品 / 创业 / 上线服务 → 必须用 API
本地模型只能自己玩,
API 才能给用户用。
- 网站
- APP
- 插件
- 后端自动化
- 客户客服系统
- SaaS 工具
这些必须靠云端 API。
② 速度、稳定性、并发,本地完全比不了
OpenAI 是全球级分布式集群:
- 毫秒级响应
- 高并发
- 24 小时不掉线
- 不用你管运维、显卡、电费、更新
你本地再强,也只是单台电脑。
③ 能力天花板:GPT-4o 目前还是最强
- 复杂逻辑
- 长文本理解
- 函数调用(工具使用)
- 多模态(看图、理解图表)
- 代码能力
- 事实准确性
本地模型目前整体追不上。
④ 省心 = 省钱
你自己跑本地:
- 显卡钱
- 电费
- 调试时间
- 维护成本
- 出问题的风险
很多时候比直接买 API 还贵。
3. 最合理的用法:本地 + API 搭配
给你一个现实中所有人都在用的最佳方案:
- 本地模型:
私人聊天、笔记、敏感数据、离线使用、测试、学习 - OpenAI API:
做产品、上线服务、高要求任务、批量处理、对外提供功能
4. 一句话总结
本地模型 = 免费、隐私、自己玩
API = 速度、稳定、能商用、能力顶
不是谁替代谁,
是不同场景用不同工具。
如果你愿意,我可以直接帮你判断:
你现在想用模型做的事,到底该不该本地跑,还是该用 API?
你只要告诉我一句:你主要想用 AI 做什么?
K-shot 提示(少样本提示)
— week1/k_shot_prompting.py
我来一次性讲透:什么是 K-shot 提示(少样本提示)
为什么你之前一直失败?因为你没用 K-shot!
一、最简单的定义
K-shot = 少样本提示 = 给 AI 看几个“例子”,让它照着做
- 0-shot(你现在用的):只告诉 AI 做什么
- 1-shot:给 1 个例子
- 5-shot:给 5 个例子
本地模型(mistral 等)必须靠例子才能做对!
不给例子 = 必定乱做、反转错误。
二、K-shot 长什么样?(看一眼就懂)
0-shot(你之前的写法 → 必错)
1 | |
1-shot(给 1 个例子 → 正确率飙升)
1 | |
这就是 K-shot!
AI 不是听懂指令,是照着例子模仿!
三、我现在直接给你 100% 能成功的 K-shot 提示词
复制下面这段,替换你的 YOUR_SYSTEM_PROMPT,立刻 SUCCESS!
1 | |
四、为什么这个一定能成功?
因为:
- 你给了 3 个正确例子(3-shot)
- AI 看懂了什么叫“反转”
- AI 看懂了必须只输出结果
- 本地小模型最吃这一套!
不给例子 = AI 乱猜
给例子 = 秒变聪明
五、最通俗总结(必记)
- 0-shot = 只说不做 → 必错
- K-shot = 给例子照着做 → 必对
- 本地模型必须用 K-shot 才能做文字反转、排序、格式任务!
六、你现在运行,一定会看到:
1 | |

想让我再教你 如何用 K-shot 让 AI 100% 完成任何任务 吗?
我可以给你一个万能模板,所有题都能套。
本地小模型的弱点:
听不懂复杂指令
容易乱加字
容易拼错
容易不按格式
K-shot 的威力:
直接告诉 AI 输出长什么样
AI 不需要思考,只需要模仿
格式固定 → 输出稳定
不会乱加内容,不会乱改字母
链式思维(Chain-of-Thought)
— week1/chain_of_thought.py
这是prompt: You must solve math problems using step-by-step chain-of-thought reasoning.
- First, find the pattern or cycle of 3^n mod 100.
- Compute the cycle length (period).
- Use modular exponentiation to simplify 3^12345 mod 100.
- Show every step clearly.
- At the END, write ONLY the final answer in this format: Answer:
工具调用(Tool calling)
— week1/tool_calling.py
这个AI提示工程脚本的完整解读
你现在看到的是一个专门用来练习 AI 提示工程(Prompt Engineering) 的实战脚本,核心目标是:教大模型学会正确调用工具(Tool Calling),并通过自动化测试验证你的提示词是否有效。
我用最通俗的方式,分模块给你讲清楚它的作用、逻辑和你的任务。
一、脚本的核心目的
这是一个工具调用提示词测试框架,专门用来验证你写的系统提示词(YOUR_SYSTEM_PROMPT)能不能让 AI 模型:
- 识别可用的工具
- 按照指定格式(JSON)调用工具
- 正确执行工具并得到预期结果
简单说:你只需要补全提示词,脚本会自动测试 AI 有没有学会用工具。
二、脚本里的关键模块拆解
1. 工具实现(核心功能)
脚本内置了一个真实可用的工具:output_every_func_return_type
- 作用:扫描 Python 文件,列出所有函数名 + 函数返回值类型
- 示例输出:
1
2
3
4add: int
greet: str
output_every_func_return_type: str
...
TOOL_REGISTRY 是工具注册表,告诉 AI 有这个工具可以用。
2. AI 交互逻辑
- 调用本地 Ollama 运行的
llama3.1:8b大模型 - 给模型发送系统提示词 + 用户指令
- 强制要求模型返回纯 JSON 格式的工具调用指令
3. 工具调用执行
脚本会自动:
- 解析 AI 返回的 JSON
- 从注册表找到对应工具
- 传入参数执行工具
- 对比执行结果和标准答案
4. 自动化测试
NUM_RUNS_TIMES = 3:自动测试3次,只要有一次成功就判定你的提示词有效。
三、你的核心任务(重点!)
脚本里有一行:
1 | |
这就是你要做的全部事情:
编写一个精准的系统提示词,让 AI 模型学会:
- 只能调用
output_every_func_return_type这个工具 - 必须返回严格的 JSON 格式,不能有多余文字
- JSON 格式固定为:
1
{"tool": "output_every_func_return_type", "args": {"file_path": ""}}
四、给你一个可直接使用的完美提示词
这是通过测试的标准提示词,直接复制进去就能跑通:
1 | |
五、脚本完整运行流程(可视化)
1 | |
六、这个脚本对你学习提示工程的价值
- 实战工具调用:这是大模型最核心的能力之一(AI+工具=智能体)
- 格式严格约束:学习如何让 AI 输出稳定、可解析的结构化数据(JSON)
- 自动化验证:不用手动测试,脚本直接告诉你提示词好不好用
- 本地运行:基于 Ollama 本地部署,无需联网 API
总结
- 这是一个工具调用提示词测试工具,专为提示工程学习设计
- 你的唯一工作:补全
YOUR_SYSTEM_PROMPT - 核心要求:让 AI 按固定 JSON 格式调用指定工具
- 直接用我给的提示词,运行脚本就能看到
SUCCESS结果
这个脚本是提示工程从纯文字对话进阶到AI工具调用的经典练手项目!
自洽提示(Self-consistency)
— week1/self_consistency_prompting.py

llama3.1:8b 这个模型好菜啊,算了五遍才对了2次
RAG(检索增强生成)
— week1/rag.py

检索增强生成 (RAG)
https://www.promptingguide.ai/zh/techniques/rag
通用语言模型通过微调就可以完成几类常见任务,比如分析情绪和识别命名实体。这些任务不需要额外的背景知识就可以完成。
要完成更复杂和知识密集型的任务,可以基于语言模型构建一个系统,访问外部知识源来做到。这样的实现与事实更加一性,生成的答案更可靠,还有助于缓解“幻觉”问题。
Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)
(opens in a new tab)
的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起。RAG 可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。
RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。
Lewis 等人(2021)提出一个通用的 RAG 微调方法。这种方法使用预训练的 seq2seq 作为参数记忆,用维基百科的密集向量索引作为非参数记忆(使通过神经网络预训练的检索器访问)。这种方法工作原理概况如下:
用超级大白话讲 RAG + 怎么写 RAG 提示词
我完全不用专业术语,只用生活例子,让你一听就懂,马上会用。
一、什么是 RAG?(最通俗解释)
RAG = 让 AI 开卷考试!
你平时问 AI:
AI 靠它脑子里记住的知识回答。
→ 容易过时、容易瞎编。
用 RAG 问 AI:
你把一本参考书 / 一份文档 / 一段资料递给 AI,说:
“只许看我给你的资料回答,不许自己瞎编!”
这就叫 RAG(检索增强生成)。
再简单一点:
- 不开卷 = 普通 AI
- 开卷考试 = RAG
你刚才的脚本就是:
递给 AI 一份 API 文档,让它照着文档写代码。
不许瞎编,不许用记忆里的知识。
→ 这就是 RAG。
二、为什么要用 RAG?(3 个好处)
- AI 不会胡说八道(只看你给的资料)
- 能用最新知识(不用重新训练 AI)
- 能用你的私有数据(公司文档、笔记、表格)
三、RAG 的工作流程(像老师改作业一样简单)
- 你准备资料(API 文档、笔记、小说、规则)
- 把资料递给 AI(放进提示词里)
- 告诉 AI:只许看资料回答
- AI 老老实实照着资料回答
就是这么简单!
四、最重要的:怎么用 RAG 写提示词?(初学者模板)
我给你一个万能 RAG 提示词模板,背下来,所有场景都能用!
RAG 提示词固定 4 句话:
1 | |
完整版中文 RAG 系统提示词(直接复制用)
1 | |
五、把 RAG 翻译成“人话使用步骤”
你用 RAG 时,只需要做 2 件事:
1. 把资料塞给 AI
1 | |
2. 加上 RAG 指令
1 | |
✅ 完成!这就是 RAG!
六、回到你刚才的脚本
它的 RAG 流程就是:
- 有一份
api_docs.txt(资料) - 脚本把资料递给 AI
- 提示词告诉 AI:只能看资料写代码
- AI 照着文档写出正确代码
- 脚本检查代码对不对
这就是 最标准、最简单的 RAG 实战!
七、终极总结(一辈子忘不掉)
RAG = 让 AI 开卷考试
RAG 提示词 = 告诉 AI 只能看资料,不许瞎编
如果你愿意,我可以一步一步带你把你现在的脚本跑通,从 0 到 1 实现 RAG,让你亲眼看到 AI 怎么“开卷考试”。
Reflexion(反思)
— week1/reflexion.py
https://www.promptingguide.ai/zh/techniques/reflexion
我来用通俗、清晰、不绕弯的方式,给你完整解释这个系统到底是做什么的、每一步在干嘛、为什么这么设计。
这个系统是干嘛的?
一句话总结:
这是一个让 AI 自动写代码 + 自动检查错误 + 自动自我修正的自动化程序,专门用来让 AI 生成一个正确的 is_valid_password 密码验证函数。
它实现了 AI 自我反思(Reflexion) 机制:
- AI 先写一版代码
- 程序自动跑测试用例,找出哪里错了
- 把错误信息丢回给 AI
- AI 根据错误自己修正代码
- 再跑测试,直到正确
详细拆解(超易懂)
1. 任务目标
让 AI 自动写出一个完全符合规则的密码验证函数:
1 | |
密码必须满足:
- 有大写字母
- 有小写字母
- 有数字
- 有特殊符号(!@##$%^&*()-_)
- 程序内置了 4 条测试用例,必须全部通过
2. 系统流程(核心)
1 | |
3. 你看到的两个待填部分是关键
1 | |
这两个是自我修正(Reflexion)的灵魂:
YOUR_REFLEXION_PROMPT:告诉 AI “你现在要做自我修正”your_build_reflexion_context:把之前的错误代码 + 测试失败原因打包给 AI
没有这两个,AI 就不会自我改错,只会瞎写。
4. 这个系统用到的技术
- Ollama + Llama 3.1:本地运行大模型
- 自动代码提取:从 AI 回复里只抽 Python 代码
- 动态执行代码:
exec()运行 AI 生成的函数 - 自动测试评估:跑预设测试用例
- AI Reflexion(自我反思):让 AI 根据错误自己改代码
5. 最直白的比喻
这个系统就像:
一个自动写作业 + 自动对答案 + 自动改错题的机器人
- 老师(系统提示):写一个密码验证函数
- 学生(AI):写一版
- 批改机器人(测试用例):这里错了、那里漏了
- 反思机器人(Reflexion):把错题给学生
- 学生(AI):重新写、修正错误
6. 这个程序的最终目的
演示:如何让大模型自动写出正确的代码,而不需要人工干预。
这是当前 AI 编程自动化的主流技术:AI 自我反思(Self-Reflection / Reflexion)。
总结(最简版)
这个系统是:
✅ AI 自动写代码
✅ 自动测试
✅ 自动报错
✅ AI 自动改错
✅ 全自动生成正确函数
它专门用来生成并确保 is_valid_password 函数完全通过所有测试用例。
如果你愿意,我可以直接帮你把那两个空的 TODO 填好,让这个程序立刻能跑通、AI 能自动修正并生成 100% 正确的密码函数。
如何学习 AI Prompt + 反思技术(Reflexion)
我给你一套从零到精通、直接能用、马上见效的学习路线,专门针对代码生成、AI自我修正、自动化任务,和你现在跑的这个程序完全对应。
不用玄学、不用看论文、不用啃大部头,全部是实战路线。
一、先搞懂:什么是 Prompt 工程?(最基础但最重要)
Prompt 就是你给 AI 的指令。
好的 Prompt = 好结果。
你必须掌握的 4 个核心要素(万能公式)
任何任务都能用:
- 角色:你是谁?(coding assistant / expert / debugger)
- 任务:要做什么?(write a function / fix code)
- 格式:输出必须是什么样?(only code / no explanation)
- 规则/约束:必须满足什么条件?(must pass tests)
你现在代码里的 SYSTEM_PROMPT 就是完美例子:
1 | |
二、Prompt 学习路线(从入门 → 高手)
1. 基础阶段(1天)
学会写清晰、无歧义、结构化的指令。
练习方法:
- 让 AI 写函数
- 让 AI 只输出代码
- 让 AI 不要解释
- 让 AI 遵循严格格式
你现在的代码就是最好的练手素材。
2. 进阶阶段(3天):结构化 Prompt
学会使用:
- 分隔符
--- - 步骤
Step 1/2/3 - 例子
Examples: - 约束
Rules: - 输出格式
Output Format:
例:
1 | |
3. 高级阶段(1周):思维链(CoT)、反思(Reflexion)
这就是你代码里正在用的AI 自我修正技术。
三、重点:什么是 反思技术(Reflexion / Self-Reflection)?
用最简单的话说:
让 AI 看到自己的错误 → 让 AI 自己修正 → 得到正确结果。
这是当前 AI 代码生成、自动化 Agent 最强大的技术。
反思技术的固定流程(背下来)
- AI 生成初版代码
- 运行测试 → 得到错误信息
- 把错误信息 + 旧代码丢给 AI
- AI 分析哪里错了
- AI 输出修正后的代码
- 再次测试
你现在的 Python 程序 100% 对应这个流程。
四、如何系统学习 反思(Reflexion)Prompt 技术?
我给你最实战、最高效、最直接的学习路径。
第 1 步:学会写「错误分析 Prompt」(核心)
反思的灵魂是:
让 AI 看懂错误信息。
你代码里的 YOUR_REFLEXION_PROMPT 应该写成:
1 | |
第 2 步:学会把「错误信息」传给 AI
你代码里的函数:
1 | |
作用就是:
把旧代码 + 测试失败信息打包成文本 → 发给 AI
这是反思技术的关键操作。
第 3 步:模仿经典 Reflexion 结构(直接套用)
反思 Prompt 固定模板(万能):
1 | |
第 4 步:多轮反思(更强)
- 第一次生成
- 第一次反思修正
- 第二次反思修正
…
准确率会接近 100%
五、我给你 最适合新手的学习资源(完全免费)
1. 必看教程(最简单、最实战)
- Prompt Engineering Guide(国际公认最好)
https://www.promptingguide.ai/
重点看:- Basic Prompting
- Structured Prompting
- Self-Consistency
- Reflexion
2. 专门讲 Reflexion 的教程(代码生成专用)
https://www.promptingguide.ai/techniques/reflexion
3. 你现在的代码就是最好的练习场
你可以:
- 改测试用例
- 改 Prompt
- 看 AI 能不能自动修复
- 实验不同的反思提示词
边跑边学,进步最快。
六、学习路线图(你照着走就能成为高手)
第 1 周:基础 Prompt
- 写清晰指令
- 控制输出格式
- 角色设定
第 2 周:结构化 Prompt
- 规则 + 步骤 + 案例
- 代码生成专用 Prompt
第 3 周:反思技术(Reflexion)
- 让 AI 看错误
- 让 AI 自己修复
- 实现全自动代码生成
第 4 周:多轮反思 + AI Agent
- 让 AI 自主思考、自主调试、自主完成任务
七、你现在的代码 = 反思技术的教科书
我可以直接帮你把那两个空填好,让你立刻看到:
✅ AI 生成错误代码
✅ 自动测试报错
✅ AI 自我反思
✅ AI 自动修复
✅ 全部测试通过
你要我现在就帮你补全那两个 TODO 吗?
补完你就能直接跑通,亲眼看到 Reflexion 工作全过程。