国庆节10月1日
--


用 pip 安装 openai 库并调用 DeepSeek:客户端创建、请求参数、返回值解析的完整流程

| 名称 | 作用 |
|---|---|
| PyPI | 全称为 Python Package Index,是由 Python 官方和社区共同维护的 Python 第三方软件包的官方仓库 |
| pip | Python 官方提供的 Python 包的管理工具,提供对 Python 包的查找、下载、安装、卸载等功能 |
time、math、random、csv、re 等是 Python 自带的标准库,不用安装;而 openai、requests、numpy、pandas、streamlit 等是第三方库,需要单独安装。
| 操作 | 命令 |
|---|---|
| 安装软件包(最新版本) | pip install openai |
| 安装软件包(指定版本) | pip install openai==2.13.0 |
| 卸载软件包 | pip uninstall openai |
| 列出已安装的包 | pip list |
| 查看包详情 | pip show openai |
指定版本必须用双等号 ==。写成单个 = 会直接报错:ERROR: Invalid requirement: 'openai=2.13.0' ... Hint: = is not a valid operator. Did you mean == ?(课程 PPT 上写的是单等号,是笔误,别照着抄)。
DeepSeek 的 API 兼容 OpenAI 的接口格式,所以可以直接用 openai 这个第三方库来调用,只需要把 base_url 改成 DeepSeek 的地址:
| 参数 | 值 |
|---|---|
base_url | https://api.deepseek.com |
model | deepseek-chat(非思考模式)/ deepseek-reasoner(思考模式) |
api_key | 在 DeepSeek 开放平台创建的 API Key |
官方文档”首次调用 API”页给出的就是这三个值:

官方文档说明:出于与 OpenAI 兼容考虑,base_url 也可以设置成 https://api.deepseek.com/v1 来使用,但此处的 v1 与模型版本无关。
1import os2from openai import OpenAI3
4# 创建与AI大模型交互的客户端对象 (DEEPSEEK_API_KEY 环境变量的名字, 值就是DeepSeek的API_KEY的)5client = OpenAI(api_key=os.environ.get('DEEPSEEK_API_KEY'), base_url="https://api.deepseek.com")6
7# 与AI大模型进行交互(参数)8response = client.chat.completions.create(9 model="deepseek-chat",10 messages=[11 {"role": "system", "content": "你是一名非常可爱的AI助理, 你的名字叫小甜甜, 请你使用温柔可爱的语气回答用户的问题"},12 {"role": "user", "content": "你是谁, 你能帮我做什么?"},13 ],14 stream=False15)16
17# 输出大模型返回的结果18print(response.choices[0].message.content)| 代码 | 说明 |
|---|---|
os.environ.get('DEEPSEEK_API_KEY') | 从环境变量读 API Key,避免把密钥写死在代码里 |
OpenAI(api_key=..., base_url=...) | 创建客户端对象,base_url 决定请求发给谁 |
client.chat.completions.create(...) | 发起一次对话请求(对应 HTTP POST /chat/completions) |
stream=False | 非流式:一次性拿到完整回答 |
response.choices[0].message.content | 取出模型回复的文本。choices 是列表,取第一个候选,再取 message.content |
环境变量的设置方式(Windows PowerShell):$env:DEEPSEEK_API_KEY="sk-xxxx";CMD:set DEEPSEEK_API_KEY=sk-xxxx。在 PyCharm 里也可以直接配置到运行配置的 Environment variables 中。
调用可能失败(网络断开、余额不足、Key 失效)。写正式程序时建议用 try...except 包住,例如 except Exception as e: print("调用失败:", e),避免程序直接崩溃。
| 想解决 | 看 |
|---|---|
| 让回复逐字蹦出来(打字机效果) | 实战-AI智能伴侣-流式输出 |
| 让 AI 记住之前的对话 | 实战-AI智能伴侣-会话记忆 |
| 让 AI 按指定身份和风格回答 | 提示词工程 |
pip install openai==2.13.0(双等号,单个 = 会报错)pip uninstall openai;列出已安装:pip list;查看详情:pip show openaiopenai 这个库调用client = OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")client.chat.completions.create(model="deepseek-chat", messages=[...], stream=False)response.choices[0].message.content2-1 最小调用程序 写一个程序:从环境变量读 API Key,向 deepseek-chat 提一个问题,把回复打印出来。
一级 · 思路:先建”打电话的客户端”,再用它发消息,最后从返回结果里挖出文本
二级 · 方法:OpenAI(...) / client.chat.completions.create(...) / response.choices[0].message.content
三级 · 骨架:client = OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")
1import os2from openai import OpenAI3
4client = OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")5
6response = client.chat.completions.create(7 model="deepseek-chat",8 messages=[{"role": "user", "content": "你是谁, 你能帮我做什么?"}],9 stream=False,10)11
12print(response.choices[0].message.content)2-2 流式输出 把上面的调用改成流式,把回复逐段打印到控制台(不是一次性打印)。
一级 · 思路:让接口一段一段给,而不是等全部生成完
二级 · 方法:stream=True + for chunk in response:
三级 · 骨架:if chunk.choices[0].____.content is not None:
1import os2from openai import OpenAI3
4client = OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")5
6response = client.chat.completions.create(7 model="deepseek-chat",8 messages=[{"role": "user", "content": "用一句话介绍 Python"}],9 stream=True,10)11
12for chunk in response:13 if chunk.choices[0].delta.content is not None:14 print(chunk.choices[0].delta.content, end="", flush=True)15print()2-3 设定 AI 的身份 给 AI 设定身份”你是一名非常可爱的AI助理,名字叫小甜甜”,再问”你是谁”,对比不设身份时的回答有什么不同。
一级 · 思路:身份写在 messages 的第一条,角色不是 user
二级 · 方法:{"role": "system", "content": "..."}
三级 · 骨架:messages=[{"role": "____", "content": 身份}, {"role": "user", "content": "你是谁"}]
1import os2from openai import OpenAI3
4client = OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")5
6system_prompt = "你是一名非常可爱的AI助理, 你的名字叫小甜甜, 请你使用温柔可爱的语气回答用户的问题"7
8response = client.chat.completions.create(9 model="deepseek-chat",10 messages=[11 {"role": "system", "content": system_prompt},12 {"role": "user", "content": "你是谁"},13 ],14 stream=False,15)16
17print(response.choices[0].message.content)18# 对比实验:把 system 那条删掉再跑一次,回复就变成通用的助手口吻如果你喜欢,那么欢迎来到我的世界!
了解更多暂未播放



"生活不是等待暴风雨过去,而是学会在雨中跳舞。"—— 塞维涅夫人


