官方 API 文档:https://platform.openai.com/docs/api-reference/introduction,对于我这样英语不好的同学读起来还是费劲,所以计算记录下学习的过程以方便后续查阅。
我们可以使用任何语言用 HTTP 请求来访问 API,官方提供了 Python 和 Node.js 的库,社区也提供了 C++ 、Java 等多种语言的库,详细的可以参考 Open AI Libraries。
让我们用 HTTP 请求发起一次对话
import requests
import json
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer OPENAI_API_KEY"
}
data = json.dumps({
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"temperature": 0.7
})
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, data=data)
# json格式化输出
print(json.dumps(response.json(), sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False))
示例使用 HTTP 查询用 gpt-3.5-tubo 模型、prompt 是 “Say this is a test!” 的内容,输出结果如下
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "This is a test!",
"role": "assistant"
}
}
],
"created": 1683960281,
"id": "chatcmpl-7FdHdSj8pSQAhq7BopIMSTAN7IVpw",
"model": "gpt-3.5-turbo-0301",
"object": "chat.completion",
"usage": {
"completion_tokens": 5,
"prompt_tokens": 14,
"total_tokens": 19
}
}
至此我们就使用 openAI API 完成了一次对话。gpt-3.5-turbo 模型多用于传统的文本生成任务,该模型还针对聊天场景进行了优化。
使用 GET https://api.openai.com/v1/models 可以查询当前可用的模型,同时会提供每个模型的基本信息。可用的模型非常多,具体每种模型有什么使用场景后续再进行分析。
{
"data": [
{
"created": 1677532384,
"id": "whisper-1",
"object": "model",
"owned_by": "openai-internal",
"parent": null,
"permission": [
{
"allow_create_engine": false,
"allow_fine_tuning": false,
"allow_logprobs": true,
"allow_sampling": true,
"allow_search_indices": false,
"allow_view": true,
"created": 1683912666,
"group": null,
"id": "modelperm-KlsZlfft3Gma8pI6A8rTnyjs",
"is_blocking": false,
"object": "model_permission",
"organization": "*"
}
],
"root": "whisper-1"
},
....
],
"object": "list"
}
使用 https://api.openai.com/v1/completions 根据参数信息执行一次完成。
参数解释
给定一些文本,模型以对话的形式返回结果。
接口 POST https://api.openai.com/v1/chat/completions,接口参数说明:
其他参数同上,不再一一介绍。
根据 prompt 和 内容,返回修改后的版本。使用 POST https://api.openai.com/v1/edits 接口,接口参数说明
根据提示生成图片,使用 POST https://api.openai.com/v1/images/generations 接口,接口参数如下
使用 POST https://api.openai.com/v1/images/edits 根据提示修改原图,接口参数如下
使用 POST https://api.openai.com/v1/images/variations 返回图片的变体,接口参数如下
使用 POST https://api.openai.com/v1/audio/transcriptions 接口将录音转成文本,接口参数如下
将录音转成英语,使用 POST https://api.openai.com/v1/audio/translations,接口参数同录音转文本。
可上传被用于 Fine-tuning 的文件。
获得当前用户的文件列表,使用 GET https://api.openai.com/v1/files 接口
上传文件,使用 POST https://api.openai.com/v1/files,所有的文件加起来可以上传 1GB 的内容,接口参数如下
删除文件,使用 DELETE https://api.openai.com/v1/files/{file_id} 接口,参数如下
使用给定的数据进行模型微调
创建 fine-tune 任务,使用接口 POST https://api.openai.com/v1/fine-tunes,接口参数如下
获得正在执行 fine-tuning 任务,接口 GET https://api.openai.com/v1/fine-tunes
获得某个 fine-tuning 任务的详细信息,接口 GET https://api.openai.com/v1/fine-tunes/{fine_tune_id},参数如下
取消某个 fine-tuning 任务,接口 POST https://api.openai.com/v1/fine-tunes/{fine_tune_id}/cancel,参数如下
获得 fine-tune 任务的更新状态,接口 GET https://api.openai.com/v1/fine-tunes/{fine_tune_id}/events
删除某个 fine-tune 任务,接口 DELETE https://api.openai.com/v1/models/{model}