Python使用OpenAI的API

OpenAI API可以应用于几乎所有涉及生成自然语言、代码或图像的任务。提供了一系列不同能力级别的模型,适用于不同任务的,并且能够微调自己的自定义模型。

OpenAI API

OpenAI API可以应用于几乎所有涉及生成自然语言、代码或图像的任务。提供了一系列不同能力级别的模型,适用于不同任务的,并且能够微调自己的自定义模型。

OpenAI API参考:https://platform.openai.com/docs/api-reference

安装OpenAI库

或安装其他的开源大语言模型

bash
复制代码
pip install openai

设置OpenAI API秘钥

设置OpenAI API秘钥有如下2种方式

python
复制代码
import os from openai import OpenAI # 方式一 # 设置OpenAI的BASE_URL、API_Key # client = OpenAI(api_key="", base_url="") # 方式二 # 设置OpenAI的BASE_URL、API_Key os.environ["OPENAI_BASE_URL"] = "https://xxx.com/v1" os.environ["OPENAI_API_KEY"] = "sk-fDqouTlU62yjkBhF46284543Dc8f42438a9529Df74B4Ce65" client = OpenAI()

列出模型信息

列出当前可用的模型,并提供每个模型的基本信息

python
复制代码
models = client.models.list() print(models)
python
复制代码
SyncPage[Model](data=[Model(id='gpt-3.5-turbo-1106', created=1698959748, object='model', owned_by='system'), Model(id='gpt-3.5-turbo-instruct', created=1692901427, object='model', owned_by='system'), Model(id='gpt-3.5-turbo-16k-0613', created=1685474247, object='model', owned_by='openai')], object='list')

各项参数:

python
复制代码
created: 模型创建的时间戳,单位为Unix时间戳(自197011日(00:00:00 GMT)以后的秒数) id: 模型的唯一标识符 object: 表示的是当前对象的类型 owned_by: 表示的是模型的所有者

获取模型ID列表

python
复制代码
model_list = [] for model in models.data: model_list.append(model.id ) print(model_list)

根据模型ID获取指定模型实例

python
复制代码
from openai import OpenAI client = OpenAI() gpt = client.models.retrieve("gpt-3.5-turbo") print(gpt)
python
复制代码
Model(id='gpt-3.5-turbo', created=1677610602, object='model', owned_by='openai')

Chat聊天

使用Chat聊天API实现对话任务,以消息列表作为输入,并返回模型生成的消息作为输出。尽管聊天格式旨在使多轮对话变得简单,但它同样适用于没有任何对话的单轮任务。

python
复制代码
from openai import OpenAI # 导入OpenAI库 client = OpenAI() # 创建OpenAI客户端对象 # 调用模型 completion = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是一个乐于助人的助手。"}, {"role": "user", "content": "你好!"} ] ) # 输出模型回复 print(completion.choices[0].message)
python
复制代码
ChatCompletionMessage(content='你好! 有什么问题我可以帮助你解答吗?', role='assistant', function_call=None, tool_calls=None)

消息角色

messages是一个列表,包含多个消息。每个消息都有一个role和content。

消息角色有三种:systemuserassistant。每一种角色都有不同的含义和作用。

sql
复制代码
system:系统消息主要用于设定对话的背景或上下文。可以帮助模型理解它在对话中的角色和任务。例如,通过系统消息来设定一个场景,让模型知道它是在扮演一个知识丰富的AI助手。 user:用户消息包含用户想要模型回答或完成的请求。用户消息可以是一个问题、一段话,或者任何其他用户希望模型响应的内容。 assistant:助手消息是模型的回复。

请求参数说明

使用OpenAI时,调用大模型API,大概会涉及以下参数:

参数 含义
model 模型类型
prompt 提示,输入给模型的问题或者指示,告诉模型要它做什么
temperature 可以影响模型输出的随机性。值越高(接近1),输出就越随机;值越低(接近0),输出就越确定
max_tokens 可以限制模型输出的最大长度,长度是以Tokens为单位,而一个Token可以是一个字、一个词或一个字符,取决于语言和模型。
suffix 允许用户为模型生成的输出文本后附加一个后缀
top_p 与temperature参数类似,使用所谓的核心抽样。模型只会考虑概率质量最高的Tokens。例如,top_p设置为0.1表示只有前10%最有可能的Tokens会被考虑。
n 决定为每个提示生成多少个完整的输出。注意:这个参数可能会更快地耗尽Token配额。
stream 决定是否实时流式传输生成的Tokens。如果设置为true, Tokens将在生成时被发送
logprobs 要求API包括最有可能的Tokens的对数概率
echo 设置为true,除了生成的完成内容外,还会回显提示
stop 允许指定一个或多个序列,当模型遇到这些序列时会停止生成Tokens,返回的文本将不包含stop序列。
presence_penalty 一个在-2.0到2.0之间的数字。正值会惩罚已经出现在文本中的新Tokens,这可以帮助模型更多地谈论新话题
frequency_penalty 一个在-2.0到2.0之间的数字。正值会惩罚到目前为止在文本中频繁出现的Tokens,这可以减少模型重复相同内容的可能性
best_of 在服务器端生成指定数量的完整输出,然后返回其中概率最高的那个(即每个Token的对数概率最高的那个)
logit_bias 可以修改指定Tokens在生成文本中出现的可能性。可以提供一个JSON对象,将Tokens映射到-100到100之间的偏置值
user 可选参数,表示最终用户的唯一标识符,可以帮助OpenAl监测和检测滥用

响应参数说明

使用OpenAI时,调用大模型API后,模型响应内容,大概会涉及以下参数:

字段 含义
id 生成任务分配的唯一标识符
object 对象类型的标志,它标志着这是一个聊天模型的生成任务
created 生成任务创建的时戳
model 生成任务的模型名称
choices 返回一个列表,其中包含模型生成的所有条目。如果不指定参数n,则通常只包含一个条目,即索引[0]。
每个条目都包含以下信息:
message: 包含role和content字段
finish_reason: 生成任务结束的原因,可以是stop(遇到停止符)、length(达到最大长度)、content_filter(被OpenAI的内容过滤器移除)
index: 表示该选项在choices列表中的索引位置。
usage 提供了关于文本生成过程的统计信息,包括prompt_tokens(提示的Token数量)、completion_tokens(生成的Token数量)、total_.tokens(总的Token数量)

文本生成

文本生成补全(Completion)是该API的核心功能,提供了一个灵活和强大的接口。用户输入一些文本作为提示词(Prompt),API会返回匹配用户提供的指令或上下文的补全文本。

python
复制代码
from openai import OpenAI # 导入OpenAI库 client = OpenAI() # 创建OpenAI客户端对象 response = client.completions.create( model="gpt-3.5-turbo-instruct", prompt="你好,很高兴", temperature=0.5 ) print(response.choices[0].text)
python
复制代码
认识你!我是一个人工智能助手

语音生成

接受三个关键输入:

复制代码
模型 应转换为音频的文本 用于生成音频的语音
python
复制代码
from openai import OpenAI # 导入OpenAI库 client = OpenAI() # 创建OpenAI客户端对象 speech_file_path = "./speech.mp3" # 定义要保存生成语音文件的路径 # 向OpenAI API 发送请求,生成语音文件 response = client.audio.speech.create( model="tts-1", # 指定使用的语音生成模型 voice="alloy", # 指定使用的语音风格 input="Today is a wonderful day to build something people love!" # 要转换为语音的输入文本 ) # 将生成的语音文件保存到本地磁盘 response.stream_to_file(speech_file_path)

语音选项:alloy、echo、fable、onyx、nova、shimmer

支持的输出格式:默认响应格式为“mp3”,但也可以使用“opus”、“aac”、“flac”和“pcm”等其他格式。

复制代码
Opus:用于互联网流媒体和通信,低延迟 AAC:用于数字音频压缩,YouTube、Android、iOS 首选 FLAC:用于无损音频压缩,受到音频爱好者存档的青睐 WAV:未压缩的 WAV 音频,适合低延迟应用,以避免解码开销 PCM:与 WAV 类似,但包含 24kHz 的原始样本(16 位有符号、低端),没有标头

旧版OpenAI API

安装OpenAI库

OpenAI API应该是从1.0.0版本开始进行了升级,写法相比新版API有所不同

bash
复制代码
pip install openai==0.28.1

设置OpenAI API秘钥

python
复制代码
import os os.environ["OPENAI_BASE_URL"] = "https://xxx.com/v1" os.environ["OPENAI_API_KEY"] = "sk-BGFnOL9Q4c99B378B66cT3BlBKFJ28839b4813bc437B82c2"

Chat聊天

python
复制代码
import openai response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是一个乐于助人的助手。"}, {"role": "user", "content": "你好啊!"}, ], temperature=0.8, max_tokens=30 ) print(response['choices'][0]['message']['content'])

文本生成

python
复制代码
import openai response = openai.completions.create( model="gpt-3.5-turbo-instruct", prompt="你是" ) print(response.choices[0].text.strip())
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
人工智能

Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧

2024-5-3 19:18:57

人工智能

给picgo上传的图片加个水印

2024-5-3 19:19:04

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索