零基础玩转 ChatGPT API(Python 版):从密钥到调参一条龙
作者:API传播员 · 2025-10-05 · 阅读时间:5分钟
本文详细介绍了如何使用Python调用ChatGPT API,包括API密钥获取、Python库安装、基本调用步骤以及高级功能如连续对话、令牌控制、多响应生成和温度参数调整。重点讲解了gpt-3.5-turbo模型的特点和优势,帮助开发者高效实现自然语言处理任务。
文章目录
一. 价格屠夫上线:gpt-3.5-turbo 真香警告 🔥
- 每 1k tokens 0.002 USD,成本仅为
text-davinci-003的 1/10 💸 - 1 个汉字 ≈ 0.5 tokens,100 万字小说翻译不到 20 元 🤑
- 与网页版同权重,即时同步新训练数据 🌐
定 KPI 时,用「开发任务管理系统KPI」30 秒生成“接口 95th 延迟 ≤ 800 ms、问答准确率 ≥ 95%”等可衡量指标,绩效一目了然 📊!
二. 5 分钟环境搭建 🛠️
pip install openai==0.27.0 tiktoken
import openai, os
openai.api_key = os.getenv("OPENAI_API_KEY") # 从 https://platform.openai.com/account/api-keys 获取
写完先用「代码审查助手」扫描,确保密钥不在仓库硬编码;再用「代码优化」把同步阻塞换成 aiohttp 异步,并发提升 5 倍 🚀!
三. 最小可运行示例:一句话问答 🧪
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用 emoji 写一首关于春天的短诗"}
]
)
print(response.choices[0].message.content)
输出:
🌸🌱🌞 春风拂面花自开,燕子归来柳色新~
四. 连续对话:自己维护上下文 🗣️
API 本身无记忆,需要把历史 messages 反复传回去。
messages = [
{"role": "system", "content": "你是资深理财顾问"},
{"role": "user", "content": "如何每月存 2k 实现年化 8%?"}
]
# 第一轮
resp = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
assistant_say = resp.choices[0].message.content
print(assistant_say)
# 第二轮
messages.append({"role": "assistant", "content": assistant_say})
messages.append({"role": "user", "content": "如果市场下跌 20% 怎么办?"})
resp = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
print(resp.choices[0].message.content)
对话轮数增多后,tokens 用量暴涨。用 tiktoken 实时计算,接近模型上限就滑动窗口截断 ✂️:
import tiktoken
def num_tokens_from_messages(msgs, model="gpt-3.5-turbo"):
enc = tiktoken.encoding_for_model(model)
return sum(len(enc.encode(m["content"])) for m in msgs)
五. 核心参数调优秘籍 🎛️
| 参数 | 作用 | 示例 |
|---|---|---|
max_tokens |
控制输出最长长度 | max_tokens=256 节省费用 |
temperature |
0=保守可预测,2=天马行空 🎨 | 客服机器人设 0.2,创意写作设 1.5 |
n |
一次返回 n 条候选 | n=3 做 A/B 精选 |
stop |
遇到指定字符串立刻停 | stop=["\n"] 只拿第一行 |
快速对比温度效果:
for t in [0, 1, 2]:
r = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "写一条关于 Python 的推文"}],
temperature=t
)
print(f"T={t}: {r.choices[0].message.content}\n")
调参完成后,用「代码文档生成器」一键生成函数说明,团队直接复制粘贴 📚!
六. 异步 + 流式输出:打字机效果 ✨
import asyncio, aiohttp, json
async def stream_chat():
url = "https://api.openai.com/v1/chat/completions"
headers = {"Authorization": f"Bearer {os.getenv('OPENAI_API_KEY')}"}
payload = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "讲个冷笑话"}],
"stream": True
}
async with aiohttp.ClientSession() as session:
async with session.post(url, headers=headers, json=payload) as resp:
async for line in resp.content:
line = line.decode('utf-8').strip()
if line.startswith("data:"):
data = line[5:]
if data == "[DONE]": break
print(json.loads(data)["choices"][0]["delta"].get("content", ""), end="")
asyncio.run(stream_chat())
流式拉取期间,用「代码审查助手」检查异常中断处理,再用「代码优化」把 aiohttp 连接池调到 200,高并发也不掉线 🔥!
七. 总结 & Next Step 🏁
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- 函数调用与工具使用入门 – Apideck
- 什么是API测试?其优势、类型及最佳实践
- API 安全策略和基础指南
- 如何在Python、PHP、Ruby中使用今日头条热搜榜API
- 如何获取文心一言 API Key 密钥(分步指南)
- 2025 ComfyUI 稳定扩散流水线|拖拽式节点化+API 集成教程
- Flask-Limiter:为 API 添加访问速率限制的 Python 扩展!
- OpenAI o1原理逆向工程图解
- 性别预测API:如何让名字背后的性别信息一目了然?
- 小红书AI文章风格转换:违禁词替换与内容优化技巧指南
- REST API 设计:过滤、排序和分页
- 认证与授权API对比:OAuth vs JWT