使用Python探究OpenAI API

谁没听说过OpenAI?这家人工智能研究实验室因其著名的产品ChatGPT而改变了世界。它改变了AI实施领域,许多公司现在急于成为下一大热点。

尽管竞争激烈,OpenAI仍然是任何生成式AI业务需求的首选公司,因为它拥有最好的模型和持续的支持。该公司提供了许多最先进的生成式AI模型,能够处理各种任务:图像生成和文本到语音等。

OpenAI提供的所有模型都可以通过API调用获得。借助简单的Python代码,您已经可以使用该模型。

我们在本文中将探讨如何结合使用OpenAI API和Python以及可以执行的各种任务。但愿您能从这篇文章中学到很多。

OpenAI API设置

要阅读本文,您需要准备好几个方面。

最重要的是OpenAI的API密钥,因为没有密钥就无法访问OpenAI模型。要获得访问权限,您必须注册OpenAI帐户,并在帐户页面上申请API密钥。收到密钥后,将其保存在能够记住的地方,因为它不会再次出现在OpenAI界面中。

需要做的下一件事是购买预付费积分以使用OpenAI API。最近,OpenAI宣布改变计费方式。我们需要为API调用购买预付费积分,而不是在月底支付。您可以访问OpenAI定价页面来估算所需的积分。还可以查看模型页面,以了解您需要哪种模型。

最后,您需要在生产环境中安装OpenAI Python软件包。您可以使用下面的代码做到这一点。

pip install openai

然后,您需要使用下面的代码设置OpenAI Key环境变量。

import os
os.environ['OPENAI_API_KEY'] = 'YOUR API KEY'

一切设置完毕后,不妨开始使用Python探索OpenAI模型的API。

OpenAI API文本生成

OpenAI API的明星是其文本生成模型。这些大语言模型系列可以从名为提示的文本输入生成文本输出。提示实际上是关于我们期望从模型中得到什么的指令,比如分析文本和生成文档草稿等。

不妨从执行一个简单的文本生成API调用入手。我们将使用OpenAI的GPT-3.5 Turbo模型作为基础模型。它不是最先进的模型,但最便宜的模型常常足以执行与文本相关的任务。

from openai import OpenAI
client = OpenAI()completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}]
)print(completion.choices[0].message.content)
  • “释放预测分析的力量,推动数据驱动的决策!”
  • “深入挖掘数据海洋,发现有价值的见解。”
  • “通过先进算法将原始数据转化为实用的情报。”

文本生成模型的API调用使用API Endpoint chat.completions从提示创建文本响应。

文本生成需要两个参数:模型和消息。

至于模型,您可以检查可以在相关模型页面上使用的模型列表。

至于消息,我们传递一个含有两个对的字典:角色和内容。角色键指定了对话模型中的角色发送方。有三种不同的角色:系统、用户和助手。

使用消息中的角色,我们可以帮助设置模型行为和模型应该如何回答提示的示例。

不妨使用角色助手扩展前面的代码示例,以指导我们的模型。此外,我们将探索文本生成模型的一些参数,以改进结果。

completion = client.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Generate me 3 jargons that I can use for my Social Media content as a Data Scientist content creator."},{"role": "assistant", "content": "Sure, here are three jargons: Data Wrangling is the key, Predictive Analytics is the future, and Feature Engineering help your model."},{"role": "user", "content": "Great, can you also provide me with 3 content ideas based on these jargons?"}],max_tokens=150,temperature=0.7,top_p=1,frequency_penalty=0
)print(completion.choices[0].message.content)

当然!以下是基于提供的行语的三个内容思路:

  • “释放数据处理的力量:数据科学家的逐步指南”——创建一篇博文或视频教程,展示实际数据科学项目中数据处理的最佳实践和工具。
  • “预测分析的未来:数据科学的趋势和创新”——撰写一篇思想领袖文章,讨论预测分析领域的新兴趋势和技术,以及它们如何塑造数据科学的未来。
  • “驾驭特征工程:提升模型性能的技术”——开发一个信息图表或社交媒体系列,着重介绍不同的特征工程技术及其对提高机器学习模型的准确性和效率的影响。

生成的输出遵循我们提供给模型的示例。如果我们希望模型遵循某种样式或结果,那么使用角色助手非常有用。

至于参数,下面简单解释我们使用的每个参数:

  • max_tokens:该参数设置模型可以生成的最多字数。
  • temperature:该参数控制模型输出的不可预测性。该参数值越高,输出越具有多样性,越富有想象力。可接受的范围是从0到无穷大,但大于2的值不寻常。
  • top_p:又叫核抽样,该参数有助于确定模型得出输出所依赖的概率分布的子集。比如说,top_p值为0.1意味着模型只考虑抽样概率分布的前10%。其值可以从0到1,值越大,输出多样性越大。
  • frequency_penalty:这惩罚模型输出中的重复token。惩罚值的范围从-2到2,其中正值不鼓励重复使用token,负值则相反,鼓励重复使用单词。值为0表示不会对重复进行惩罚。

最后,您可以使用以下代码将模型输出改为JSON格式。

completion = client.chat.completions.create(model="gpt-3.5-turbo",response_format={ "type": "json_object" },messages=[{"role": "system", "content": "You are a helpful assistant designed to output JSON.."},{"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}]
)print(completion.choices[0].message.content){
"jargons": [
"利用预测分析发掘宝贵的洞察力",
"深入研究先进机器学习算法的微妙细处",
"利用大数据的力量推动数据驱动的决策"
]
}

结果采用JSON格式,并遵循我们输入到模型中的提示。

要获得完整的文本生成API文档,您可以在专门的页面上查看。

OpenAI图像生成

OpenAI模型对于文本生成用例很有用,也可以调用API以生成图像。

使用DALL•E模型,我们可以按要求生成图像。执行起来很简单,只需使用以下代码。

from openai import OpenAI
from IPython.display import Imageclient = OpenAI()response = client.images.generate(model="dall-e-3",prompt="White Piano on the Beach",size="1792x1024",quality="hd",n=1,
)image_url = response.data[0].url
Image(url=image_url)

针对这些参数,解释如下:

  • model:要使用的图像生成模型。目前,API只支持DALL•E 3和DALL•E 2模型。
  • prompt:这是文本描述,模型将在此基础上生成图像。
  • size:决定生成图像的分辨率。DALL•E3模型有三种选择:1024x1024、1024x1792或1792x1024。
  • quality:该参数影响生成图像的质量。如果需要计算时间,“标准”比“高清”快。
  • n:指定基于提示生成图像的数量。DALL•E3一次只能生成一个图像。DALL•E2一次可以生成多达10个图像。

还可以从现有的图像生成一个衍变图像,不过只能使用DALL•E2模型做到这点。API也只接受4 MB以下的正方形PNG图像。

from openai import OpenAI
from IPython.display import Imageclient = OpenAI()response = client.images.create_variation(image=open("white_piano_ori.png", "rb"),n=2,size="1024x1024"
)image_url = response.data[0].urlImage(url=image_url)

生成的图像可能不如DALL•E 3好,因为它使用旧模型。

OpenAI Vision

OpenAI是一家提供能够理解图像输入的模型的领先公司。这个模型名为Vision模型,有时被称为GPT-4V。该模型能够根据我们给出的图像回答问题。

不妨试一下Vision模型API。在本例中,我将使用从DALL•E3模型生成的白色钢琴图像,并将其存储在本地。此外,我还将创建一个函数,接受图像路径并返回图像描述文本。别忘了将api_key变量改为您的API Key。

from openai import OpenAI
import base64
import requests
def provide_image_description(img_path):client = OpenAI()api_key = 'YOUR-API-KEY'# Function to encode the imagedef encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode('utf-8')# Path to your imageimage_path = img_path# Getting the base64 stringbase64_image = encode_image(image_path)headers = {"Content-Type": "application/json","Authorization": f"Bearer {api_key}"}payload = {"model": "gpt-4-vision-preview","messages": [{"role": "user","content": [{"type": "text","text": """Can you describe this image? """},{"type": "image_url","image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}]}],"max_tokens": 300}response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)return response.json()['choices'][0]['message']['content']

这个图像显示一架大钢琴摆放在宁静的海滩上。钢琴是白色的,表明一种常与优雅联系在一起的色调。乐器放在海岸线的边缘,轻柔的海浪轻抚沙滩,泛起泡沫,正好碰到钢琴的底座和配套的凳子。海滩周围的环境暗示着一种宁静和隔绝的感觉,清澈的蓝天,远处蓬松的云,平静的大海延伸到地平线。无数大小形状各异的贝壳散落在沙滩上钢琴的周围,突出了环境的自然美和宁静的氛围。自然海滩环境中的古典乐器创造了超现实和画面充满诗意的构图。

您可以调整上面字典中的文本值以匹配您的Vision模型要求。

OpenAI音频生成

OpenAI还提供了基于文本到语音模型生成音频的模型。它非常易于使用,不过语音叙述风格很有限。此外,模型支持许多语言,您可以在语言支持页面上看到这些语言。

要生成音频,可以使用下面的代码。

from openai import OpenAI
client = OpenAI()speech_file_path = "speech.mp3"
response = client.audio.speech.create(model="tts-1",voice="alloy",input="I love data science and machine learning"
)
response.stream_to_file(speech_file_path)

您应该会在目录中看到音频文件。试着播放一下,看看是否符合标准。

目前,只有几个参数可以用于文本到语音模型:

  • model:要使用的文本到语音模型。只有两种模型可用:ts-1或ts-1-hd,其中ts-1优化速度,ts-1-hd优化质量。
  • voice:使用的语音样式,所有声音都被优化为英语。选择有alloy、echo、fable、onyx、nova和shimmer。
  • response_format:音频格式文件。目前支持的格式有mp3、opus、aac、flac、wav和pcm。
  • speed:生成的音频速度。您可以选择0.25到4之间的值。
  • input:用于创建音频的文本。目前,模型最多支持4096个字符。

OpenAI语音到文本

OpenAI提供了转录和翻译音频数据的模型。使用Whispers模型,我们可以将音频从支持的语言转录到文本文件中,并将其翻译成英语。

不妨从我们之前生成的音频文件中尝试简单的转录。

from openai import OpenAI
client = OpenAI()audio_file= open("speech.mp3", "rb")
transcription = client.audio.transcriptions.create(model="whisper-1",file=audio_file
)print(transcription.text)
from openai import OpenAI
client = OpenAI()audio_file = open("speech.mp3", "rb")
translate = client.audio.translations.create(model="whisper-1",file=audio_file
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在使用LabVIEW控制多个串口设备进行数据读取时,读取时间过长

在使用LabVIEW控制多个串口设备进行数据读取时,如果发现数据更新时间超过5秒,可以从以下几个方面进行分析和解决: 1. 串口配置与通信参数 确保每个串口的通信参数(波特率、数据位、停止位、校验位等)配置正确&#x…

【Spring Security系列】权限之旅:SpringSecurity小程序登录深度探索

作者:后端小肥肠 创作不易,未经允许严禁转载。 姊妹篇: 【Spring Security系列】Spring SecurityJWTRedis实现用户认证登录及登出_spring security jwt 退出登录-CSDN博客 1. 前言 欢迎来到【Spring Security系列】!在当今数字化…

识别剪贴板的内容并且添加磁力头

有时候复制的磁力链接并没有磁力头,而只有后面的内容,这个时候就必须给磁力链接添加开头magnet:xturn:btih:下载软件才能识别,如果经常需要这么做比较麻烦,于是我写了一个自动添加磁力头的小软件,运行即可自动添加&…

记录一个写SpringBoot中Hive数据可以正常提取但无法存到MySQL的bug

【背景】 我正在用SpringBoot框架写一个数据治理项目,目前所处阶段是将hive和hdfs中的元数据提取出来,存储到MySQL中,我的hive和hdfs上的数据存储在三台Linux服务器上(hadoop102-104),MySQL在我本地Window…

JAVA 转 Golang——速通 Golang 基础

文章目录 1. 前言:2. go的下载与配置3. Golang 目录结构4. Golang 的基础语法4.1. 变量声明4.2. 输入输出4.3. 条件控制4.4. 数组和切片4.5. 映射表 1. 前言: 根据鼠鼠的实习投递经历,由于越来越多中大型公司都使用 Golang,在现在…

vue + SpringBoot + flowable 实现工作流审批功能 (流程图部署)

目录 搭建前端vue项目 vue init webpack project_name 初始化项目 导入 element-ui 框架 npm install element-ui -s 设置 element-ui 全局配置 编辑 main.js 文件 import ElementUI from "element-ui"; // ui框架导入 import element-ui/lib/theme-chal…

文心大模型4.0创建智能体:资深研发专家一对一辅导

目录 前言 一、什么是文心智能体平台? 1、通过平台能做什么 2、平台的优势 3、智能体类型 二、如何访问和使用这个智能体? 1、零代码开发:一句话创建智能体 2、资深研发专家一对一辅导智能体介绍 总结 前言 在当今快节奏和高度竞争的…

Sping源码(八)—registerBeanPostProcessors

序言 之前我们用大量的篇幅介绍过invokeBeanFactoryPostProcessors()方法的执行流程。 而invokeBeanFactoryPostProcessors的主要逻辑就是遍历执行实现了BeanDefinitionRegistryPostProcesso类(主要是针对BeanDefinition的操作)和BeanFactoryPostProcessor(主要针对BeanFacrot…

干货 | 什么是单相感应电机控制器?一文带你看感应交流电机解决方案KP86202

单相感应电机控制器是一种用于控制单相感应电机运行的电子设备。单相感应电机是一种常见的电动机类型,广泛应用于家用电器、商业设备以及轻工制造等领域。 单相感应电机控制器通常包括电源模块、控制逻辑模块和功率输出模块。其主要功能是对单相感应电机进行启停、…

如何生成Github Badge徽章图标

如何生成徽章Badge 什么是徽章(Badge)生成小徽章shields网站开源项目的徽章lib版本徽章代码测试覆盖度开源协议Github workflow的徽章 开源代码实践效果py-enumjs-enumerate 什么是徽章(Badge) 在开源项目的README中,经常会见到一些徽章(Badge)小图标,如…

FastCopy

目录 背景: 简介: 原理: 下载地址: 工具的使用: 背景: 简介: FastCopy是一款速度非常快的拷贝软件,软件版本为5.7.1 Fastcopy是日本的最快的文件拷贝工具,磁盘间相互拷贝文件是司空见惯的事情,通常情况…

redis--redis Cluster

简介 解决了redis单机写入的瓶颈问题,即单机的redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素无中心架构的redis cluster机制,在无中心的redis集群当中,其每个节点保存当前节点数据和整个集群状态,每个节点都和其他所有节点连…

好书推荐|MATLAB科技绘图与数据分析

提升你的数据洞察力,用于精确绘图和分析的高级MATLAB技术 MATLAB科技绘图与数据分析——jd 本书内容 《MATLAB科技绘图与数据分析》结合作者多年的数据分析与科研绘图经验,详细讲解MATLAB在科技图表制作与数据分析中的使用方法与技巧。全书分为3部分&a…

C语言 数组——数组的定义和初始化

目录 为什么使用数组(Array)? 一维数组的定义 一维数组的初始化 一维数组元素的访问 一维数组元素的赋值 数组的逻辑存储结构 数组的物理存储结构 二维数组的定义和初始化 为什么使用数组(Array)? 一维数组的定义 一维 数组的定义 int a[10]; 定义一个有 10 个 int 型元素的…

构建传统企业信息化数字化智能化技术架构:挑战与机遇

随着数字化和智能化技术的快速发展,传统企业在信息化转型过程中面临着前所未有的机遇和挑战。如何构建适应企业需求的信息化数字化智能化技术架构,成为企业发展的关键之一。本文将探讨传统企业信息化数字化智能化技术架构的设计与实践。 一、数字化转型的…

【缺失的第一个正数】leetcode,python

真是越做越觉得自己所学尚浅,, 啊??????? 直接上石山代码:(过不了一点)。。。。。 class Solution:def firstMissingPositive(self…

SpringBoot发送邮箱

一、导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency> 二、添加配置 application.yml文件 将username修改为自己的邮箱&#xff0c;password修改为…

Linux基础入门和帮助-第二篇

马哥教育 Linux SRE 学习笔记 用户登录信息查看命令 whoami: 显示当前登录有效用户 [rootrocky8 ~]$whoami rootwho: 系统当前所有的登录会话 [rootrocky8 ~]$who root pts/0 2024-05-24 12:55 (10.0.0.1)w: 系统当前所有的登录会话及所做的操作 [rootrocky8 ~]…

WordPress 发布了独立的 SQLite 插件

之前 WordPress 在官方的 Performance Lab 插件实现 SQLite 模块&#xff0c;现在重构 SQLite 的实现&#xff0c;并且将其发布成一个独立的插件&#xff1a;SQLite Database Integration。 独立 SQLite 插件 最初的功能模块实现是基于 aaemnnosttv 的 wp-sqlite-db 插件修改实…

使用CyberRT写第一个代码, test ok

简介 计算框架是自动驾驶系统中的重中之重,也是整个系统得以高效稳定运行的基础。为了实时地完成感知、决策和执行,系统需要一系列的模块相互紧密配合,高效地执行任务流。由于各种原因,这些模块可能位于不同进程,也可能位于不同机器。这就要求计算框架中具有灵活的、高性…