使用Python探究OpenAI API

news2024/7/6 17:32:03

谁没听说过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 Image

client = 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 Image

client = OpenAI()

response = client.images.create_variation(
  image=open("white_piano_ori.png", "rb"),
  n=2,
  size="1024x1024"
)

image_url = response.data[0].url

Image(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 image
    def encode_image(image_path):
      with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')
   
    # Path to your image
    image_path = img_path
   
    # Getting the base64 string
    base64_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.coloradmin.cn/o/1691042.html

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

相关文章

齐护K210系列教程(三十四)_视觉PID巡线小车

视觉PID巡线小车 1.前言2.简介3.代码讲解3.1初始化3.2.色块查找3.3色块分析3.3.1 区域13.3.2 区域2 3.4 侦测关键点部分3.4.1正常巡线3.4.2 右转路口 3.4.3十字路口3.4. PID计算 4.完整代码5.小车端程序6.参考程序联系我们 1.前言 本课程主要讲述如何使用AIstart_k210主板完成…

C语言——free() 和 delete() 怎样处理指针?

一、问题 从字⾯上理解,free() 是释放,给予⾃由的意思;⽽ delete() 的含义⽐较直接,是删除的意思。这两个函数的⽬的就是不想再与这个指针有任何关联,那么它们到底怎样处理了不再使⽤的指针呢? 二、解答 其…

❤Element的使用element

❤Element的使用 1、input输入框 禁止自动补全和下拉提示 input 输入框在输入后浏览器会记录用户输入的值,在下次输入的时候会将记录的值提示在输入框的下面,当输入框是密码的时候,这样可以看见上次输入的密码,这样用户体验不好…

融资融券大揭秘:两融入门操作最新指南!

#引言# 随着中国资本市场日新月异的发展进程,融资融券交易已崭露头角,成为投资者们瞩目的焦点。作为一种颇具影响力的投资方式,它正逐渐吸引越来越多的投资者关注。本文旨在为大家深入剖析融资融券交易的核心概念、详尽的操作步骤以及必须留意…

数据清洗(ETL)案例实操

文章目录 数据清洗(ETL)概述案例需求和分析代码实现和结果分析 数据清洗(ETL)概述 “ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换&…

医院挂号就诊系统的设计与实现

前端使用Vue.js 后端使用SpiringBoot MyBatis 数据使用MySQL 需要项目和论文加企鹅:2583550535 医院挂号就诊系统的设计与实现_哔哩哔哩_bilibili 随着社会的发展,医疗资源分布不均,患者就诊难、排队时间长等问题日益突出,传统的…

ABAP Json解析案例

ABAP解析返回的JSON 案例 DATA:LTOKEN TYPE STRING.DATA: LL_LINES(10),"行数LL_TABIX(10),"循环标号LL_PECNT TYPE P LENGTH 6 DECIMALS 2, "百分比LL_PECET(6),"百分数LL_TEXT(40)."消息CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.* …

文心智能体【焦虑粉碎机】——帮你赶走“坏”情绪

目录: 引言1.登录 文心智能体平台2.创建智能体3.配置智能体🌷 头像设置🌷 名称设置🌷 简介设置🌷指令设置🌷 开场白设置🌷 引导示例设置 4.使用智能体 引言 随着ChatGPT的爆火,人工智…

32.5k star!!替换 postman?【送源码】

在软件开发过程中,API(应用程序接口)扮演着至关重要的角色。为了确保 API 的可靠性和性能,开发人员需要一种高效的方式来测试和调试它们。这方面的工具,大家经常用到的应该就是 postman 了。不过,今天了不起…

文章解读与仿真程序复现思路——电力系统保护与控制EI\CSCD\北大核心《基于改进粒子滤波的锂离子电池剩余寿命预测 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

网络编程 一

一、UDP socket api的使用 Java 把系统原生的封装了. 核心的类有两个: 1 -> DatagramSocket 操作系统中,有一类文件,就叫socket文件. socket文件,抽象表示了 " 网卡"这样的硬件设备. 进行网络通信最核心的硬件设备网卡 通过网卡发送数据,就是写…

基于STM32F103和HC-SR04的12路RS485与Modbus通信方案

基于STM32F103和HC-SR04的12路RS485与Modbus通信方案 引言: 随着科技的快速发展,智能汽车技术已成为汽车工业的一个重要发展方向。在智能汽车的众多技术中,环境感知系统扮演着至关重要的角色。超声波雷达作为环境感知系统中的一种低成本、高可…

macOS Monterey 12.7.5 (21H1222) Boot ISO 原版可引导镜像下载

macOS Monterey 12.7.5 (21H1222) Boot ISO 原版可引导镜像下载 5 月 13 日凌晨,macOS Sonoma 14.5 发布,同时带来了 macOS Ventru 13.6.7 和 macOS Monterey 12.7.5 安全更新。 本站下载的 macOS 软件包,既可以拖拽到 Applications&#x…

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…

BeanFactoryPostProcessor作用

介绍 BeanFactoryPostProcessor是spring中一个很重要的接口,位于spring流程中的获取BeanDefinition之后,实例化之前(点击spring流程),我们可以实现该接口并注入spring容器中进行拓展(对BeanDefinition进行自定义修改)…

springboot实现多开发环境匹配置(超级简洁没废话)

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

深度神经网络教程(个人总结版)

深度神经网络&#xff08;Deep Neural Networks, DNN&#xff09;是机器学习和人工智能的核心技术之一&#xff0c;已经广泛应用于图像识别、自然语言处理、语音识别、自动驾驶等领域。本文将详细介绍深度神经网络的背景、基本原理、架构、训练方法、优化技巧以及常见应用。 一…

Nodejs+Websocket+uniapp完成聊天

前言 最近想做一个聊天&#xff0c;但是网上的很多都是不能实现的&#xff0c;要么就是缺少代码片段很难实现websocket的链接&#xff0c;更别说聊天了。自己研究了一番之后实现了这个功能。值得注意的是&#xff0c;我想在小程序中使用socket.io&#xff0c;不好使&#xff0…

每日一题(3)——统计合格率(不会哦)

我们来看一个案例&#xff1a; 如何理解 pass【j】 ? 为什么pass[0]3,pass[1]4? 我一直没有想通&#xff0c;自己重新测试了一些数据&#xff0c;还是没有想明白&#xff0c;希望大家能够集思广益&#xff0c;点拨点拨&#xff1a; 下面的数组我随便使用的数据&#xff0c; …

.NET 一款兼容Exchange获取密钥的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…