这篇笔记从 Jupyter 环境开始,把 requests 原生调用、OpenAI SDK、.env 密钥管理、stream 流式输出一次讲清。
01 Jupyter 里的魔法命令
在 Jupyter 中,%pip 是魔法命令,它只在当前 Kernel 对应的虚拟环境里执行,比直接 !pip 更不容易装错环境。
# 查看当前环境安装了哪些包%pip list
# 在当前 Kernel 环境安装依赖%pip install requests%pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple%pip install python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple
02 最原始的方式:requests 调 API
不依赖任何 SDK,直接用 HTTP 请求也能调大模型。
# 导入 requests 库,用于发送 HTTP 请求import requests# 导入 json 库,用于将 Python 字典转换为 JSON 字符串import json
# DeepSeek 聊天补全接口的 URLurl = "https://api.deepseek.com/chat/completions"# API Key,实际使用时请替换为你自己的密钥,不要泄露api_key = "你的API_KEY"
# 构建请求体(payload),并将其序列化为 JSON 字符串payload = json.dumps({ # messages 列表包含对话历史,每条消息有 role 和 content "messages": [ { # system 角色用于设定助手的背景或行为 "content": "You are a helpful assistant", "role": "system" }, { # user 角色代表用户发出的问题 "content": "2010年NBA冠军是谁", "role": "user" } ], # 指定要使用的模型名称 "model": "deepseek-flash", # 限制生成的最大 token 数量 "max_tokens": 1024, # 温度参数,控制输出的随机性,0.3 表示较为确定 "temperature": 0.3, # stream=False 表示一次性返回完整结果,而不是流式分块返回 "stream": False})
# 构建 HTTP 请求头headers = { # 告诉服务器请求体是 JSON 格式 "Content-Type": "application/json", # 告诉服务器期望响应是 JSON 格式 "Accept": "application/json", # 使用 Bearer Token 方式进行身份认证 "Authorization": f"Bearer {api_key}"}
# 使用 requests.post 发送 POST 请求,传入 URL、请求头和请求体response = requests.post(url, headers=headers, data=payload)
# 检查 HTTP 响应状态码是否为 200(成功)if response.status_code == 200: # 将响应内容解析为 Python 字典 data = response.json() # 从响应结构中提取模型生成的回复内容并打印 # 路径:choices 列表 -> 第一个元素 -> message 字典 -> content 字段 print(data["choices"][0]["message"]["content"])
几个关键参数:
messages:对话消息列表,system 设定角色,user 是用户问题。
model:模型名,以官方文档为准。
max_tokens:一次最多生成多少 token。
temperature:随机性,0 到 2,越大越发散。
top_p:另一种控制随机性的方式,通常和 temperature 二选一。
stream:False 一次性返回,True 流式返回。
thinking、reasoning_effort、response_format、tools 等:按需使用。
03 更推荐日常使用:OpenAI SDK
DeepSeek 兼容 OpenAI SDK 写法,日常开发更推荐用 SDK,代码更简洁。
from openai import OpenAI
client = OpenAI( api_key="你的API_KEY", base_url="https://api.deepseek.com")
response = client.chat.completions.create( model="deepseek-flash", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": "姚明是谁"}, ], max_tokens=1024, temperature=0.3, stream=False)
print(response.choices[0].message.content)
04 密钥别写死在代码里:.env + python-dotenv
API Key 直接写在代码里,一旦截图、发群、传 Git,就等于泄露。
推荐用 python-dotenv 管理密钥。
在 Jupyter 中可以这样创建 .env 文件:
%%writefile .envOPENAI_API_KEY=你的API_KEY
.env 不要提交到 Git。
05 流式输出:像 ChatGPT 一样逐字打印
把 stream 改成 True,响应就变成可迭代对象。
from openai import OpenAIfrom dotenv import load_dotenvload_dotenv()# for backward compatibility, you can still use `https://api.deepseek.com/v1` as `base_url`.client = OpenAI( base_url="https://api.deepseek.com")response = client.chat.completions.create( model="deepseek-flash", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": "天空为什么是蓝色的"}, ], max_tokens=1024, temperature=0.3, stream=True)
for chunk in response: if not chunk.choices: continue
content = chunk.choices[0].delta.content
if content is not None: print(content, end="")
stream=True 时,返回的是一段一段的增量内容。
一句话总结
先用 requests 理解 HTTP 调用,再用 OpenAI SDK 提升开发效率;用 .env 管好密钥,用 stream=True 做好流式体验。
以上就是“Python 调大模型 API 入门:requests、OpenAI SDK、.env 与流式输出!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14560/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料