3、大模型API入门:OpenAI API调用基础

好,咱们正式开始动手了。

前面两章聊了不少概念和背景,说实话,光看不动手容易犯困。这一章咱们直接撸代码,把OpenAI的API调通。我当年第一次调通GPT-3.5的时候,那种「哇,真的能对话」的感觉,到现在还记得。

3.1 API Key管理——你的通行证

调用OpenAI的API,第一件事就是拿到API Key。这东西就像你家门禁卡,没它啥也干不了。

⚠️ 重要提醒:API Key就是你的钱袋子。泄露了,别人就能用你的额度。我曾经在GitHub上不小心提交过一次,十分钟内就被盗刷了200多美金。从那以后,我养成了几个习惯。

拿到Key之后,怎么管理?我个人习惯用环境变量,而不是硬编码在代码里。原因很简单——你不可能每次写代码都把Key贴进去,而且万一代码要分享,Key就暴露了。

# 在终端设置环境变量(Linux/Mac)
export OPENAI_API_KEY="sk-你的key"

# Windows PowerShell
$env:OPENAI_API_KEY="sk-你的key"

# 然后在Python中读取
import os
api_key = os.getenv("OPENAI_API_KEY")
print("Key已加载" if api_key else "请设置环境变量")
💡 小技巧:我习惯在项目根目录放一个.env文件,用python-dotenv加载。这样既安全又方便,而且.env默认被git忽略,不会误提交。

3.2 模型选择——gpt-3.5-turbo vs gpt-4

选模型这事儿,说白了就是「性价比」的权衡。

gpt-3.5-turbo:速度快,价格便宜。我平时做原型验证、写简单对话、处理批量任务,基本都用它。你想想看,如果只是做个客服问答,用gpt-4纯属浪费。

gpt-4:智商高,但贵。适合复杂推理、代码生成、需要深度理解的场景。我在做代码审查助手的时候,就发现gpt-3.5经常漏掉一些边界情况,换成gpt-4就好很多。

模型 输入价格(每1K token) 输出价格(每1K token) 适用场景
gpt-3.5-turbo $0.0015 $0.002 对话、翻译、摘要、批量处理
gpt-4 $0.03 $0.06 复杂推理、代码生成、深度分析

嗯,这里要注意:价格是动态调整的,上面是我写这章时的数据。建议你每次用之前去OpenAI官网看一眼最新价格。

3.3 第一次API调用——Hello World

好了,Key有了,模型选好了,咱们来写第一行代码。

import openai
import os

# 设置API Key
openai.api_key = os.getenv("OPENAI_API_KEY")

# 调用Chat Completion接口
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个友好的助手。"},
        {"role": "user", "content": "你好,请介绍一下你自己。"}
    ]
)

# 提取回复内容
reply = response.choices[0].message.content
print(reply)

跑一下,你会看到模型回复了一段自我介绍。就这么简单。

我刚开始做的时候,总以为要写很多代码才能调通。其实核心就三行:设置Key、构造消息、拿回复。剩下的都是锦上添花。

3.4 Token与计费——钱花在哪了?

Token是啥?说白了,就是模型理解文本的最小单位。一个英文单词大概1-2个token,一个中文字大概2-3个token。你想想看,你发一句「你好」,模型收你几个token的钱。

计费是按token算的。输入和输出价格不一样,输出通常贵一些。为什么会这样?因为生成文本比理解文本更消耗计算资源。

🔑 关键点:每次API调用,你都要为「输入+输出」的总token数付费。所以控制回复长度、精简提示词,都能省钱。

怎么查看用了多少token?API返回的response里就有:

# 查看token使用情况
print(f"提示词token数: {response['usage']['prompt_tokens']}")
print(f"回复token数: {response['usage']['completion_tokens']}")
print(f"总token数: {response['usage']['total_tokens']}")
💡 省钱小技巧:我习惯在调用时设置max_tokens参数,限制回复长度。比如客服场景,设个200就够用了,没必要让模型长篇大论。
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[...],
    max_tokens=200  # 限制回复最多200个token
)

3.5 避坑指南——我踩过的坑

最后分享几个我实际踩过的坑,你遇到了能少走弯路。

  • Key过期了还在用:OpenAI的Key有有效期,过期了会报401错误。我建议定期检查,或者用的时候加个异常捕获。
  • 忘记设置超时:网络波动时,API请求可能卡住。我习惯加个timeout=30,30秒没响应就重试。
  • 模型名称写错:比如把gpt-3.5-turbo写成gpt-3.5,会报404。每次用之前去官网确认一下最新的模型名称。
  • Token估算不准:中文的token数比英文多。我写中文提示词时,会先用tiktoken库估算一下,避免超出上下文限制。

好了,这一章的内容就这些。你动手试试,把代码跑通,感受一下「第一次对话」的快乐。下一章咱们聊更高级的用法——流式输出和函数调用。