Day 06 案例分析:LLM API 调用与理解(重点)
主题对应学习计划 Week 2。今天不急着写完整聊天程序,先把"一次 API 调用到底发生了什么"彻底搞懂。
一、核心心智模型:API 是"无状态"的
最重要、也最反直觉的一点:
LLM API 没有记忆。每次调用都是一张白纸。
你以为 ChatGPT / Claude "记得"你刚才说的话,其实是你的程序每次都把完整历史重新发过去。模型本身什么都不存。
真实类比:点餐 vs 记账
| 像什么 | 解释 | |
|---|---|---|
| ❌ 错误想象 | 跟服务员聊天,他记得你点过什么 | 模型并不"记得" |
| ✅ 实际情况 | 每次点餐都要把"之前点的 + 这次要点的"整张单子重念一遍 | 程序每次重传全部历史 |
这就是为什么 messages 是一个列表(数组),而不是一句话——它就是你每次重念的"整张单子"。
二、案例 1:拆解一次最简单的 Claude API 调用
import anthropic client = anthropic.Anthropic() # 自动读取环境变量 ANTHROPIC_API_KEY response = client.messages.create( model="claude-opus-4-8", # 用哪个模型 max_tokens=1024, # 最多生成多少 token system="你是一个简洁的 Python 助教,回答控制在 3 句话内。", # 角色设定 messages=[ {"role": "user", "content": "什么是列表推导式?"} ], ) # response.content 是一个"块"列表,要判断 type 再取 text for block in response.content: if block.type == "text": print(block.text)逐行看清楚发生了什么
你的程序 Anthropic 服务器 │ │ │ POST /v1/messages │ │ { model, system, messages, ... } │ │ ────────────────────────────────▶ │ │ │ 模型读取 system + messages │