零基础玩转 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 🏁

  • 会调 API → 会算 tokens → 会控温度 → 会异步流式
  • 再用「代码优化」「代码文档生成器」把性能、文档、安全一次做到位,ChatGPT API 就能从玩具变成印钞机 💰!

原文链接: https://www.mlexpert.io/blog/chatgpt-api