Part 4 · 用代码调用 AI

把假 AI 换成真 AI

● SDK / Streaming / Temperature / System Prompt ● 心流产出:写一个命令行 AI 聊天工具 ● Part 4 / 7

> 本篇定位:把 Part 3 的假 AI 替换为真实大模型。学完本篇,你能写出第一个真正能用的 AI 应用。 > 阅读时长:25 分钟 > 心流产出:一个命令行 AI 聊天工具,支持流式输出与角色设定。


一、四个第二层概念

#概念重要度一句话
6SDK⭐⭐⭐⭐官方封装的代码库
7Streaming⭐⭐⭐逐字实时输出
8Temperature⭐⭐⭐控制输出随机性
9System 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 包安装命令
OpenAIopenaipip install openai
Anthropicanthropicpip install anthropic
DeepSeekopenai(兼容)pip install openai
智谱 GLMzhipuaipip install zhipuai
通义千问dashscopepip 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 个特性:

  1. 多轮对话:用 messages 列表累积历史,实现上下文。
  2. 角色切换:在 System Prompt 里预设 3 种角色(导师/翻译/段子手),让用户切换。
  3. 错误处理:捕获 openai.APIError,打印友好提示而不是崩溃。

八、进入下一篇

真 AI 已能跑通。进入 Part 5 · 进阶应用,我们探索让 AI 懂你的私有数据的范式:Embedding、向量数据库、RAG。