Skip to content

s01 - 调通 API

模型本身只是一段文本生成器。你发一句,它回一句,然后就没有然后了。 这一章的目标只有一个:让代码替你跟模型说上话。

这一章要解决什么问题

你可能已经用过 ChatGPT、Claude、豆包。在那些产品里,你打字,模型回复,看起来很简单。

但那些产品背后有一整套系统在工作:接收你的输入、调用模型 API、渲染输出、管理历史。你现在要做的,是从零搭起这套系统的第一步。

先让代码能跟模型对话。

不是在网页上打字,不是在终端里粘贴——是用 Python 代码,发一个请求,拿到回复,打印出来。

为什么用 DeepSeek

便宜。百万 token 约 1 块钱。学习阶段不需要烧钱。

而且 DeepSeek 兼容 OpenAI API 格式,意味着你写的代码换个 API key 就能跑 GPT、Claude(通过 OpenAI 兼容接口)。不用学多套 SDK。

准备

  1. 注册 DeepSeek 开放平台,拿到 API Key
  2. 设置环境变量:
bash
export DEEPSEEK_API_KEY="sk-xxxxxxxx"
  1. 安装 SDK:
bash
pip install openai

代码

新建 agent.py

python
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)

运行:

bash
python agent.py

你会看到类似这样的输出:

Agent 是一个能感知环境、做出决策并采取行动来完成目标的自主系统。

发生了什么

拆开看,代码做了三件事:

1. 建立连接

python
client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)

创建一个客户端,告诉它两件事:用哪个 key,连哪个服务器。base_url 指向 DeepSeek,换成 OpenAI 的地址就能连 GPT。

2. 发送请求

python
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "用一句话解释什么是 Agent。"},
    ],
)

messages 是一个列表,里面是对话历史。现在只有一条用户消息。每条消息有两个字段:

  • role:谁说的。"user" 是你,"assistant" 是模型
  • content:说了什么

3. 读取回复

python
print(response.choices[0].message.content)

模型的回复藏在 response.choices[0].message.content 里。结构有点深,但记住这个路径就行。

试着改改

改一下 messages 里的内容,看看模型回复怎么变:

python
messages=[
    {"role": "user", "content": "写一个 Python 函数,判断一个数是不是质数。"},
]
python
messages=[
    {"role": "user", "content": "你好"},
    {"role": "assistant", "content": "你好!有什么可以帮你的?"},
    {"role": "user", "content": "今天天气怎么样?"},
]

第二个例子你会发现,你可以往 messages 里塞多条消息,模拟一段已有的对话。模型会基于整个历史来回复。

这就是多轮对话的基础——但这是下一章的事。

教学边界

这一章只做一件事:让代码跟模型说上话。

不涉及:

  • 循环(模型只回复一次就结束)
  • 工具(模型只能说话,不能做事)
  • 流式输出(一次性拿到完整回复)
  • 界面(纯终端打印)

这些都在后面的章节里。现在你只需要记住一件事:

messages 列表就是你跟模型之间的全部通信方式。你往里写什么,模型就看到什么。

一句话记住

Agent 的起点,是用代码把消息发给模型、拿到回复。不是在聊天框里打字。