s01 - 调通 API
模型本身只是一段文本生成器。你发一句,它回一句,然后就没有然后了。 这一章的目标只有一个:让代码替你跟模型说上话。
这一章要解决什么问题
你可能已经用过 ChatGPT、Claude、豆包。在那些产品里,你打字,模型回复,看起来很简单。
但那些产品背后有一整套系统在工作:接收你的输入、调用模型 API、渲染输出、管理历史。你现在要做的,是从零搭起这套系统的第一步。
先让代码能跟模型对话。
不是在网页上打字,不是在终端里粘贴——是用 Python 代码,发一个请求,拿到回复,打印出来。
为什么用 DeepSeek
便宜。百万 token 约 1 块钱。学习阶段不需要烧钱。
而且 DeepSeek 兼容 OpenAI API 格式,意味着你写的代码换个 API key 就能跑 GPT、Claude(通过 OpenAI 兼容接口)。不用学多套 SDK。
准备
- 注册 DeepSeek 开放平台,拿到 API Key
- 设置环境变量:
export DEEPSEEK_API_KEY="sk-xxxxxxxx"- 安装 SDK:
pip install openai代码
新建 agent.py:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": "用一句话解释什么是 Agent。"},
],
)
print(response.choices[0].message.content)运行:
python agent.py你会看到类似这样的输出:
Agent 是一个能感知环境、做出决策并采取行动来完成目标的自主系统。发生了什么
拆开看,代码做了三件事:
1. 建立连接
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)创建一个客户端,告诉它两件事:用哪个 key,连哪个服务器。base_url 指向 DeepSeek,换成 OpenAI 的地址就能连 GPT。
2. 发送请求
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": "用一句话解释什么是 Agent。"},
],
)messages 是一个列表,里面是对话历史。现在只有一条用户消息。每条消息有两个字段:
role:谁说的。"user"是你,"assistant"是模型content:说了什么
3. 读取回复
print(response.choices[0].message.content)模型的回复藏在 response.choices[0].message.content 里。结构有点深,但记住这个路径就行。
试着改改
改一下 messages 里的内容,看看模型回复怎么变:
messages=[
{"role": "user", "content": "写一个 Python 函数,判断一个数是不是质数。"},
]messages=[
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮你的?"},
{"role": "user", "content": "今天天气怎么样?"},
]第二个例子你会发现,你可以往 messages 里塞多条消息,模拟一段已有的对话。模型会基于整个历史来回复。
这就是多轮对话的基础——但这是下一章的事。
教学边界
这一章只做一件事:让代码跟模型说上话。
不涉及:
- 循环(模型只回复一次就结束)
- 工具(模型只能说话,不能做事)
- 流式输出(一次性拿到完整回复)
- 界面(纯终端打印)
这些都在后面的章节里。现在你只需要记住一件事:
messages列表就是你跟模型之间的全部通信方式。你往里写什么,模型就看到什么。
一句话记住
Agent 的起点,是用代码把消息发给模型、拿到回复。不是在聊天框里打字。