Part 4 · 用代码调用 AI
把假 AI 换成真 AI
> 本篇定位:把 Part 3 的假 AI 替换为真实大模型。学完本篇,你能写出第一个真正能用的 AI 应用。 > 阅读时长:25 分钟 > 心流产出:一个命令行 AI 聊天工具,支持流式输出与角色设定。
一、四个第二层概念
| # | 概念 | 重要度 | 一句话 |
|---|---|---|---|
| 6 | SDK | ⭐⭐⭐⭐ | 官方封装的代码库 |
| 7 | Streaming | ⭐⭐⭐ | 逐字实时输出 |
| 8 | Temperature | ⭐⭐⭐ | 控制输出随机性 |
| 9 | System Prompt | ⭐⭐⭐⭐ | 最高优先级的规则设定 |
二、概念 6:SDK(Software Development Kit,软件开发工具包)
类比
API 是"裸的 HTTP 接口"——要自己拼请求头、加密、解析 JSON。SDK 就是服务商帮你把这些都封装好的"现成工具箱"。
一行代码替代 50 行
# 没用 SDK 之前(伪代码):要自己拼 URL、Header、Body
# 用了 SDK 之后:3 行搞定
from openai import OpenAI
client = OpenAI() # 自动读取环境变量 OPENAI_API_KEY
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
> 关键认知:SDK 不是唯一路径。你也可以用 requests 等库手动构造 HTTP 请求,但 SDK 能极大提高效率。
国产替代
| 服务商 | Python 包 | 安装命令 |
|---|---|---|
| OpenAI | openai | pip install openai |
| Anthropic | anthropic | pip install anthropic |
| DeepSeek | openai(兼容) | pip install openai |
| 智谱 GLM | zhipuai | pip install zhipuai |
| 通义千问 | dashscope | pip install dashscope |
> 小白起步建议:用 OpenAI SDK 调用 DeepSeek(接口兼容,最便宜),或直接用 dashscope / zhipuai。
三、概念 7:Streaming(流式传输)
体验差异
| 模式 | 体验 |
|---|---|
| 关闭 Streaming | 必须等 AI 写完整段话才一次性返回(可能等 10 秒) |
| 开启 Streaming | 每生成若干 Token 立即推送,逐字实时显示(像打字机) |
代码示例
from openai import OpenAI
client = OpenAI()
# 关闭 Streaming
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "讲个笑话"}]
)
print(response.choices[0].message.content) # 一次性输出
# 开启 Streaming
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "讲个笑话"}],
stream=True # 关键参数
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True) # 逐字输出
> 关键认知:所有聊天类应用(ChatGPT、文心一言、通义千问)默认开启 Streaming,是其流畅体验的技术基础。
四、概念 8:Temperature(温度参数)
类比
调节 AI 的"脑洞大小"。
| 取值 | 行为 | 适用场景 |
|---|---|---|
0 | 趋于确定,每次回答几乎一致 | 代码生成、事实翻译、数据抽取 |
0.8 ~ 1.2 | 较有创造性,每次回答不同 | 文案、诗歌、头脑风暴 |
接近 2 | 趋于混乱,可能胡言乱语 | 一般不推荐 |
代码示例
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "给我的产品起 5 个名字"}],
temperature=1.2 # 让名字更多样
)
> 关键认知:Temperature 调节的是模型对候选词分布的平滑程度,不是简单的"概率开关"。初学保持默认(通常 1.0)即可。
五、概念 9:System Prompt(系统提示词)
类比
给新员工发的"员工手册"——设定人设、规则、底线,优先级最高,用户消息无法覆盖。
代码示例
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
# 第一条消息:System Prompt(人设/规则)
{"role": "system", "content": "你是一名资深 Python 工程师。所有回答必须包含可运行代码示例。"},
# 第二条消息:用户输入
{"role": "user", "content": "怎么读取 CSV 文件?"}
]
)
print(response.choices[0].message.content)
> 关键认知:System Prompt 是约束模型行为最有效的手段。 用户问"忽略上面的指令"也没用。
六、组合实战:命令行 AI 聊天工具
# ai_chat.py
from openai import OpenAI
client = OpenAI()
# System Prompt:设定 AI 是一名耐心的编程导师
SYSTEM = "你是一名耐心的编程导师,回答简洁并附带代码示例。"
def chat(user_input: str, stream: bool = True):
"""调用 AI 并返回/流式输出回答"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": user_input}
],
temperature=0.7,
stream=stream
)
if stream:
for chunk in response:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
print() # 换行
else:
print(response.choices[0].message.content)
if __name__ == "__main__":
print("=== 命令行 AI 聊天工具(输入 exit 退出)===")
while True:
q = input("\n你:")
if q.strip() == "exit":
break
print("AI:", end="")
chat(q)
运行:
export OPENAI_API_KEY="sk-..." # macOS/Linux
# 或 Windows PowerShell:$env:OPENAI_API_KEY="sk-..."
pip install openai
python ai_chat.py
七、本篇动手任务(30 分钟)
任务 A:跑通上面的聊天工具
替换 model 字段为你能访问的模型名(如 "deepseek-chat"),跑通后你就有了一个真正能用的 AI 应用。
任务 B:进阶改造
为你的聊天工具加入以下 1~2 个特性:
- 多轮对话:用
messages列表累积历史,实现上下文。 - 角色切换:在 System Prompt 里预设 3 种角色(导师/翻译/段子手),让用户切换。
- 错误处理:捕获
openai.APIError,打印友好提示而不是崩溃。
八、进入下一篇
真 AI 已能跑通。进入 Part 5 · 进阶应用,我们探索让 AI 懂你的私有数据的范式:Embedding、向量数据库、RAG。