WEEK 09 / 16 AI 应用 · API 深入 / Prompt 工程
PYTHON 程序设计 · V2 · 第 9 周(100 分钟 · L19–L20)

拧开引擎盖
参数与提问的艺术

七周前你用 5 行代码第一次调通 API——今天回到起点深入引擎盖下面: 四个参数控制 AI 怎么生成、流式输出改善体验;然后学真正决定输出质量的东西:怎么问。

所属模块 M5 AI 应用开发← → 翻页 · F 全屏

今日课表(100 分钟)

时间环节要点
0–8开场实验同一 prompt 跑两次答案不同——大模型是带概率的生成器
8–22四参数temperature 控创意 / top_p 核采样 / max_tokens 控成本 / stop 控格式
22–32猜温度互动三段输出对应哪档温度?你的场景该用哪档?
32–44流式输出stream=True 逐块到达;打字机效果;yield 生成器语义
44–56llm_chat 封装可配置调用函数——W10–W13 的基础设施;三档温度对比实验
56–68Prompt 五组件角色/任务/约束/示例/输出格式——加一层组件提升一档
68–80Few-shot 与 CoT示例教它做什么、CoT 教它怎么想;现场对比输出质量
80–92动手练习运行场:build_prompt 五组件模板(f-string 版)
92–100小测随堂小测 3 题

参数不是玄学:课后用 llm_chat() 做三档温度对比并记录观察。

开场实验:同样的问题,跑两次

同一个 prompt 连续调用两次——答案不一样。为什么?

你的 prompt
→
采样(受参数控制)
→
每次不同的输出
大模型不是检索引擎,是「带概率的生成器」。 每个词都是从概率分布里「抽」出来的——抽签的松紧,由参数控制。

四个核心参数

temperature控创意 0 = 确定(连跑三次结果一致)→ 代码 / JSON 输出常用 0–0.3;调高更随机 → 创意写作。
top_p核采样 只从累积概率前 p 的候选词里抽——与 temperature 二选一调,别同时拉满。
max_tokens控成本 输出上限,防烧钱。一次调用多少钱 ≈ token 数 × 单价。
stop控边界 停止序列:输出到指定字符串就停——控制格式的利器。

心智模型:temperature 控创意,max_tokens 控成本,stop 控格式。

课堂互动:猜温度

输出 A(?):「变量的作用是存储数据。」 三次运行,一字不差。
输出 B(?):「变量嘛,就像你给内存里的宝盒贴了张便利贴……」 每次的花活都不一样。

A 对应 temperature = 0,B 对应 1.5。你的应用场景该用哪个?(写代码?写文案?)

流式输出:第一个字 0.5 秒出现

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    stream=True,                    # ← 关键开关
)

full = ""
for chunk in stream:                # 逐块到达
    delta = chunk.choices[0].delta.content
    if delta:
        full += delta
        print(delta, end="", flush=True)  # 打字机效果

封装:可配置的 llm_chat() 函数

本函数是 W10–W13 所有课的基础设施:

def llm_chat(prompt, system="你是课程助教", model="deepseek-chat",
             temperature=0.7, max_tokens=1024, stream=False):
    """可配置的大模型调用:换模型/调温度/流式,全在这一个函数里。"""
    # ... 组装 messages、调 API、处理流式/非流式 ...
    return reply
课堂演示:用它跑同一个 prompt 的 temperature=0 / 0.7 / 1.5 三档对比—— 参数不是玄学,是可以实验测量的。

Prompt 工程:五组件结构

①角色你是谁 「你是 Python 专家」——对应 system 消息,设定人设与边界。
②任务做什么 动词开头、一句话可复述。「审查这段代码的安全问题」优于「看看这个」。
③约束边界条件 「只用中文」「不超过 100 字」「没有依据就说不知道」。
④示例Few-shot 给 1–3 个输入→输出样例——示例对格式的约束力远强于文字描述。
⑤输出格式给谁看 要被程序解析就明确说「输出 JSON,字段为 …」——下周 JSON Mode 是它的工程化版本。

Few-shot 与思维链

Few-shot(教 AI 做什么)
输入:开心 → 输出:😊
输入:难过 → 输出:😢
输入:惊喜 → 输出:
两个示例就够它学会模式。
Chain of Thought(教 AI 怎么想)
请一步一步分析这段代码
每步说明理由,最后给结论
触发推理链,复杂问题质量显著提升。

心智模型:示例教它做什么,CoT 教它怎么想。

动手:Prompt 迭代实验

交互 · 用「模拟 AI」体会组件的作用

课后用真实的 llm_chat() 跑这个模板——体会「加一层组件,输出质量提升一档」。

随堂小测(3 题)

交互 · 点击选项作答

课后与下周预告

本周课后
  • 练习:用 llm_chat() 做 temperature 三档对比实验,记录观察
下周:W10 结构化输出与 RAG 基础 让 AI 说「机器话」(JSON Mode / Function Calling);再让它读你的文档(RAG 原理)。 提前看下周课件 →

深入阅读:M5 模块页 · 经典笔记 12.5 装饰器 · 11.3 生成器