五分钟体验你的第一个 DeepSeek 回合别急着读理论先让模型对你开口说第一句话。这一节我直接给你一个能一键运行的 uv 单文件五分钟内deepseek-flash 会亲口回你一句你好。那种实感比听十节理论都值钱。本文导航准备两条命令搞定环境拷贝即跑首个单文件跑起来第一回合现场拆解这五秒发生了什么留痕让每一次调用都留下账本踩坑速查小结下节预告前八篇我一直在给你搭认知框架Agent 是什么、LLM 有什么缺陷、Harness 怎么补、六层架构怎么堆。铺垫够了是时候让你亲手摸一次真的了。这一节我不讲高端理论就干一件事让你在五分钟内跑通 DeepSeek 的第一个回合。而且我特意把它做成了拷贝即跑的单文件——不需要会任何框架不需要项目结构就一个.py。不瞒你说我还记得自己第一次看到大模型回话时的震撼——它真的懂我在说什么。那种感觉就是驱动一个人把 Agent 这条路走下去的最初火苗。我现在把这个火苗递给你。准备两条命令搞定环境未来整门课我们都按五条铁律来uv 管理 Python 3.12、开箱即用的依赖。先花十秒准备# 1) 用国内镜像装 uv如果还没装过# macOS/Linuxcurl-LsSfhttps://astral.sh/uv/install.sh|sh# Windows PowerShell# powershell -ExecutionPolicy ByPass -c irm https://astral.sh/uv/install.sh | iex# 2) 初始化项目并锁定 Python 3.12uv init first_turncdfirst_turn uv python pin3.12然后装我们这一节唯一需要的依赖openai客户端uvaddopenaiopenai这个包虽然是OpenAI家的名字但它早就成了事实标准客户端——DeepSeek 官方文档都推荐用它来调自己的 API因为 DeepSeek API 完全兼容 OpenAI 协议。这就是第 3 章第 10 节要细讲的兼容生态现在你只要知道用它没错。拷贝即跑首个单文件在first_turn目录里新建first_turn.py把下面整段拷进去 五分钟跑通 DeepSeek 第一回合。 前置在 https://platform.deepseek.com 拿到 API Key或填入已有 Key。 运行uv run python first_turn.py importosimportsysfromopenaiimportOpenAI BASE_URLhttps://api.deepseek.comMODELdeepseek-flashdefmain()-None:keyos.getenv(DEEPSEEK_API_KEY)ifnotkey:sys.exit(请先设置环境变量 DEEPSEEK_API_KEY或在下方硬编码但别提交到仓库)# 兼容协议base_url 指向 DeepSeek其余用法和 OpenAI 完全一致clientOpenAI(base_urlBASE_URL,api_keykey)# 一个最朴素的回合system 定义角色user 提问respclient.chat.completions.create(modelMODEL,messages[{role:system,content:你是一个话痨但友好的 Python 导师。},{role:user,content:用一句话告诉我什么是 Agent},],)replyresp.choices[0].message.contentprint(DeepSeek 回答)print(reply)print(f\n本次用了输入{resp.usage.prompt_tokens}tokenf输出{resp.usage.completion_tokens}token)if__name____main__:main()跑起来第一回合现场设置 Key 并运行Windows PowerShell$env:DEEPSEEK_API_KEYsk-你的keyuv run python first_turn.py你会看到类似下面这样的输出模型具体怎么拽随它心情但都会是一个完整回答DeepSeek 回答 Agent 就是一个有手有脚的大模型——它不止能跟你聊天 还能按你的指令去调用工具、读写文件、执行代码替你真正把事办成。 它 会思考的大脑 会干活的躯干。 本次用了输入 28 token输出 45 token就这五秒你完成了第一个回合。别看简单这一回合背后其实已经悄悄发生了六层架构里第一层模型接入的动作发请求、模型推理、流式/整包返回、token 计量。拆解这五秒发生了什么把刚才那一瞬间放大它其实走了一条这样的链路deepseek-flash 模型DeepSeek 网关openai 客户端你的代码deepseek-flash 模型DeepSeek 网关openai 客户端你的代码组装 messages modelPOST /chat/completions (OpenAI 兼容)把请求交给推理引擎生成回答 usage(token数)200 JSON 响应resp.choices[0].message.content注意那条横穿全图的OpenAI 兼容协议——你的代码从头到尾用的都是 OpenAI 的 API 形式只是base_url指向了 DeepSeek。这意味着后面的课程里想换模型Qwen、GLM、本地 vLLM只改base_url和api_key业务代码一行不动。这就是一个事实标准统治世界的威力第 10 节细讲。留痕让每一次调用都留下账本你注意到第一回合里有个resp.usage吗它记录了本次的 token 数。这在调着玩时不起眼但一旦你开始跑 Agent、一次任务几十次调用、真金白银地烧钱时你必须要知道钱花哪了、花得值不值。这就是贯穿全课的五条铁律里最要紧的一条每次调用留痕。现在先给你种下这颗种子——给上面代码加一层最简单的记录importdatetimedeflog_call(base_url,model,usage,start,end):cost_ms(end-start).total_seconds()*1000print(f[留痕]{base_url}| 模型{model}| 输入{usage.prompt_tokens}f输出{usage.completion_tokens}token | 耗时{cost_ms:.0f}ms)# 调用处改成startdatetime.datetime.now()respclient.chat.completions.create(...)log_call(BASE_URL,MODEL,resp.usage,start,datetime.datetime.now())将来第 7 章你要做的就是把print升级成按月分割的日志 落盘 退出时汇总但现在先记住这个动作本身——每调一次记一笔账。这习惯越早养成越值钱。踩坑速查第一次跑大概率不会一次全绿我把最常见的三个坑提前给你排掉症状原因解法401 UnauthorizedKey 没设对 / 环境变量没生效检查 Key 别带空格Win 上重开终端让$env:生效404或model not found模型名写错本课程统一用deepseek-flashV4.1-FlashSIGKILL/ 超时网络到 api.deepseek.com 不通检查代理/防火墙client里把timeout调大点还有一个安全提醒别把 Key 硬编码在代码里并提交到 Git。用环境变量或者.env文件后面课程会教这是底线。我见过太多人把 Key 公开在 GitHub 上被白嫖烧钱的。小结五分钟就能跑通 DeepSeek 第一回合uv 两条命令 一个单文件就是全部。OpenAI 兼容协议的关键SDK 形式不变只改base_url和api_key就能换模型。resp.usage是留痕的起点每次调用都该记一笔账这是五条铁律的核心。环境搭建只是点到为止完整的企业级环境配置依赖锁定、.env管理、日志框架放到第 26 节细讲现在别陷进去。踩坑三件套记住401 查 Key、404 查模型名、超时查网络。下节预告现在你已经亲手和 DeepSeek 说过话了也亲眼看到了它背后那条 OpenAI 兼容的链路。下一节进入第 3 章我们正式从调 API往造系统迈——OpenAI 兼容协议一个事实标准如何统治世界。为什么全世界的大模型都愿意跪着兼容 OpenAI兼容协议除了换 base_url还意味着什么第 10 节我给你讲透这个事实标准的前世今生和工程意义。如果觉得本文对你有帮助欢迎点赞、收藏、关注三连本系列持续更新中80篇硬核实战关注不迷路~