当前位置: 首页 > news >正文

OpenAI Python API 完全指南:从入门到实战

前言

OpenAI Python API 库为开发者提供了便捷访问 OpenAI 强大 AI 模型的能力。本文将详细介绍该库的各项功能,并通过代码示例展示如何使用。

 一、OpenAI Python 库概述

OpenAI Python 库是一个官方维护的 Python 客户端,用于与 OpenAI REST API 交互。主要特点包括:

- 支持 Python 3.8+ 版本
- 提供同步和异步客户端
- 内置完整的类型定义
- 基于 httpx 实现网络请求
- 从 OpenAPI 规范自动生成

# 安装命令
pip install openai# 异步增强版(含aiohttp)
pip install openai[aiohttp] 

 二、基础使用

两种使用 OpenAI Python SDK 与 GPT-4o 模型交互的方式

1. 新版 Responses API(推荐方式)

import os
from openai import OpenAIclient = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))  # 从环境变量读取API密钥response = client.responses.create(model="gpt-4o",  # 指定模型instructions="你是一个编程助手",  # 设定AI角色,设置AI行为指令input="如何用Python检查对象类型?"  # 用户问题
)
print(response.output_text)  # 输出响应文本

带有嵌套参数的聊天请求

  • input: 消息列表(嵌套字典结构)

  • response_format: 要求响应格式为JSON对象

from openai import OpenAIclient = OpenAI()response = client.chat.responses.create(input=[{"role": "user","content": "请给我讲解一下 RAG ?",}],model="gpt-4o",response_format={"type": "json_object"},
)

2. 传统 Chat Completions API(仍支持)

from openai import OpenAIclient = OpenAI()  # 密钥也可通过环境变量自动加载completion = client.chat.completions.create(model="gpt-4o",messages=[  # 消息历史记录{"role": "developer", "content": "你是一个编程助手"},  # 系统指令{"role": "user", "content": "如何用Python检查对象类型?"}  # 用户输入]
)
print(completion.choices[0].message.content)  # 输出第一条回复

三、视觉功能

OpenAI 的视觉模型可以分析图片内容

1. 使用图片URL

prompt = "这张图片有什么内容?"
img_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/2023_06_08_Raccoon1.jpg/1599px-2023_06_08_Raccoon1.jpg"response = client.responses.create(model="gpt-4o-mini",input=[{"role": "user","content": [{"type": "input_text", "text": prompt},{"type": "input_image", "image_url": f"{img_url}"},],}],
)

2. 使用Base64编码图片

import base64
from openai import OpenAIclient = OpenAI()prompt = "这张图片有什么内容?"
with open("path/to/image.png", "rb") as image_file:b64_image = base64.b64encode(image_file.read()).decode("utf-8")response = client.responses.create(model="gpt-4o-mini",input=[{"role": "user","content": [{"type": "input_text", "text": prompt},{"type": "input_image", "image_url": f"data:image/png;base64,{b64_image}"},],}],
)

四、异步处理

以下展示了如何使用 OpenAI Python 库的异步客户端 (AsyncOpenAI),以及如何配置不同的 HTTP 后端 (httpx 或 aiohttp)。

两者主要区别在于 HTTP 库的选择,API 功能完全相同。aiohttp 在特定高并发场景下可能表现更好。

1. 基础异步用法

  • 使用 `AsyncOpenAI` 替代同步的 `OpenAI` 客户端

  • 每个 API 调用需配合 `await` 关键字

  • 功能与同步客户端完全一致

import os
import asyncio
from openai import AsyncOpenAIclient = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY"),  # 从环境变量获取 API 密钥
)async def main() -> None:response = await client.responses.create(  # 异步调用 APImodel="gpt-4o", input="向一个非开发人员解释什么叫 RAG")print(response.output_text)  # 打印响应结果asyncio.run(main())  # 运行异步主函数

2. 使用 aiohttp 后端

  • 默认使用 `httpx`,但可切换至 `aiohttp` 提升并发性能

  • 需通过 `http_client=DefaultAioHttpClient()` 参数启用

  • 推荐在上下文管理器 (`async with`) 中使用

pip install openai[aiohttp]  # 安装 aiohttp 支持
import asyncio
from openai import DefaultAioHttpClient
from openai import AsyncOpenAIasync def main() -> None:async with AsyncOpenAI(api_key="My API Key",http_client=DefaultAioHttpClient(),   # 显式指定 aiohttp 后端) as client:chat_completion = await client.chat.completions.create(messages=[{"role": "user","content": "Say this is a test",}],model="gpt-4o",)asyncio.run(main())

http://www.dtcms.com/a/303952.html

相关文章:

  • 【学习笔记】Lean4 定理证明 ing
  • 7.29错题(zz)史纲 7章 建立新中国
  • Scala实用编程(附电子书资料)
  • Node.js 内置模块
  • AR辅助前端设计:虚实融合场景下的设备维修指引界面开发实践
  • 学习Scala语言的最佳实践有哪些?
  • GCC、glibc、GNU C(gnuc)的关系
  • SkSurface---像素的容器:表面
  • PowerShell脚本自动卸载SQL Server 2025和 SSMS
  • 零基础-动手学深度学习-7.7 稠密连接网络(DenseNet)
  • 景区负氧离子环境监测系统云平台方案
  • 论文阅读:2024 arxiv AutoDefense: Multi-Agent LLM Defense against Jailbreak Attacks
  • 【OpenAI】ChatGPT辅助编码:Spring Boot + Copilot自动生成业务逻辑
  • 【MySQL】从连接数据库开始:JDBC 编程入门指南
  • Java优雅使用Spring Boot+MQTT推送与订阅
  • vue请求golang后端CORS跨域问题深度踩坑
  • 【STM32】FreeRTOS 任务消息队列 和 中断消息队列的区别(六)
  • 14 - 大语言模型 — 抽取式问答系统 “成长记”:靠 BERT 学本事,从文本里精准 “揪” 答案的全过程(呆瓜版-1号)
  • “非参数化”大语言模型与RAG的关系?
  • 云原生MySQL Operator开发实战(五):扩展与生态系统集成
  • python使用ffmpeg录制rtmp/m3u8推流视频并按ctrl+c实现优雅退出
  • DateTime::ToString 日期时间文本格式化深度解析(C++)
  • Mysql InnoDB存储引擎
  • 2.快速开始
  • Windows下基于 SenseVoice模型的本地语音转文字工具
  • 【Linux我做主】探秘进程状态
  • 聚铭安全管家平台2.0实战解码 | 安服篇(三):配置保障 自动核查
  • 从单机架构到分布式:Redis为何成为架构升级的关键一环?
  • OpenLayers 综合案例-底图换肤(变色)
  • DevOps 详解