【35.Python+AI】你的第一个AI程序:3行Python代码调用GPT大模型

📖 文章简介: 本文是Python+AI大模型系列的第一篇,从零带领你完成第一个大模型API调用。内容涵盖OpenAI SDK的安装配置、API Key的安全获取与管理、第一个completion请求的完整代码及返回结果解析,并深入讲解Token费用计算与预算控制策略。文中附有Mermaid流程图拆解API调用的完整链路,适合从未接触过大模型API、想迈出AI开发第一步的Python开发者。


在这里插入图片描述

🎬 个人主页: 源码骑士

专栏传送门: 《Android开发基础》《python基础课程》

⭐️热衷从源码视角拆解技术底层原理,将复杂架构讲得通俗易懂


🎬 源码骑士的简介:
5年Android Framework系统开发经验,曾主导多项系统级性能优化专项
技术栈覆盖Android系统全链路(Binder/Handler/AMS/WMS/启动流程)及Java后端全家桶(Spring + MyBatis + Redis + Oracle)
累计产出原创技术文章100+篇,文章以流程图为特色,被读者评价为"看一篇胜过啃一周源码"


导入语

2025年了,如果你还没亲手调用过一次大模型API,就相当于2015年没写过一句SQL——不是说不能做开发,但你的工具箱里少了一把最锋利的刀。

很多人觉得"调用AI"是一件很高深的事。其实不是。OpenAI把大模型的能力封装成了一个极其简单的HTTP接口——你只需要三行Python代码,就能让一个1750亿参数的模型为你工作。

这篇文章的目标很明确:带你从零写出第一个大模型API调用,搞清楚API Key从哪来、Request里填什么、返回的JSON怎么解析。 文末你还会知道调用一次花了多少钱——对,就是几分钱的事。


1 ~> 准备工作:安装SDK和获取API Key

1.1 安装OpenAI Python SDK

打开终端,一条命令搞定:

pip install openai

如果你的项目用了虚拟环境(建议),先激活再装:

# Windows
venv\Scripts\activate
pip install openai

# macOS / Linux
source venv/bin/activate
pip install openai

验证安装是否成功:

import openai
print(openai.__version__)   # 输出类似 1.55.0

1.2 获取API Key——这一步最容易出错

platform.openai.com 注册账号(需要科学上网)。注册后在右上角头像 → “View API keys” → “Create new secret key”。

几个新手必知的坑:

说明
Key只显示一次 创建后立刻复制保存,关闭弹窗后就再也看不到了
不要硬编码在代码里 万一你不小心把代码推到GitHub,Key会被自动扫描并吊销
需要充值才能用 新账号通常有$5免费额度,但过期后需要绑定信用卡充值
Key有权限范围 创建时可以限定Key的权限(只读/读写),生产环境建议用最小权限

安全存储API Key的方式:

# 方式一:环境变量(推荐)
export OPENAI_API_KEY="sk-your-key-here"

# 方式二:.env文件 + python-dotenv
pip install python-dotenv
# .env 文件内容(记得加入 .gitignore)
OPENAI_API_KEY=sk-your-key-here

# Python 中读取
from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")

2 ~> 第一个API调用:三行代码让AI说话

2.1 最简代码

from openai import OpenAI

client = OpenAI()  # 自动读取环境变量 OPENAI_API_KEY

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "用一句话介绍Python"}]
)

print(response.choices[0].message.content)

输出示例:

Python是一种简洁、易读且功能强大的高级编程语言,广泛应用于Web开发、
数据分析、人工智能和自动化脚本等领域。

2.2 逐行拆解

第1行:from openai import OpenAI
├─ 从openai包导入OpenAI客户端类(注意:新版SDK用 OpenAI(),不是 openai.ChatCompletion)

第2行:client = OpenAI()
├─ 创建客户端实例,默认从环境变量 OPENAI_API_KEY 读取密钥
├─ 也可以显式传入:client = OpenAI(api_key="sk-xxx")

第3~6行:client.chat.completions.create(...)
├─ model="gpt-3.5-turbo" —— 指定模型,gpt-3.5-turbo是最便宜最快的
├─ messages=[...] —— 对话消息列表,每一条包含role和content
│   ├─ role="system" —— 设定AI的行为规则(可选但推荐)
│   ├─ role="user" —— 用户说的话
│   └─ role="assistant" —— AI之前的回复(多轮对话时需要)
└─ 返回的response是一个复杂对象,最关键的是 response.choices[0].message.content

2.3 加上System Prompt让AI更听话

response = client.chat.completions.create(
    model="gpt-3.5-tourbo",
    messages=[
        {"role": "system", "content": "你是一位资深Python讲师,回答要通俗易懂,多举例子。"},
        {"role": "user", "content": "装饰器是什么?"}
    ]
)
print(response.choices[0].message.content)

有无System Prompt的对比:

无System Prompt 有System Prompt
回答风格 标准教科书式 口语化、带例子
回答长度 可能有长有短 受"多举例子"影响,会更长
可控性

System Prompt是控制AI行为的"宪法"。 花时间打磨一段好的System Prompt,比反复调整User Prompt更有效。


3 ~> 调用链路全景图

3.1 Mermaid流程图

下面这张图展示了一次API调用从你的代码到模型返回的完整路径:

失败

通过

Python代码发起请求

OpenAI SDK封装HTTP请求

API Key验证

返回401 Unauthorized

请求进入OpenAI服务器队列

Tokenization: 文本→Token序列

模型推理: 逐Token生成

是否达到stop条件?

组装响应JSON

返回给Python客户端

解析response.choices

提取message.content

你的代码拿到最终文本

3.2 响应对象的完整结构

很多人只取了 content,但response对象里还有很多有用的信息:

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello"}]
)

# 核心字段
print(response.id)                      # 本次请求的唯一ID
print(response.model)                   # 实际使用的模型
print(response.choices[0].finish_reason) # 结束原因:stop / length / content_filter
print(response.usage.prompt_tokens)     # 输入消耗的Token数
print(response.usage.completion_tokens) # 输出消耗的Token数
print(response.usage.total_tokens)      # 总Token数

finish_reason 的三个关键值:

含义 你该做什么
stop 正常结束,模型自己决定说完了 无需处理
length 达到max_tokens上限,话没说完 增大max_tokens或让模型精简回答
content_filter 触发了安全过滤 检查你的输入是否包含敏感内容

4 ~> Token与费用:每次调用花了多少钱

4.1 Token是什么

大模型不是按"字"计费,而是按"Token"(词元)。一个Token大约等于:

英文:1个单词 ≈ 1~2个Token
中文:1个汉字 ≈ 1.5~3个Token
代码:因符号多,Token数通常比看起来多

4.2 费用计算

gpt-3.5-turbo 的官方定价(截至2025年6月):
├─ 输入:$0.50 / 100万 Token
└─ 输出:$1.50 / 100万 Token

也就是说:
├─ 一次问答(输入50 Token + 输出200 Token)
│   ├─ 输入费用:50 × 0.50/1,000,000 = $0.000025
│   ├─ 输出费用:200 × 1.50/1,000,000 = $0.0003
│   └─ 合计:约 $0.000325 ≈ 人民币 0.002元(两厘钱)
└─ 你充5美元,够你调用1.5万次!

4.3 用代码精确计算Token数

import tiktoken

# 加载gpt-3.5-turbo的编码器
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")

text = "Python是一种解释型、面向对象的高级编程语言。"
tokens = encoding.encode(text)

print(f"原文:{text}")
print(f"Token数:{len(tokens)}")
print(f"Token序列:{tokens}")

输出:

原文:Python是一种解释型、面向对象的高级编程语言。
Token数:24
Token序列:[10914, 232, 34002, ...]

5 ~> 常见报错与排错

5.1 新手最常遇到的四个错误

错误一:openai.AuthenticationError — "Incorrect API key provided"
├─ 原因:API Key没设置或写错了
└─ 解决:检查环境变量或显式传入正确的Key

错误二:openai.RateLimitError — "You exceeded your current quota"
├─ 原因:免费额度用完了,或者绑定的信用卡没钱了
└─ 解决:去 platform.openai.com 充值

错误三:openai.APIConnectionError — 连接超时
├─ 原因:网络问题(国内访问OpenAI需要代理)
└─ 解决:配置代理环境变量 HTTP_PROXY / HTTPS_PROXY

错误四:openai.BadRequestError — "max_tokens is too large"
├─ 原因:max_tokens超过了模型的上下文窗口
└─ 解决:减少max_tokens或缩短输入

5.2 一个健壮的调用封装

把上面的知识串起来,写一个生产可用的函数:

import os
from openai import OpenAI

def ask_gpt(prompt: str, model: str = "gpt-3.5-turbo", max_tokens: int = 500) -> str:
    """
    封装GPT调用,带基础错误处理。
    """
    client = OpenAI()
    try:
        response = client.chat.completions.create(
            model=model,
            messages=[{"role": "user", "content": prompt}],
            max_tokens=max_tokens,
            temperature=0.7
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"调用失败:{type(e).__name__} - {str(e)}"

# 使用
result = ask_gpt("用Python写一个斐波那契函数")
print(result)

思考 && 总结

这篇文章带你完成了从零到大模型API调用的第一步,核心要点:

  1. 三行代码就能调用GPT: from openai import OpenAIclient = OpenAI()client.chat.completions.create(...)。不要被"大模型"这三个字吓到——它的API设计非常简洁。
  2. API Key是唯一凭证,保护它就是保护你的钱包: 绝对不要硬编码在代码里,用环境变量或.env文件管理。GitHub上有大量扫描机器人,Key泄露后几分钟内就会被盗用。
  3. System Prompt是控制AI行为的"宪法": 别只写User Message,花一分钟写好System Prompt,回答质量会有天壤之别。
  4. Token计费极其便宜: 一次问答大约花0.002元人民币。$5够你调用15000次——大胆去试,别怕花钱。
  5. finish_reason不能忽略: 如果返回length,说明你的回答被截断了,需要增大max_tokens或让模型精简输出。
  6. 错误处理不是可选项: 网络超时、Key过期、额度用完——这些问题在真实项目中一定会遇到,至少要有一个try-except兜底。

这篇文章的目标很简单:让你亲手跑通一次API调用。当你看到AI在终端里回复你的那一刻,你和大模型之间的"次元壁"就打破了。剩下的,就是把这把刀用在你的项目里。


结尾

各位小伙伴,本文的内容到这里就全部结束了,源码骑士在这里再次感谢您的阅读!

源码骑士 — Android Framework & 全栈开发

👀 关注:跟博主一起从源码视角深耕底层原理,见证每一次成长

❤️ 点赞:让优质内容被更多人看见,让知识传递更有力量

收藏:把API调用的代码模板存好,下次直接复制用

💬 评论:你第一次调用大模型API时踩过什么坑?评论区一起聊聊

🔄 一键四连:不要忘记给博主"一键四连"哦!今日AI入门达成!

🗡️ 寄语:三行代码打开AI的大门——重要的是你跨进来的这一步。

结语:现在打开终端,pip install openai,把本文的三行代码跑一遍。看到AI回复你的那一刻,你就正式成为AI开发者了。不要忘记给博主"一键四连"哦!

更多推荐