当前位置:

首页 > 编程开发 > Python调用OpenAI API的完整教程

Python调用OpenAI API的完整教程

前言 AI大模型的热度居高不下,不少开发者都想把GPT的能力集成到自己的项目里。不过,官方文档有时读起来难免让人感觉云里雾里。别担心,这篇文章将带你从头到尾、手把手地走通整个流程,确保你看完就能立刻上手实践。 一、准备工作 1.1 安装OpenAI SDK pip install openai 强烈

前言

AI大模型的热度居高不下,不少开发者都想把GPT的能力集成到自己的项目里。不过,官方文档有时读起来难免让人感觉云里雾里。别担心,这篇文章将带你从头到尾、手把手地走通整个流程,确保你看完就能立刻上手实践。

Python调用OpenAI API的完整教程

一、准备工作

1.1 安装OpenAI SDK

pip install openai

强烈建议使用虚拟环境进行隔离,避免依赖冲突:

python -m venv ai-env
# Windows
ai-env\Scripts\activate
# macOS/Linux
source ai-env/bin/activate
pip install openai

1.2 获取API Key

前往OpenAI官网注册账号,在API Keys页面即可创建新的密钥。

这里有个关键细节:API Key只在创建时显示一次,务必妥善保存。一旦泄露,必须立即前往后台撤销旧密钥,安全永远是第一位的。

二、最简示例:一次对话

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "用一句话解释什么是递归"}
    ]
)

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

运行后,你可能会看到类似这样的输出:

递归是函数在自己的定义中调用自身,通过不断缩小问题规模直到满足终止条件来求解问题的编程技巧。

三、流式输出(打字机效果)

普通的调用方式需要等待AI生成全部内容后才返回结果,用户体验上总感觉差了点什么。而流式输出可以实现逐字显示的效果,就像真人打字一样:

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "写一首关于编程的五言绝句"}
    ],
    stream=True  # 关键参数
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

print()  # 换行

四、多轮对话

AI模型本身是没有记忆的,要实现多轮对话,关键在于由开发者主动维护并传递历史消息记录:

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

# 维护对话历史
messages = [
    {"role": "system", "content": "你是一个Python编程助手,回答简洁专业。"}
]

def chat(user_input):
    messages.append({"role": "user", "content": user_input})
    
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=messages
    )
    
    assistant_msg = response.choices[0].message.content
    messages.append({"role": "assistant", "content": assistant_msg})
    return assistant_msg

# 测试多轮对话
print(chat("Python的列表推导式是什么?"))
print(chat("能给几个实际例子吗?"))
print(chat("和map/filter比哪个好?"))

需要注意的是,messages列表会随着对话轮次增加而不断变长,这会导致消耗的Token数量也水涨船高。在生产环境中,通常需要对历史消息进行截断或摘要处理以控制成本。

五、实用技巧

5.1 控制输出格式(JSON Mode)

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "列出3个Python Web框架,用JSON格式返回,字段:name, description, stars"}
    ],
    response_format={"type": "json_object"}  # 强制JSON输出
)

import json
data = json.loads(response.choices[0].message.content)
print(json.dumps(data, indent=2, ensure_ascii=False))

5.2 设置温度参数

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "给我起一个技术博客名字"}],
    temperature=0.9  # 0=保守确定,1=创意发散
)
  • temperature=0:适合事实性问答、代码生成等需要确定性的场景。
  • temperature=0.7:通用场景的平衡点。
  • temperature=1.0+:创意写作、头脑风暴,让回答更具想象力。

5.3 超时和重试

from openai import OpenAI
import time

client = OpenAI(
    api_key="sk-your-api-key-here",
    timeout=30.0,  # 请求超时30秒
    max_retries=2   # 最多重试2次
)

5.4 计算Token消耗

# 响应对象中包含token统计
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "你好"}]
)

usage = response.usage
print(f"输入Token: {usage.prompt_tokens}")
print(f"输出Token: {usage.completion_tokens}")
print(f"总计Token: {usage.total_tokens}")

六、常见错误处理

from openai import OpenAI, APIError, RateLimitError, APIConnectionError

client = OpenAI(api_key="sk-your-api-key-here")

try:
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("⚠️ 请求太频繁,请稍后重试")
except APIConnectionError:
    print("⚠️ 网络连接失败,检查网络设置")
except APIError as e:
    print(f"⚠️ API错误:{e.status_code} - {e.message}")
else:
    print(response.choices[0].message.content)

七、函数调用(Function Calling)

这个功能赋予了AI调用外部工具的能力,是实现智能应用的关键:

import json

client = OpenAI(api_key="sk-your-api-key-here")

# 定义工具
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的天气信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "城市名称"
                    }
                },
                "required": ["city"]
            }
        }
    }
]

# 第一次调用:AI决定是否使用工具
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
    tools=tools
)

message = response.choices[0].message

if message.tool_calls:
    # AI想要调用工具
    tool_call = message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(f"AI想调用: {tool_call.function.name}({args})")
    
    # 这里执行实际函数,模拟返回结果
    weather_result = {"city": "北京", "temperature": "22°C", "condition": "晴"}
    
    # 第二次调用:把工具结果传回给AI
    response2 = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "user", "content": "北京今天天气怎么样?"},
            message,
            {
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps(weather_result, ensure_ascii=False)
            }
        ],
        tools=tools
    )
    print(response2.choices[0].message.content)

八、模型选择指南

模型适用场景价格(输入/输出 per 1M tokens)
gpt-4o复杂推理、代码生成、长文分析

2.5/2.5 /

2.5/

10
gpt-4o-mini日常对话、简单任务、高频调用

0.15/0.15 /

0.15/

0.6
o3-mini数学推理、逻辑分析

1.1/1.1 /

1.1/

4.4

对于日常开发,gpt-4o-mini 在性价比上优势明显;遇到复杂任务时,再考虑升级到能力更强的 gpt-4o。

九、异步调用

在高并发场景下,异步调用能显著提升效率:

import asyncio
from openai import AsyncOpenAI

async def main():
    client = AsyncOpenAI(api_key="sk-your-api-key-here")
    
    # 并发5个请求
    tasks = [
        client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": f"用5个字形容数字{i}"}]
        )
        for i in range(5)
    ]
    
    responses = await asyncio.gather(*tasks)
    for i, resp in enumerate(responses):
        print(f"{i}: {resp.choices[0].message.content}")

asyncio.run(main())

总结

  • 基础调用其实只需要3行代码,入门门槛很低。
  • 多轮对话的核心在于主动维护好 messages 这个历史消息列表。
  • 流式输出能极大提升最终用户的交互体验。
  • Function Calling 为AI打开了调用外部工具的大门,扩展性极强。
  • 模型选择上,日常使用 gpt-4o-mini,复杂任务则交给 gpt-4o。

掌握以上这些要点,你就能游刃有余地在Python项目中集成OpenAI的智能能力了。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 OpenAI
相关文章 更多
sora使用指南国内使用的具体操作步骤教程
sora使用指南国内使用的具体操作步骤教程

本文详细解析Sora在国内的使用现状,指出目前官方未对公众开放注册,提醒用户警惕虚假链接,并提供关注官方动态及替代方案的实用建议。

OpenAI GPT-6 Astra 自主通关《传送门》:技术原理与实验成本解析
OpenAI GPT-6 Astra 自主通关《传送门》:技术原理与实验成本解析

OpenAI GPT-6 Astra 模型通过 MCP 协议与 SourcePauseTool 控制《传送门》游戏,完成 3336 次工具调用并自主通关。实验耗时约 24 小时,API 成本约 571 美元,展示了多模态 AI 在 3D 解谜领域的突破性进展。

OpenAI:数据中心容量在 2025 年增至 1.9 GW,增长三倍
OpenAI:数据中心容量在 2025 年增至 1.9 GW,增长三倍

OpenAI算力总量预计2025年达1.9GW,较2023年增长9.5倍,年经常性收入同步增至200亿美元。推理成本已压至每百万token不到1美元,采取训练性能优先、推理效率优先的双轨策略。未来营收将拓展技术授权与按成效付费模式,并优先研发AIAgent与工作流自动化。

Transformer之父NoamShazeer离开谷歌加入OpenAI
Transformer之父NoamShazeer离开谷歌加入OpenAI

Transformer核心作者NoamShazeer离开谷歌加入OpenAI,担任架构研究负责人。他曾参与创办Character.AI,后因谷歌交易回归,如今再次转投。此举折射出行业对Transformer架构局限性的反思,以及下一代模型架构创新的迫切需求。

突发!谷歌技术巨牛Noam跳槽OpenAI
突发!谷歌技术巨牛Noam跳槽OpenAI

Transformer论文共同一作、谷歌元老级AI专家NoamShazeer再次离开谷歌,加盟OpenAI。他拥有高达35万余次论文引用,近期专利涉及结构化工具调用、神经架构搜索及混合专家模型等关键方向。OpenAI借此补齐构建超级智能体与底层模型架构的核心能力。

谷歌Transformer之父跳槽OpenAI,沙泽尔究竟在想什么?
谷歌Transformer之父跳槽OpenAI,沙泽尔究竟在想什么?

AI传奇人物诺姆·沙泽尔离开谷歌加入OpenAI。作为Transformer架构之父,他因不满谷歌严格的审批流程和“大公司病”,再次出走。选择OpenAI因其快速迭代理念和开放氛围,契合其推动AGI落地的核心诉求。

Codex兼容国产开源模型!实测DeepSeek接入:门槛还是太高
Codex兼容国产开源模型!实测DeepSeek接入:门槛还是太高

OpenAI的Codex工具开放第三方模型接入,但实际门槛高,仅支持ResponsesAPI协议。DeepSeek等国产模型无法直接接入,需通过本地转接桥,响应速度慢于官方模型,但成本极低。此举为国产模型提供成熟Agent容器机会,但OpenAI仍掌握核心标准。

AI制药迎来标准化评估时代,OpenAI入局催化创新药赛道估值重塑
AI制药迎来标准化评估时代,OpenAI入局催化创新药赛道估值重塑

OpenAI发布LifeSciBench基准测试,为AI制药建立标准化评估工具,推动行业规范。港股创新药板块短期承压,但AI制药从概念验证走向产业落地趋势不变,研发效率成核心竞争维度,板块估值有望修复。

Getty Images与OpenAI达成“展示协议”,股价盘前暴涨141%
Getty Images与OpenAI达成“展示协议”,股价盘前暴涨141%

GettyImages与OpenAI签署展示协议,股价盘前暴涨141%,空头回补放大涨幅,市场反应强烈。此次合作标志着双方从对抗转向合作,OpenAI授权版图持续扩张,但公司基本面压力犹存。

OpenAI发布首款自研芯片:大模型直接参与设计与优化
OpenAI发布首款自研芯片:大模型直接参与设计与优化

OpenAI联合博通推出首款自研AI芯片Jalapeño,专为大语言模型推理设计,开发周期仅9个月。芯片采用软硬件协同设计,并用AI优化自身架构,每瓦性能大幅领先业界。计划2026年商用,通过全栈布局降低AI使用门槛。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

Android Studio Windows版
Android Studio Windows版
Windows

Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,