模块1:AI 对话的底层逻辑

难度:⭐ 入门 | 建议时长:2-3小时

目标:理解 AI 的工作方式、关键参数、模型差异,建立正确的心智模型


1.1 AI 是怎么”说话”的

AI 不是”理解”你,而是”接话”

想象一个人读过全世界所有的书、文章、对话记录,但从来没有真正”生活”过。你说”床前明月”,他立刻接”光”——不是因为他懂李白的思乡之情,而是因为他见过一万次这个组合,知道”光”出现在这后面的概率最高。

这就是 AI 的本质:超级模式匹配器

你输入的文字 → AI 把文字拆成碎片 → 根据训练数据预测最可能的下一个碎片 → 一个接一个生成回复

关键认知:四个”不是”

你以为的 AI实际的 AI
像人一样”理解”含义基于概率进行模式匹配
有自己的想法和观点根据输入生成最可能的输出
说一次就记住了每次对话有长度限制,超出就”忘了”
会自动推断你的意思你说什么它就处理什么,不说就不管

这意味着什么?

  1. 你说得越清楚,AI 表现越好 — 你提供的线索越多,AI 匹配到的模式越准确
  2. AI 不会”猜”你的意思 — 模糊的输入 = 模糊的输出
  3. AI 没有”常识判断” — 你认为理所当然的事情,需要明确说出来
  4. 同样的提示可能给出不同结果 — 因为生成过程有随机性(后面会讲到这就是 Temperature)

1.2 Token:AI 的”计量单位”

AI 不认字,认”碎片”

你和朋友聊天按”字”算,但 AI 不读”字”,它读的是 Token — 一种把文字切碎后的碎片。

类比:拼图碎片。

"我喜欢吃苹果" → 对你来说是 6 个字
                → 对 AI 来说是 ["我", "喜欢", "吃", "苹果"] 4 个 Token

"I love apples" → 对你来说是 3 个单词
                → 对 AI 来说是 ["I", " love", " apples"] 3 个 Token

中英文 Token 效率差异

同样的意思,中文通常比英文消耗更多 Token。

这是因为大部分模型的训练数据以英文为主,英文的切分更高效。

实际测试(近似值):
"人工智能正在改变世界" → 约 7-9 个 Token
"AI is changing the world" → 约 6 个 Token

同样的意思,中文多花了约 30%-50% 的 Token。

这意味着什么? 如果你处理很长的中文文档,会比同等长度的英文文档更快”撞墙”(触达上下文限制)。

上下文窗口:AI 的”书桌”

上下文窗口就是 AI 一次能处理的 Token 总量上限,包括你的输入和 AI 的输出。

类比:书桌大小。

  4K Token ≈ 小课桌    → 能放一篇短文(约 3000 字中文)
  8K Token ≈ 办公桌    → 能放几页文档
 32K Token ≈ 大书桌    → 能放一本小册子
128K Token ≈ 会议桌    → 能放一本书
  1M Token ≈ 图书馆桌  → 能放好几本书

内容超出"桌面大小" → 最早放上去的内容会"掉到地上"(被遗忘)

实操建议

1. 长文档分段处理:不要一次性把 10 万字塞给 AI,
   分成几段分别处理,最后汇总

2. 精简你的提示词:废话越少,留给 AI 回答的空间越大

3. 了解你用的模型的窗口大小:
   GPT-4o:128K    Claude:200K(Opus 可达 1M)
   Gemini:1M      Qwen:128K

4. 注意对话累积:多轮对话中,之前所有的对话都占用窗口,
   聊太久 AI 会"忘记"前面的内容

1.3 影响 AI 输出的”隐形开关”

Temperature(温度):AI 的”冒险度”

Temperature 是最重要的参数,控制 AI 输出的随机程度

类比:去餐厅点菜。

Temperature = 0(保守)
→ "老样子,来碗牛肉面"
→ 每次去都点一样的,稳定可靠,但永远不会有惊喜

Temperature = 0.7(适中)
→ "今天想试试新菜,但别太离谱"
→ 有一些变化和创意,偶尔给你惊喜

Temperature = 1.0(冒险)
→ "随便来,越新奇越好"
→ 可能吃到惊艳的新菜,也可能踩雷

实操对比:

提示词:"用一句话形容春天"

Temperature = 0(跑3次结果一样):
→ "春天是大地苏醒的季节,万物复苏,生机盎然。"
→ "春天是大地苏醒的季节,万物复苏,生机盎然。"
→ "春天是大地苏醒的季节,万物复苏,生机盎然。"

Temperature = 1.0(跑3次结果不同):
→ "春天像一个赖床后终于起来的人,伸着懒腰把花都抖落了一地。"
→ "冰河炸裂的那声脆响,就是春天的敲门声。"
→ "春天是调色盘打翻在大地上的那场意外。"

Top-P(核采样):AI 的”选择范围”

Top-P 控制 AI 从多大范围的候选词中选择。又叫”核采样”。

类比:自助餐取餐。

Top-P = 0.1 → 只从最热门的几道菜里选(安全但单调)
Top-P = 0.5 → 从热门菜中挑(保守,结果可控)
Top-P = 0.9 → 几乎所有菜都考虑(丰富但可能选到怪菜)
Top-P = 1.0 → 所有候选词都考虑(默认值,最大灵活度)

和 Temperature 的区别(容易混淆):

维度TemperatureTop-P
控制方式调整概率分布的”尖锐度”截断候选词的”范围”
类比厨师”敢不敢冒险”菜单”摆出多少道菜”
取值范围0 - 20 - 1

经验法则:调一个就够,别同时调。大部分时候调 Temperature 就行,Top-P 保持默认 1.0。

Frequency Penalty(频率惩罚):AI 的”复读机检测器”

Frequency Penalty 控制 AI 重复使用同一个词的程度。值越大,越避免重复用词。

类比:写作老师批改作文。

Frequency Penalty = 0(不管)
→ 老师不在意重复
→ AI 可能反复用同一个词:"春天很美,春天很美,春天很美..."

Frequency Penalty = 0.5(适中)
→ 老师提醒:"换个说法吧"
→ AI 主动换近义词:"春天很美丽、春日宜人、春季迷人..."

Frequency Penalty = 1.5(严格)
→ 老师强制:"不准重复用词!"
→ AI 拼命找新词,可能开始用生僻字甚至语句不通

实操对比:

提示词:"写 3 句赞美春天的话"

Frequency Penalty = 0:
→ 春天很美。
→ 春天的花很美。
→ 春天的天空也很美。
("春天""美"反复出现)

Frequency Penalty = 1.0:
→ 春日的繁花点缀大地。
→ 暖风轻拂,万物复苏。
→ 桃李争艳,生机盎然。
(用词丰富,几乎不重复)

取值范围:通常 -2.02.0,默认 0

  • 正值:抑制重复(值越大越禁止重复词)
  • 负值:鼓励重复(特殊场景才用,如歌词复歌、押韵诗)

Presence Penalty(存在惩罚):AI 的”话题切换器”

Presence Penalty 控制 AI 是否倾向于引入新话题。值越大,越鼓励讲新东西。

类比:饭桌上的话题转移。

Presence Penalty = 0(不管)
→ 大家就一个话题聊到底
→ AI 围绕一个主题反复展开:"工作,工作的难处,工作的压力..."

Presence Penalty = 0.5(适中)
→ 偶尔换个话题
→ AI 适度引入新角度:"工作 → 同事关系 → 兴趣爱好..."

Presence Penalty = 1.5(活跃)
→ 频繁切换话题
→ AI 不停引入新概念,可能跑题

和 Frequency Penalty 的区别(最容易搞混):

维度Frequency PenaltyPresence Penalty
关注对象同一个用了多少次某个词/主题是否已出现过
触发条件词的出现频次累加(用越多惩罚越大)只要出现过一次就触发(一锤子买卖)
目的用词多样化话题多元化
类比别一直用同一个字别一直围绕同一件事

实操对比:

提示词:"给我讲讲学习编程"

Presence Penalty = 0:
→ 持续围绕"编程基础"展开:变量、循环、函数、数据结构...
(一直在编程这个话题里深挖)

Presence Penalty = 1.0:
→ 涉及更多周边话题:编程基础 → 学习方法 → 心态调整 → 职业发展...
(话题广度更大)

取值范围:通常 -2.02.0,默认 0

⚠️ 新手忠告:四个参数不要一起调!越多参数同时变化越难判断哪个起的作用。 建议顺序:先只调 Temperature → 不够再调 Top-P → 想要多样化用词调 Frequency Penalty → 想要话题发散调 Presence Penalty。

什么时候调什么参数?

任务类型TemperatureTop-PFrequency PenaltyPresence Penalty
写代码0 - 0.2默认 1.000
数据分析0 - 0.2默认 1.000
翻译0.2 - 0.4默认 1.00 - 0.30
商务写作0.4 - 0.7默认 1.00.3 - 0.50 - 0.3
文案创意0.7 - 1.0默认 1.00.5 - 0.80.3 - 0.5
头脑风暴0.8 - 1.0默认 1.00.5 - 1.00.5 - 1.0
长文创作0.7 - 0.9默认 1.00.5 - 1.00.5 - 0.8
诗歌/故事0.9 - 1.2默认 1.00.5 - 1.00.3 - 0.6

“默认 1.0” 表示 Top-P 通常不需要调。 这只是经验起点值,实际还要根据效果微调。

在哪里调?

  • ChatGPT:设置 → 自定义 → 高级设置(网页版功能有限)
  • Claude:API 调用时设置(网页版暂不支持手动调节)
  • API 调用:所有模型都支持在请求参数中设置
  • 第三方 Playground(如 OpenAI Playground、CHY API 公益站):界面有滑块直接拖

Temperature 实战口诀(一句话记住)

💡 三档判断

  • 执行型任务用 0(代码、数据分析、JSON 提取、分类)—— 要稳定可复现
  • 文本生成用 0.7 - 0.9(写作、文案、邮件、报告)—— 要自然但不离谱
  • 无特殊需求不超过 1(超过 1 容易胡言乱语,2 是上限)

完整 API 参数速查表

前面只挑了最常调的 4 个参数。如果你直接调 OpenAI / Claude API,还会看到下面这些:

# OpenAI ChatCompletion 完整参数(中文注释版)
client.chat.completions.create(
    model="gpt-4o",            # 选哪个模型
    messages=[...],            # 对话历史(含 system / user / assistant)
 
    # —— 随机性控制 ——
    temperature=1,             # 多样性 0~2,越大越随机;执行任务=0,写作=0.7~0.9
    top_p=1,                   # 核采样:只考虑概率前 N% 的 token;不建议和 temperature 一起改
    seed=None,                 # 随机种子;指定后 + temperature=0 → 几乎可复现同样输出
 
    # —— 输出形态 ——
    stream=False,              # True = 流式输出(一字一字吐出来);False = 一次性返回
    n=1,                       # 一次返回几条候选回复(n=3 → 拿 3 个版本对比)
    max_tokens=100,            # 单次回复最多吐多少 token,超过截断
 
    # —— 反重复 / 反单调 ——
    presence_penalty=0,        # 出现过的 token 概率降权(鼓励引入新话题)
    frequency_penalty=0,       # 出现越多次降权越大(避免复读机)
    logit_bias={},             # 手工对指定 token 加/减权(强制屏蔽某词、强推某词)
)

新手最容易忽略的 3 个参数

参数经典坑用法
seed同样 prompt 每次输出都不同,怀疑是模型抽风seed 固定 + temperature=0 → 接近可复现
max_tokens让 AI 写长文却被截断估算输出长度时留足额度(中文 1 字 ≈ 2 token)
logit_bias不知道能强制屏蔽某词给违禁词的 token id 设 -100 → 模型几乎不输出它

⚠️ Claude API 参数名略有不同(如 max_tokens 必填、没有 presence_penalty),实际使用看官方文档。


1.4 不同模型的”性格”差异

同一道菜,不同厨师做出来不一样

你对川菜师傅说”做道鱼”,他做水煮鱼;对粤菜师傅说同样的话,他做清蒸鱼。AI 模型也一样——同样的提示词,不同模型给出的结果风格和质量可能差异很大。

主流模型特点速查

模型擅长特点类比
GPT-4o全能、指令跟随听话、稳定,让做什么就做什么靠谱的全能员工
Claude长文本、写作、分析细腻、谨慎,会主动说”我不确定”认真的分析师
Gemini多模态、信息检索与 Google 生态打通,搜索能力强带搜索引擎的助手
DeepSeek推理、编程性价比高,中文理解好高性价比的技术宅
Qwen(通义千问)中文理解、工具调用中文场景表现优秀最懂中文的助手

实操建议

不要只用一个模型。同一个重要任务,至少在 2 个模型上跑一遍对比。

推荐组合:
- 日常使用:GPT-4o 或 Claude(选一个主力)
- 需要创意:Claude(写作质量高)
- 处理长文档:Claude(上下文窗口大)
- 中文场景:DeepSeek 或 Qwen
- 需要联网搜索:Gemini 或带搜索的 GPT
- 预算有限:DeepSeek(API 价格低)

1.5 中英文提示词的选择

一个反直觉的事实

大部分 AI 模型用英文训练数据远多于中文。这意味着:

英文提示词 → 模型更容易匹配到高质量的训练数据 → 某些任务效果更好
中文提示词 → 更自然,但模型可能匹配到的模式少一些

什么时候用英文提示词更好?

✅ 编程相关:代码生成、调试、技术文档
   英文:"Write a Python function to parse JSON with error handling"
   比中文效果更好,因为训练数据中的代码几乎都是英文上下文

✅ 学术/专业领域:论文解读、专业分析
   英文术语更精确,不会因为翻译产生歧义

✅ 指令遵循:复杂的格式要求、多步骤任务
   一些模型对英文指令的遵循度更高

什么时候用中文更好?

✅ 中文写作:文案、邮件、报告、公众号文章
   AI 需要理解中文的语感和表达习惯

✅ 中国特色场景:法律法规、节日文化、本地商业
   "帮我写一段中秋节的祝福语" 用中文更地道

✅ 面向中文读者:最终输出给中国人看的内容
   用中文提示 → 中文输出更自然

混合策略(推荐)

对于重要任务,可以混合使用:

方式1:英文指令 + 中文内容
  "Summarize the following Chinese article in 3 bullet points,
   output in Chinese:
   [粘贴中文文章]"

方式2:中文指令 + 英文关键术语
  "请分析这段代码的 performance bottleneck,
   给出 optimization 建议,用中文回答"

方式3:英文思考 + 中文输出
  "Think through this problem in English,
   then present your answer in Chinese:
   [你的问题]"

1.6 提示词的基本组成

一个完整提示词的四大要素

类比:去餐厅点菜。

你说的话服务员的反应对应的提示词要素
”随便来点吃的”可能上一盘你不喜欢的菜只有指令,其他全缺
”来一份宫保鸡丁,微辣”准确上菜指令 + 输入 + 部分要求
”我花生过敏,想吃辣的鸡肉菜,50以内,用小碗装”推荐最合适的选择四要素齐全
┌──────────────────────────────────────────┐
│              完整的提示词                  │
│                                          │
│  1. 指令(Instruction)— 你要 AI 做什么   │
│     例:翻译、总结、分析、创作...          │
│                                          │
│  2. 上下文(Context)— 背景信息是什么      │
│     例:目标读者、使用场景、前提条件       │
│                                          │
│  3. 输入数据(Input)— 需要处理什么内容    │
│     例:一段文本、一个问题、一组数据       │
│                                          │
│  4. 输出要求(Output)— 你想要什么样的结果 │
│     例:格式、长度、语气、风格             │
│└──────────────────────────────────────────┘

实际例子

只有指令: “翻译这句话” → 翻译什么?翻译成什么语言?❌

四要素齐全:

【指令】请将以下中文翻译成英文
【上下文】这是一封商务邮件的开头,收件人是美国客户
【输入】"今天天气真好,希望你一切顺利"
【输出要求】使用正式的商务英语,语气友好专业

小贴士:不是每次都需要四个要素齐全。简单任务用”指令+输入”就够,复杂任务才需要完整的四要素。


1.7 大模型对”位置”的敏感:Lost in the Middle

一个反直觉的现象

把同样的关键信息放在 prompt 的不同位置,模型答对的概率竟然不一样——这不是玄学,是有论文证明的现象。

Stanford 2023 年论文 “Lost in the Middle: How Language Models Use Long Contexts”arxiv.org/abs/2307.03172)做了一个实验:

任务:给模型 20 段文档 + 1 个问题,让它从文档中找答案
变量:把"含正确答案的那段文档"放在第 1、5、10、15、20 个位置

结果是一条明显的 U 型曲线:

准确率
  75% ┤●  ← 正确文档放在【开头】(第1位) 时最准
      │ \
  65% ┤  \                              ●  ← 放在【结尾】(第20位) 也很准
      │   \                            /
  55% ┤    ●—————●—————●—————●  ← 放在中间(第10~15位),准确率掉到接近 baseline
      │   (closed-book baseline ≈ 56%,即不看文档瞎猜)
  ────┴────┴────┴────┴────┴────┴
       1st   5th  10th  15th  20th
       ↑ 含答案的文档位置 ↑

💡 一句话总结:模型对 prompt 开头结尾的内容更敏感,中间的内容容易被”看漏”

工程上的 3 条启示

启示 1:重要信息放开头或结尾

❌ 不好:
"今天天气真好。请把下文翻译成英文。明天可能会下雨。
[长长的待翻译文本]
我喜欢吃火锅。"
→ 真正的指令"翻译"被淹没在闲聊中间

✅ 好的:
"请把下文翻译成英文:
[长长的待翻译文本]
要求:保持商务正式语气。"
→ 指令在开头,输出要求在结尾,待处理内容夹在中间

启示 2:先定义角色 = 在开头收窄问题域

03_用示例教会AI.md 的角色提示其实就是利用这个原理——把「你是谁、做什么」放在 prompt 最开头,模型从一开始就锁定问题域,减少二义性。

启示 3:长上下文时要”复述”关键约束

如果 prompt 很长(几千 token),核心约束在中间,模型很可能”看漏”。解决办法:

  • 在 prompt 开头列一遍关键约束
  • 中间正文照常写
  • 结尾再复述一遍最重要的几条约束(这就是「三明治防御」也用到的思路)

与本知识库其他章节的关联


1.8 一个常被忽略的真相:提示词不会改变模型参数

你和 AI 的对话是”无状态”的

很多人误以为:「我跟 AI 聊得越久,它就越懂我了。」这是错的。

模型的真实工作方式:
  你发 prompt → 模型读完 → 一次性生成回复 → 模型回到原样

  ❌ 不会因为你聊得多就"记住"你
  ❌ 不会因为你纠正它就"学会"
  ❌ 不会因为你夸它就"变聪明"
  ❌ 不会因为你骂它就"变笨"

模型的参数(也就是它的”大脑”)在训练完之后就冻结了。你的每一次对话都不会改变这些参数。

这条事实的 3 个工程后果

后果 1:多轮对话每次都要把历史全发回去

第 1 轮:你说"我叫小明"        → AI 回复"你好小明"
第 2 轮:你说"我多大了?"       → AI 不知道,因为它"忘了"你叫小明

要让 AI 记得,第 2 轮发出的实际 prompt 是:
  [
    {"role": "user", "content": "我叫小明"},
    {"role": "assistant", "content": "你好小明"},
    {"role": "user", "content": "我多大了?"}
  ]

这就是 token 钱包扁的根源——多轮对话每多一轮,前面所有对话都会作为上下文重新发回去,token 越用越多。

后果 2:你以为”调教好了”的 AI 其实没保留

下次开个新对话,AI 又是一张白纸。要让”调教”持久化,唯一办法是把那段 prompt 保存成模板或写进 system prompt,每次对话都带上。

后果 3:但你的对话历史可能被用去训练下一代模型

虽然当前模型不会因为你而变,但:

  • ChatGPT 的对话默认会被 OpenAI 收集用于改进模型(除非你关闭)
  • 国内某些模型也类似
  • 敏感信息别直接发给在线模型(公司机密、客户数据、密码……)

与上下文窗口的关系

参见 § 1.2 Token 与上下文窗口:多轮对话累积是上下文窗口被吃满的最常见原因。


1.9 网页端调试 prompt 的 4 个建议

如果你是在网页(ChatGPT / Claude.ai / 通义千问)调试 prompt,而不是 API:

建议 1:System Prompt 和 User Prompt 一起写

网页端没有独立的 system prompt 输入框(除了开通付费的 ChatGPT Plus 自定义指令)。直接把系统设定和用户问题合并写在一条消息里

【角色】你是资深 Python 工程师,擅长性能优化。
【风格】回答简洁,先给结论再给原因。
【任务】审查下面这段代码,找出性能瓶颈:

[粘贴代码]

建议 2:最近几轮的对话内容会被自动引用,不用反复粘贴

❌ 笨办法:每次都把整段需求重新粘贴一遍
✅ 聪明的:第 1 条把背景+约束写清楚,后面只发增量内容
   "刚才那段代码再加一个错误处理" ← AI 知道"刚才那段"指什么

建议 3:找到好 prompt 后,开新 Chat 再测一次

历史对话会污染当前对话的”思路”。当你觉得调出来的 prompt 不错,一定要在干净的新 Chat 里再跑一次——

  • 如果效果一致 → 这个 prompt 真的好
  • 如果效果掉了 → 之前的好结果是被历史对话”喂”出来的,prompt 本身还不够强

建议 4:用 ChatALL 等工具同时跑多模型对比

ChatALL 这类聚合工具可以让你一个 prompt 同时发给 ChatGPT / Claude / Gemini / DeepSeek / 通义……一次性看几个模型的回复

适用场景:
- 重要任务的多模型对比(哪个模型最适合这个任务)
- 验证 prompt 的鲁棒性(在所有模型上都好用 = 真的好 prompt)
- 找出某个模型的特定优势(比如 Claude 在长文上的优势)

💡 网页端调试是”快速试错”,API 调试是”参数精调”。两者结合:网页端先确定 prompt 框架 → API 上线时再精调参数。


1.10 动手练习

练习1:Token 感知体验

把同一段话(100字左右)分别用中文和英文发给 AI,要求 AI 估算 Token 数量,感受中英文的差异。

练习2:Temperature 对比实验

用同一个提示词(比如”用一句话形容秋天”),在不同 Temperature 下各跑 3 次,观察输出的变化。

练习3:模型对比

选一个你常用的任务(比如”总结一段新闻”),分别在 2-3 个不同模型上运行,记录各自的输出差异。

练习4:改写模糊提示词

将以下模糊提示词改写为包含四要素的完整版本:

  1. “帮我写个方案”
  2. “总结一下这篇文章”
  3. “写一首诗”

本章小结

✅ AI 是"超级接话王",基于模式匹配工作,不是真的"理解"
✅ Token 是 AI 的计量单位,中文比英文消耗更多 Token
✅ 上下文窗口是 AI 的"书桌",超出限制就会遗忘
✅ Temperature 控制随机性:写代码用低温,搞创意用高温
✅ API 完整参数还有 seed/top_p/n/max_tokens/penalty/logit_bias
✅ 不同模型有不同"性格",重要任务多模型对比
✅ 中英文提示词各有优势,可以混合使用
✅ 完整提示词 = 指令 + 上下文 + 输入数据 + 输出要求
✅ 模型对位置敏感(Lost in the Middle):重要信息放开头或结尾
✅ Prompt 不会改变模型参数:多轮对话靠重传历史,token 钱越聊越多
✅ 网页端调试 4 招:合并 system+user / 复用历史 / 新 Chat 验证 / ChatALL 对比

下一步02_写好第一个提示词.md