2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
CSDN 2024-08-12 13:05:02 阅读 59
OpenAi 环境安装
首先确保您的计算机上已经安装了 Python。您可以从 Python 官方网站下载并安装最新版本 Python。安装时,请确保勾选 “Add Python to PATH” (添加环境变量)选项,以便在 cmd 命令行中直接使用 Python。
安装 OpenAI Python 库
打开命令行或终端窗口安装 OpenAI Python 库
<code>pip install openai
OpenAi Platform 教程
平台官网:https://platform.openai.com/
http API 调用方式文档:https://platform.openai.com/docs/api-reference/introduction
文本生成 GPT-4
GPT-4 模型概述
GPT-4是一个大型多模态模型(接受文本或图像输入和输出文本),由于其更广泛的一般知识和先进的推理能力,它可以比我们以前的任何模型都更准确地解决难题。付费客户可以在OpenAI API中使用GPT-4。与gpt-3.5 turbo一样,GPT-4针对聊天功能进行了优化,但在使用聊天完井API的传统完井任务中表现良好。在我们的文本生成指南中学习如何使用GPT-4。
测试案例
聊天模型将消息列表作为输入,并返回模型生成的消息作为输出。虽然聊天格式的设计是为了使多回合的对话变得容易,但它对于没有任何对话的单回合任务同样有用。
一个聊天完成API调用的例子如下:
<code>from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4",code>
messages=[
{ -- -->"role": "system", "content": "You are a helpful assistant."},
{ "role": "user", "content": "Who won the world series in 2020?"},
{ "role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{ "role": "user", "content": "Where was it played?"}
]
)
print(response)
数据结构
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
"role": "assistant"
},
"logprobs": null
}
],
"created": 1677664795,
"id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
"model": "gpt-3.5-turbo-0613",
"object": "chat.completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 57,
"total_tokens": 74
}
}
图像合成 DALL·E
DALL·E 模型概述
DALL·E是一个人工智能系统,可以通过自然语言的描述创造逼真的图像和艺术。DALL·e3目前支持在提示下创建具有特定大小的新映像的功能。DALL·e2还支持编辑现有映像,或创建用户提供的映像的变体。
测试案例
图像生成端点允许您在给定文本提示的情况下创建原始图像。当使用DALL·e3时,图像的大小可以是1024x1024、1024x1792或1792x1024像素。
默认情况下,图像以标准质量生成,但当使用DALL·e3时,您可以将质量设置为“hd”以增强细节。正方形的、标准质量的图像是最快生成的。您可以使用DALL·e3一次请求1个图像(通过并行请求请求更多),或者使用带n参数的DALL·e2一次至多请求10个图像。
from openai import OpenAI
client = OpenAI()
response = client.images.generate(
model="dall-e-3",code>
prompt="a white siamese cat",code>
size="1024x1024",code>
quality="standard",code>
n=1,
)
image_url = response.data[0].url
语音合成 TTS
TTS 模型概述
TTS是一种人工智能模型,可以将文本转换为自然发音的口语文本。我们提供了两种不同的模型变量,ts-1针对实时文本到语音的用例进行了优化,而ts-1-hd针对质量进行了优化。这些模型可以与Audio API中的Speech端点一起使用。
测试案例
语音端点接受三个关键输入:模型、应该转换为音频的文本和用于音频生成的语音。简单的请求如下所示:
from pathlib import Path
from openai import OpenAI
client = OpenAI()
speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
model="tts-1",code>
voice="alloy",code>
input="Today is a wonderful day to build something people love!"code>
)
response.stream_to_file(speech_file_path)
音色选择
尝试不同的声音(alloy, echo, fable, onyx, nova, and shimmer),找到一个符合你想要的语气和听众。当前的声音是针对英语优化的。
语音识别 Whisper
Whisper 概述
Whisper 是一个通用的语音识别模型。它是在不同音频的大型数据集上训练的,也是一个多任务模型,可以执行多语言语音识别以及语音翻译和语言识别。Whisper v2大型模型目前可通过我们的API使用Whisper -1模型名称。
目前,Whisper的开源版本和通过我们的API提供的版本之间没有区别。然而,通过我们的API,我们提供了一个优化的推理过程,这使得通过我们的API运行Whisper比执行它要快得多。
测试案例
语音识别 API 将要识别的音频文件和所需的音频转录输出文件格式作为输入。我们目前支持多种输入和输出文件格式。文件上传目前限制为 25mb,支持 mp3、mp4、mpeg、mpga、m4a、wav、webm 等文件类型的输入。
from openai import OpenAI
client = OpenAI()
audio_file = open("/path/to/file/audio.mp3", "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",code>
file=audio_file
)
print(transcription.text)
数据结构
{ -- -->
"text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger.
....
}
配置 OPENAI_API_KEY
查看 class OpenAI(SyncAPIClient) 类实现的源码片段发现,关于 api_key
和 base_url
会读取本地环境变量中 OPENAI_API_KEY
和 OPENAI_BASE_URL
变量。
if api_key is None:
api_key = os.environ.get("OPENAI_API_KEY")
if api_key is None:
raise OpenAIError(
"The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable"
)
self.api_key = api_key
if base_url is None:
base_url = os.environ.get("OPENAI_BASE_URL")
if base_url is None:
base_url = f"https://api.openai.com/v1"
dotenv 加载 .env 环境变量
dotenv是一个Python库(虽然也适用于其他编程语言,如JavaScript),它的主要功能是从.env文件中读取环境变量,并将这些变量加载到操作系统的环境变量中,使得Python应用程序可以轻松地访问这些变量。.env文件是一个纯文本文件,其中包含键值对(key-value pairs),每个键值对占据一行,格式为KEY=VALUE。
pip install python-dotenv
将敏感信息(如API密钥、数据库密码等)存储在环境变量中,而不是硬编码在代码中,是一种良好的安全实践。这样可以减少敏感信息泄露的风险,因为这些值不会存储在代码库中,也不会在部署时暴露出来。
在 Python 代码中,使用 python-dotenv 库加载 .env 文件,并访问其中的环境变量。这通常通过 from dotenv import load_dotenv
和 load_dotenv()
函数实现。访问环境变量:加载.env文件后,可以使用 os.getenv('KEY')
的方式访问环境变量。
from dotenv import load_dotenv
load_dotenv()
图像理解 GPT-4o
gpt - 40和GPT-4 Turbo都具有视觉功能,这意味着这些模型可以接收图像并回答有关图像的问题。从历史上看,语言模型系统一直受到单一输入形式文本的限制。
模型可以通过两种主要方式使用图像:通过传递到图像的链接或在请求中直接传递base64编码的图像。图像可以在用户消息中传递。
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",code>
messages=[
{ -- -->
"role": "user",
"content": [
{ "type": "text", "text": "What’s in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
},
},
],
}
],
max_tokens=300,
)
print(response.choices[0])
上传base64编码的图像如果你在本地有一张或一组图像,你可以将它们以base64编码的格式传递给模型,下面是一个实际的例子
import base64
import requests
api_key = "YOUR_OPENAI_API_KEY"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "path_to_your_image.jpg"
base64_image = encode_image(image_path)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer { api_key}"
}
payload = {
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What’s in 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)
print(response.json())
上一篇: anyMatch 详细解析 Java 8 Stream API 中的 anyMatch 方法
下一篇: 嵌入式要卷成下一个Java了吗?
本文标签
2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。