modern-software-dev-assignments week1全解:6种核心LLM提示技术一网打尽

modern-software-dev-assignments week1全解:6种核心LLM提示技术一网打尽

【免费下载链接】modern-software-dev-assignments Assignments for CS146S: The Modern Software Dev (Stanford University Fall 2026/2025) 【免费下载链接】modern-software-dev-assignments 项目地址: https://gitcode.com/GitHub_Trending/mo/modern-software-dev-assignments

modern-software-dev-assignments 是斯坦福大学 CS146S《The Modern Software Developer》课程的官方作业仓库,其中 Week 1 用 6 个独立的小任务带你亲手实践 6 种核心 LLM 提示技术:K-shot 提示、思维链(CoT)、工具调用、自一致性、RAG 检索增强生成与 Reflexion 自我反思。本文带你快速完成环境搭建,并逐一拆解每种技术的任务目标、文件位置与通关技巧 🎯

📚 本周任务一览:6 种技术对应 6 个文件

Week 1 全部代码位于 week1/ 目录,每种技术都是一个独立脚本,任务说明写在各自源码文件头部,你只需补全标注为 TODO 的提示词(prompt),即可通过内置测试脚本。

技术对应文件本地模型任务目标
K-shot 提示k_shot_prompting.pymistral-nemo:12b让模型反转单词字母顺序
思维链 CoTchain_of_thought.pyllama3.1:8b计算 3¹²³⁴⁵ mod 100
工具调用tool_calling.pyllama3.1:8b生成合法的 JSON 工具调用
自一致性self_consistency_prompting.pyllama3.1:8b解一道小学数学应用题
RAG 检索增强rag.pyllama3.1:8b基于 API 文档写代码
Reflexion 反思reflexion.pyllama3.1:8b根据测试失败信息迭代改代码

完整的任务说明见 week1/README.md 与 week1/assignment.md。

🛠️ 快速搭建环境:4 步跑通本地 LLM

所有任务都通过 Ollama 在本地运行大模型,不需要 API 密钥。按照 README.md 的说明,标准流程如下(要求 Python 3.12):

1️⃣ 创建并激活 Conda 环境:

conda create -n cs146s python=3.12 -y
conda activate cs146s

2️⃣ 安装 Poetry 并安装项目依赖(在仓库根目录执行):

poetry install --no-interaction

3️⃣ 安装 Ollama 并启动服务(ollama serve),用 ollama -v 验证安装成功。

4️⃣ 拉取本周所需的两个模型(只需执行一次):

ollama run mistral-nemo:12b
ollama run llama3.1:8b

💡 如果仓库不在本地,可先克隆:git clone https://gitcode.com/GitHub_Trending/mo/modern-software-dev-assignments,再进入 week1/ 目录开始实验。

🎯 技术一:K-shot 提示——用示例教会模型

打开 k_shot_prompting.py,任务很简单:让模型把 httpstatus 反转成 sutatsptth,且只输出反转结果。难点在于模型有时会"话多"——加上说明文字导致判题失败。

通关技巧:在 YOUR_SYSTEM_PROMPT(第 9-10 行)中给出若干同格式的任务-答案示例(即 few-shot 样本),并在示例中强化"只输出结果、不加任何文字"的约束。测试脚本会运行 5 次,只要有一次输出完全匹配就打印 SUCCESS。

🧠 技术二:思维链(Chain-of-Thought)——先推理再作答

chain_of_thought.py 要求模型计算 3^12345 mod 100,并把最终答案写在最后一行 Answer: <数字>(正确答案是 43)。

通关技巧:在系统提示中明确要求模型"先逐步推理,再给出最终答案",并规定答案格式。脚本内置了 extract_final_answer 函数(第 25-40 行),会从冗长的推理过程里正则提取最后一行 Answer:,所以格式务必严格。

🔧 技术三:工具调用——让模型输出可执行的 JSON

tool_calling.py 是本周最有"工程味"的任务:模型不能直接干活,必须输出一个 JSON 对象来"调用工具"。代码中已实现了一个真实的工具函数 output_every_func_return_type(第 43-52 行),它会用 AST 解析源文件、列出所有顶层函数的返回类型。

执行链路很清晰:模型输出 JSON → extract_tool_call 解析 → 从 TOOL_REGISTRY 查表执行 → 比对输出(第 115-133 行)。

通关技巧:在系统提示中给出工具的完整说明和 JSON 输出模板(工具名、参数、示例),并强调"只输出 JSON,不要多余文字"。

🎲 技术四:自一致性——多次采样投票选答案

self_consistency_prompting.py 是一道小学应用题:Henry 骑 60 英里,中途停两次,两次停靠之间骑了多少?(答案:25 英里)

脚本会把同一个提示运行 5 次(temperature=1,故意放大随机性),然后用 Counter 对提取出的答案做多数投票(第 67-69 行)。

通关技巧:结合思维链引导逐步计算,压低单次出错概率;即使个别采样跑偏,投票机制也能帮你"翻盘"。

📄 技术五:RAG 检索增强——把文档喂给模型

rag.py 的任务是:基于 API 文档写一个 fetch_user_name 函数,要求使用 requests.get、/users/ 端点和 X-API-Key 认证头。文档语料放在 week1/data/api_docs.txt。

RAG 的核心是你需要实现 YOUR_CONTEXT_PROVIDER(第 54-59 行):从语料中挑选相关文档放进上下文。脚本会用 REQUIRED_SNIPPETS 校验生成代码是否包含关键片段(第 45-51 行)。

对比实验彩蛋:把 YOUR_CONTEXT_PROVIDER 改成返回 [](不注入任何文档),再对比两种情况下的成功率——这是理解 RAG 价值的最直接方式。

🔄 技术六:Reflexion 反思——用测试失败驱动自我修正

reflexion.py 模拟了 AI 编程 Agent 的完整闭环:

  1. 让模型生成 is_valid_password 函数(密码需 ≥8 位、含大小写、数字和特殊字符);
  2. 用 4 组测试用例(第 23-28 行)真实运行并收集失败详情;
  3. 你实现的 your_build_reflexion_context(第 94-99 行)要把上一版代码 + 失败信息组装成反思消息;
  4. 模型据此输出改进版代码,再次测试。

通关技巧:反思消息里要同时包含"你之前写的代码"和"哪些用例失败了、错在哪",并明确指令"修复问题后重新输出完整函数"。

✅ 交付要求与评分标准

  • 只修改每个文件中标注 TODO 的提示词,不要改动模型与测试逻辑;
  • 每个脚本独立运行,迭代提示词直到输出 SUCCESS;
  • 保存每种技术的最终提示词与运行输出,随代码一起提交;
  • 评分 60 分 = 6 种技术 × 每种 10 分(详见 week1/assignment.md 第 51-53 行)。

🗺️ 小结:6 种技术什么时候用?

场景推荐技术
输出格式不稳定K-shot 示例约束
复杂推理、数学计算思维链 CoT
需要查数据库、执行操作工具调用
单次准确率不达标自一致性投票
依赖私有/最新文档RAG 检索增强
生成的代码有 BugReflexion 迭代修正

Week 1 的价值在于让你亲手感受提示词如何影响模型行为——这些技巧在后续 week2~week7 构建 AI 笔记应用时会反复用到,建议先花一个下午把 6 个脚本全部跑通 💪

【免费下载链接】modern-software-dev-assignments Assignments for CS146S: The Modern Software Dev (Stanford University Fall 2026/2025) 【免费下载链接】modern-software-dev-assignments 项目地址: https://gitcode.com/GitHub_Trending/mo/modern-software-dev-assignments

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值