ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【三个月 AI Agent 实战学习】Day 1 详细展开:环境搭建、API 初体验与 Token 认知

【三个月 AI Agent 实战学习】Day 1 详细展开:环境搭建、API 初体验与 Token 认知

Day 1:环境搭建、API 初体验与 Token 认知

欢迎来到 AI Agent 学习之旅的第一天!今天的目标非常明确:把工具准备好,跑通第一个大模型 API 调用,并理解 Token 这个概念。这是后续所有项目的地基,请务必亲手敲下每一行代码。


一、今日学习目标

  1. 安装并配置 Python 开发环境(推荐使用虚拟环境)。
  2. 安装openaiSDK 和tiktoken库。
  3. 获取一个国内可用的大模型 API Key(推荐 DeepSeek,便宜且兼容 OpenAI 格式;如有 OpenAI Key 也可)。
  4. 编写并成功运行第一个 API 调用脚本,让模型说“你好”。
  5. 理解什么是 Token,为什么它重要,并能计算中英文文本的 Token 数量差异。
  6. 初步了解 Token 的切分原理(BPE 分词)。

二、详细实现步骤

步骤 1:准备 Python 环境

首先确保你的电脑上安装了 Python 3.9 或以上版本。在终端(命令行)输入以下命令检查:

python--version# 或python3--version

如果未安装,请前往 python.org 下载安装。

为了避免污染全局环境,强烈建议使用虚拟环境。在你想存放项目的目录下执行:

# 创建项目文件夹mkdirai-agent-learningcdai-agent-learning# 创建虚拟环境(Windows 下命令可能为 python -m venv venv)python3-mvenv venv# 激活虚拟环境# macOS / Linux:sourcevenv/bin/activate# Windows (cmd):venv\Scripts\activate# Windows (PowerShell):venv\Scripts\Activate.ps1

激活成功后,命令行前面会出现(venv)标识。

步骤 2:安装必要库

在虚拟环境中执行:

pipinstallopenai tiktoken python-dotenv
  • openai:官方 Python SDK,兼容 OpenAI 及众多国产大模型 API。
  • tiktoken:OpenAI 开源的 Token 计算工具,可用来估算 Token 数量。
  • python-dotenv:用于管理环境变量,避免把密钥硬编码在代码里。
步骤 3:获取 API Key

由于 OpenAI 在国内访问不便且需要外币卡,推荐使用DeepSeek(深度求索)的 API,它对中文支持极好,价格低廉,且完全兼容 OpenAI SDK 格式。

  1. 打开 DeepSeek 开放平台。
  2. 注册/登录账号。
  3. 在左侧菜单找到“API Keys”,点击“创建 API Key”,复制保存(只显示一次!)。
  4. 给账户充值几块钱即可开始测试。

如果你有 OpenAI 官方 Key,也可以直接使用,只需修改base_url和模型名。

步骤 4:配置环境变量

在项目根目录下创建一个名为.env的文件(注意没有后缀),内容如下:

DEEPSEEK_API_KEY=你的_API_Key_粘贴在这里

再创建一个.gitignore文件(如果以后用 Git),添加一行:

.env

这样就不会把密钥提交到代码仓库。

步骤 5:编写第一个 API 调用脚本

新建一个 Python 文件,比如hello_llm.py,写入以下代码:

importosfromdotenvimportload_dotenvfromopenaiimportOpenAI# 加载 .env 文件中的环境变量load_dotenv()# 初始化客户端,指向 DeepSeek 的端点client=OpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"),base_url="https://api.deepseek.com"# 关键!DeepSeek 兼容 OpenAI 格式)# 发起一次对话请求response=client.chat.completions.create(model="deepseek-chat",# DeepSeek 的对话模型名称messages=[{"role":"system","content":"你是一个乐于助人的助手。"},{"role":"user","content":"你好!请用一句话介绍你自己。"}],temperature=0.7,max_tokens=100)# 打印模型的回复print(response.choices[0].message.content)

代码解释:

  • OpenAI(...)初始化客户端,通过base_url参数指定 DeepSeek 的 API 地址,因此后续所有调用都会发送到 DeepSeek 的服务器。
  • client.chat.completions.create是 OpenAI 风格的对话补全接口。
  • messages是一个列表,包含system(设定模型角色)和user(用户输入)消息。
  • temperature控制随机性(0 最确定,1 更随机),max_tokens限制回复长度。

运行脚本:

python hello_llm.py

如果一切顺利,你会看到模型返回的一句自我介绍。恭喜你,你已经迈出了 AI Agent 开发的第一步!

步骤 6:理解 Token 与计算 Token 数量

Token 是大语言模型处理文本的最小单元。模型并不是一个字母一个字母地阅读,而是把文本切分成一个个“词元”(Token)。理解 Token 至关重要,因为:

  • 计费:API 按 Token 数量收费。
  • 上下文窗口:模型一次能处理的总 Token 数有限(例如 DeepSeek-chat 支持 64K),输入+输出都不能超过这个限制。
  • 性能:Token 数量直接影响请求速度和成本。

不同语言、不同模型的分词方式不同。一般来说,英文一个单词约等于 1~2 个 Token,而一个中文字符可能对应 1~2 个甚至更多 Token(取决于具体分词器)。我们来实际计算一下。

新建token_demo.py:

importtiktoken# 使用 cl100k_base 编码(GPT-3.5/4 使用的编码,DeepSeek 也采用类似 BPE 算法,可近似估算)enc=tiktoken.get_encoding("cl100k_base")text_en="Hello, how are you today?"text_zh="你好,今天过得怎么样?"tokens_en=enc.encode(text_en)tokens_zh=enc.encode(text_zh)print(f"英文文本:{text_en}")print(f"Token 数量:{len(tokens_en)}")print(f"Token 列表:{tokens_en}\n")print(f"中文文本:{text_zh}")print(f"Token 数量:{len(tokens_zh)}")print(f"Token 列表:{tokens_zh}\n")# 查看每个 Token 对应的文本片段(解码)print("英文 Token 切分:",[enc.decode([t])fortintokens_en])print("中文 Token 切分:",[enc.decode([t])fortintokens_zh])

运行后,你会看到类似输出:

英文文本: Hello, how are you today? Token 数量: 8 Token 列表: [9906, 11, 1268, 527, 499, 3432, 30] 中文文本: 你好,今天过得怎么样? Token 数量: 12 Token 列表: [57668, 53901, 3922, 17509, 104, 244, 111, 105, 56845, 220, 102, 239] 英文 Token 切分: ['Hello', ',', ' how', ' are', ' you', ' today', '?'] 中文 Token 切分: ['你', '好', ',', '今天', '过得', '怎么', '样', '?']

观察与思考:

  • 英文中,标点符号如逗号、问号可能是单独的 Token,单词被切分得较自然。
  • 中文里,“今天”、“过得”这样的双字词会被合并成一个 Token,而单字“你”、“好”则是单独 Token。这说明分词器会学习常见的词汇组合。
  • 这就是为什么有时候中文文本的 Token 数量比英文多,相同语义下成本可能稍高。
步骤 7:了解 Token 切分原理(BPE 简介)

Token 的切分采用BPE(Byte Pair Encoding)算法。简单理解:

  1. 先将所有文本拆成单个字符(或字节)。
  2. 统计相邻字符对出现的频率,将最高频的组合合并成一个新的“词元”。
  3. 不断重复合并,直到达到预设的词汇表大小(如 GPT 系列约为 10 万个词元)。

因此,像“今天”这种高频出现的词会被合并成一个 Token,而低频词可能被拆成更小的子词甚至字符。这也解释了为什么模型能处理未登录词(OOV)——它能用子词组合表示新词。


三、常见问题与调试

Q1:运行脚本时提示ModuleNotFoundError: No module named 'openai'
→ 说明库未安装成功,请确保在虚拟环境中执行了pip install openai。

Q2:调用 API 时返回 401 或 403 错误
→ 检查.env文件中的 API Key 是否正确,以及账户是否有余额。

Q3:中文输出乱码
→ 确保你的 Python 文件编码为 UTF-8,终端也支持 UTF-8。通常在文件开头加# -*- coding: utf-8 -*-可避免。

Q4:tiktoken对 DeepSeek 的 Token 计算准确吗?
→ 不完全精确,但cl100k_base与 DeepSeek 使用的分词器非常接近,日常估算足够了。DeepSeek 官方也推荐用tiktoken进行预估。


四、今日总结与作业

今天你完成了:

  • ✅ 搭建了干净的 Python 虚拟环境
  • ✅ 成功调用了 DeepSeek 大模型 API
  • ✅ 理解了 Token 的概念及其重要性
  • ✅ 学会了用tiktoken计算 Token 数量
  • ✅ 初步了解了 BPE 分词原理

今日作业(必做):

  1. 修改hello_llm.py,让模型用英语、法语、日语各说一句“你好”。
  2. 尝试设置不同的temperature值(0, 0.5, 1.5),观察模型回答同一问题(例如“讲个笑话”)时的差异。
  3. 自己写一段 100 字左右的中文和英文段落,用tiktoken计算 Token 数,感受差异。

明日预告:我们将深入 Transformer 的核心——自注意力机制(Self-Attention),用直觉理解模型是如何“读懂”上下文的。

加油,有任何问题欢迎随时提问!

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进