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

使用 Python 调用 OpenAI 的接口初识

使用 Python 调用 OpenAI 的接口非常简单,以下将结合实际代码示例和使用场景进行详细讲解,步骤如下:

文章目录

    • 1. 安装 OpenAI 官方库
    • 2. 准备 API Key
    • 3. 基本使用示例:调用 ChatGPT
      • **代码示例:**
      • **运行结果:**
    • 4. 高级用法:场景示例
      • **场景 1:生成内容(文章/文案/代码)**
        • **代码示例:**
        • **使用场景:**
      • **场景 2:数据分析和代码生成**
        • **代码示例:**
        • **可能的生成代码:**
        • **使用场景:**
      • **场景 3:问答机器人**
        • **代码示例:**
        • **使用场景:**
      • **场景 4:批量处理文本**
        • **代码示例:**
        • **使用场景:**
    • 5. 注意事项
    • 6. 常见问题与解决方案
      • **问题 1:如何处理 API 限制?**
      • **问题 2:如何提高请求效率?**


1. 安装 OpenAI 官方库

首先,确保安装了 OpenAI 的 Python 客户端库:

pip install openai

2. 准备 API Key

要调用 OpenAI 的接口,需要在 OpenAI 账户 中获取一个 API Key。

将你的 API Key 存储在一个变量中,比如:

OPENAI_API_KEY = "your_openai_api_key"

3. 基本使用示例:调用 ChatGPT

以下是一个简单示例,用 ChatGPT 模型完成一个对话任务:

代码示例:

import openai# 设置 API 密钥
OPENAI_API_KEY = 'your_openai_api_key'client = OpenAI(api_key=OPENAI_API_KEY,base_url='xxxxx' # 默认是https://api.openai.com/v1, 国内请求需要代理
)completion = client.chat.completions.create(# model="gpt-4o-mini",model="gpt-3.5-turbo",store=True,messages=[{"role": "system", "content": "你是一个AI助手"},{"role": "user", "content": "帮我写一个Python计算两个数之和的函数。"}]
)print(completion.choices[0].message);

运行结果:

def add_numbers(a, b):return a + b

4. 高级用法:场景示例

以下是几个常见的使用场景和实现方法:

场景 1:生成内容(文章/文案/代码)

代码示例:
response = client.chat.completions.create(model="gpt-4",messages=[{"role": "system", "content": "你是一名专业的文案编辑。"},{"role": "user", "content": "请帮我写一段产品介绍,主题是AI教育工具。"}],temperature=0.6,max_tokens=200,
)print(response['choices'][0]['message']['content'])
使用场景:
  • 用于自动生成营销文案、产品说明、或技术博客内容。

场景 2:数据分析和代码生成

代码示例:
import openai# 设置 API 密钥
OPENAI_API_KEY = 'your_openai_api_key'client = OpenAI(api_key=OPENAI_API_KEY,base_url='xxxxx' # 默认是https://api.openai.com/v1, 国内请求需要代理
)
response = client.chat.completions.create(model="gpt-4",messages=[{"role": "system", "content": "你是一名数据科学家。"},{"role": "user", "content": "请用Python写一个分析CSV文件的脚本,提取每列的平均值。"}],temperature=0.5,max_tokens=300,
)print(response['choices'][0]['message']['content'])
可能的生成代码:
import pandas as pd# 读取CSV文件
def analyze_csv(file_path):data = pd.read_csv(file_path)means = data.mean()  # 计算每列的平均值return means# 示例调用
file_path = "data.csv"
print(analyze_csv(file_path))
使用场景:
  • 自动生成常见的 Python 数据分析代码。

场景 3:问答机器人

代码示例:
import openai# 设置 API 密钥
OPENAI_API_KEY = 'your_openai_api_key'client = OpenAI(api_key=OPENAI_API_KEY,base_url='xxxxx' # 默认是https://api.openai.com/v1, 国内请求需要代理
)def chatbot_response(user_input):response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "你是一个智能问答机器人,可以回答各种问题。"},{"role": "user", "content": user_input}],temperature=0.7,max_tokens=150,)return response['choices'][0]['message']['content']# 用户输入
user_query = "如何用Python读取JSON文件?"
print(chatbot_response(user_query))
使用场景:
  • 创建客服机器人或在线学习助手。

场景 4:批量处理文本

代码示例:
import openai# 设置 API 密钥
OPENAI_API_KEY = 'your_openai_api_key'client = OpenAI(api_key=OPENAI_API_KEY,base_url='xxxxx' # 默认是https://api.openai.com/v1, 国内请求需要代理
)texts = ["帮我总结这段话的重点:Python是一种非常流行的编程语言,广泛用于Web开发和数据分析。","帮我翻译这句话:Hello, how are you?","生成一句关于人工智能未来发展的预测。"
]responses = []
for text in texts:response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": text}],temperature=0.6,max_tokens=100,)responses.append(response['choices'][0]['message']['content'])print("\n".join(responses))
使用场景:
  • 文本翻译、总结、生成预测等批量任务。

5. 注意事项

  1. API Key 安全性: 不要在代码中直接暴露 API Key,可以使用环境变量:

    import os
    openai.api_key = os.getenv("OPENAI_API_KEY")
    
  2. 费用控制: OpenAI 的 API 按请求的 token 数量计费,注意控制 max_tokens 和调用频率。

  3. 模型选择: 根据任务选择合适的模型(如 gpt-3.5-turbogpt-4)。


6. 常见问题与解决方案

问题 1:如何处理 API 限制?

可以通过 openai.error 模块捕获错误并重试:

import openai
from openai.error import RateLimitError# 设置 API 密钥
OPENAI_API_KEY = 'your_openai_api_key'client = OpenAI(api_key=OPENAI_API_KEY,base_url='xxxxx' # 默认是https://api.openai.com/v1, 国内请求需要代理
)try:response = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "user", "content": "你好!"}],)print(response['choices'][0]['message']['content'])
except RateLimitError:print("请求频率过高,请稍后再试。")

问题 2:如何提高请求效率?

  • 将多个任务合并到一个请求中。
  • 减少 max_tokens

通过以上方法,你可以在 Python 中灵活调用 OpenAI 的接口来实现各种场景需求。

相关文章:

使用 Python 调用 OpenAI 的接口初识

使用 Python 调用 OpenAI 的接口非常简单,以下将结合实际代码示例和使用场景进行详细讲解,步骤如下: 文章目录 1. 安装 OpenAI 官方库2. 准备 API Key3. 基本使用示例:调用 ChatGPT**代码示例:****运行结果&#xff1a…...

2025 最新flutter面试总结

目录 1.Dart是值传递还是引用传递? 2.Flutter 是单引擎还是双引擎 3. StatelessWidget 和 StatefulWidget 在 Flutter 中有什么区别? 4.简述Dart语音特性 5. Navigator 是什么?在 Flutter 中 Routes 是什么? 6、Dart 是不是…...

【MQ】RabbitMq的可靠性保证

消息队列中的可靠性主要是分为三部分: 消息不丢失:确保消息从生产者发送到消费者消息不丢失消息不重复:确保消息不被重复消费消息顺序性:确保消费的顺序性 解决方案主要有以下几部分: 消息不丢失 生产者确认机制持久…...

STM32 GPIO配置 点亮LED灯

本次是基于STM32F407ZET6做一个GPIO配置,实现点灯实验。 新建文件 LED.c、LED.h文件,将其封装到Driver文件中。 双击Driver文件将LED.c添加进来 编写头文件,这里注意需要将Driver头文件声明一下。 在LED.c、main.c里面引入头文件LED.h LED初…...

Flink把kafa数据写入Doris的N种方法及对比。

用Flink+Doris来开发实时数仓,首要解决是如何接入kafka实时流,下面是参考Doris官方文档和代码,在自己项目开发的实践中总结,包括一些容易踩坑的细节。 目录 Routine Load方法 接入kafka实时数据 踩坑的问题细节 Flink Doris Connector方法 完整示例 Routine Load方法…...

Vue - 标签中 ref 属性的使用

在 Vue 3 中&#xff0c;ref 属性用于在模板中引用 DOM 元素或组件实例。通过 ref&#xff0c;可以直接访问这些元素或组件的实例&#xff0c;从而进行更复杂的操作&#xff0c;比如获取元素的尺寸、调用组件的方法等。 基本语法&#xff1a; <template><div ref&qu…...

leetcode-不同路径问题

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 看见题目…...

MongoDB 数据库备份和恢复全攻略

在当今数据驱动的时代&#xff0c;数据库的稳定运行和数据安全至关重要。MongoDB 作为一款流行的 NoSQL 数据库&#xff0c;以其灵活的文档模型和高扩展性备受青睐。然而&#xff0c;无论数据库多么强大&#xff0c;数据丢失的风险始终存在&#xff0c;因此掌握 MongoDB 的备份…...

CentOS7使用源码安装PHP8教程整理

CentOS7使用源码安装PHP8教程整理 下载安装包解压下载的php tar源码包安装所需的一些依赖扩展库安装前的配置修改配置文件1、进入php8的安装包 配置环境变量开机自启启动服务创建软连接常见问题1、checking for icu-uc > 50.1 icu-io icu-i18n... no2、configure: error: Pa…...

Baklib助力内容中台实施的最佳实践与成功案例探索

内容概要 在当今数字化发展的背景下&#xff0c;内容中台的概念逐渐受到重视。内容中台不仅仅是一个技术平台&#xff0c;更是企业在内容管理和运营效率提升方面的重要助力。它通过整合内部资源&#xff0c;实现信息的集中管理与高效利用&#xff0c;帮助企业应对日益复杂的市…...

rocketmq-product-send方法源码分析

先看有哪些send方法 首先说红圈的 有3个红圈。归类成3种发送方式。假设前提条件&#xff0c;发送的topic&#xff0c;有3个broker&#xff0c;每个broker总共4个write队列&#xff0c;总共有12个队列。 普通发送。负载均衡12个队列。指定超时时间指定MessageQueue,发送&#…...

python flask中使用or查询和and查询,还有同时使用or、and的情况

在 Flask 中处理数据库查询时&#xff0c;通常会结合使用 ORM 工具&#xff0c;例如 SQLAlchemy。以下是 or 查询、and 查询以及两者同时使用的示例。 文章目录 基础准备1. 使用 or_ 查询2. 使用 and_ 查询3. 同时使用 or_ 和 and_4. 更加复杂的嵌套查询 基础准备 假设有一个…...

【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.基本概念2.Python中的数据结构1. 列表&#xff08;List&#xff09;2. 元组&#xff08;Tuple&#xff09;3. 字典&#…...

租房管理系统实现智能化租赁提升用户体验与运营效率

内容概要 在当今快速发展的租赁市场中&#xff0c;租房管理系统的智能化转型显得尤为重要。它不仅帮助房东和租客之间建立更高效的沟通桥梁&#xff0c;还优化了整个租赁流程。通过智能化技术&#xff0c;这套系统能够自动处理资产管理、合同签署、财务管理等所有关键环节。这…...

python3+TensorFlow 2.x(四)反向传播

目录 反向传播算法 反向传播算法基本步骤&#xff1a; 反向中的参数变化 总结 反向传播算法 反向传播算法&#xff08;Backpropagation&#xff09;是训练人工神经网络时使用的一个重要算法&#xff0c;它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核…...

Flutter 使用 flutter_inappwebview 加载 App 本地 HTML 文件

在 Flutter 开发中&#xff0c;加载本地 HTML 文件是一个常见的需求&#xff0c;尤其是在需要展示离线内容或自定义页面时。flutter_inappwebview 是一个功能强大的插件&#xff0c;支持加载本地文件和网络资源。本文将详细介绍如何使用 flutter_inappwebview 加载 App 本地 HT…...

Word常见问题:嵌入图片无法显示完整

场景&#xff1a;在Word中&#xff0c;嵌入式图片显示不全&#xff0c;一部分图片在文字下方。如&#xff1a; 问题原因&#xff1a;因段落行距导致 方法一 快捷方式 选中图片&#xff0c;通过"ctrl1"快捷调整为1倍行距 方法二 通过工具栏调整 选中图片&#xff0…...

为AI聊天工具添加一个知识系统 之68 详细设计 之9 三种中台和时间度量 之1

本文要点 要点 在维度0上 被分离出来 的业务中台 需求、技术中台要求、和数据中台请求 &#xff08;分别在时间层/空间层/时空层上 对应一个不同种类槽的容器&#xff0c;分别表示业务特征Feature[3]/技术方面Aspect[3]/数据流Fluent[3]&#xff09; 在维度1~3的运动过程中 从…...

On to OpenGL and 3D computer graphics

2. On to OpenGL and 3D computer graphics 声明&#xff1a;该代码来自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;仅用作学习参考 2.1 First Program Square.cpp完整代码 /// // square.cpp // // OpenGL program to draw a squ…...

从曾国藩的经历看如何打破成长中的瓶颈

《曾国藩传》是一部充满智慧与人生哲理的传记&#xff0c;而曾国藩本人更是一个从“最笨”到“最智慧”的奇人。看他的成长与蜕变&#xff0c;不仅能感受到他如何超越自己的局限&#xff0c;也能从中获得关于人性、社会和历史的重要启示。曾国藩的一生让人深思&#xff0c;正是…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...