ChatGptAPI中文文档

准备调用ChatGPT接口,过了一遍官方接口文档,由于没有学过AI相关知识,有些参数和术语还是不太了解,有些单词使用很生僻的意思,翻译的很生硬,先大致翻译一遍,后面再看下手册理解下,回过头来补充下这个API文档,帮助理解。感觉prompt(提示)、Embeddings(嵌入)、Fine-tunes(微调)有点牛逼。

介绍

要安装官方 Python 绑定,请运行以下命令:

pip install openai

要安装官方 Node.js 库,请在 Node.js 项目目录中运行以下命令:

npm install openai

认证

OpenAI API 使用 API 密钥进行身份验证。访问您的API 密钥页面以检索您将在请求中使用的 API 密钥。

**请记住,您的 API 密钥是秘密的!**不要与他人共享或在任何客户端代码(浏览器、应用程序)中公开它。生产请求必须通过您自己的后端服务器进行路由,您的 API 密钥可以从环境变量或密钥管理服务中安全加载。

所有 API 请求都应在 HTTP 标头中包含您的 API 密钥,Authorization如下所示:

Authorization: Bearer OPENAI_API_KEY

请求组织

对于属于多个组织的用户,您可以传递一个标头来指定哪个组织用于 API 请求。来自这些 API 请求的使用将计入指定组织的订阅配额。

curl命令示例:

curl https://api.openai.com/v1/models \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "OpenAI-Organization: org-oiD85Cuq7BToDgSamwH7synm"

Python 包的示例openai

import os
import openai
openai.organization = "org-oiD85Cuq7BToDgSamwH7synm"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()

Node.js 包的示例openai

import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({organization: "org-oiD85Cuq7BToDgSamwH7synm",apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();

组织 ID 可以在您的组织设置页面上找到。

发出请求

您可以将下面的命令粘贴到您的终端中以运行您的第一个 API 请求。确保替换$OPENAI_API_KEY为您的秘密 API 密钥。

curl https://api.openai.com/v1/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "Say this is a test!"}],"temperature": 0.7}'

此请求查询模型以完成以提示“ Say this is a testgpt-3.5-turbo ”开头的文本。您应该会收到类似于以下内容的响应:

{"id":"chatcmpl-abc123","object":"chat.completion","created":1677858242,"model":"gpt-3.5-turbo-0301","usage":{"prompt_tokens":13,"completion_tokens":7,"total_tokens":20},"choices":[{"message":{"role":"assistant","content":"\n\nThis is a test!"},"finish_reason":"stop","index":0}]
}

现在你已经生成了你的第一个聊天完成。我们可以看到finish_reasonisstop这意味着 API 返回了模型生成的完整完成。在上面的请求中,我们只生成了一条消息,但是您可以设置参数n来生成多条消息选择。在这个例子中,gpt-3.5-turbo更多的是用于传统的文本完成任务。该模型还针对聊天应用程序进行了优化。

模型

列出并描述 API 中可用的各种模型。您可以参考模型文档以了解可用的模型以及它们之间的区别。

列出型号

GET https://api.openai.com/v1/models

列出当前可用的模型,并提供有关每个模型的基本信息,例如所有者和可用性。

# 请求示例
curl https://api.openai.com/v1/models \-H "Authorization: Bearer $OPENAI_API_KEY"
//响应
{"data": [{"id": "model-id-0","object": "model","owned_by": "organization-owner","permission": [...]},{"id": "model-id-1","object": "model","owned_by": "organization-owner","permission": [...]},{"id": "model-id-2","object": "model","owned_by": "openai","permission": [...]},],"object": "list"
}

检索模型

检索模型实例,提供有关模型的基本信息,例如所有者和权限。

GET https://api.openai.com/v1/models/{model}

路径参数

参数名类型是否必输描述
modelstring用于此请求的模型的 ID

完成(Completions)

给定一个提示,该模型将返回一个或多个预测的完成,并且还可以返回每个位置的替代标记的概率。

创建完成(Create completion)

为提供的提示和参数创建完成

POST https://api.openai.com/v1/completions

请求体

参数名类型是否必输默认值描述
modelstring要使用的模型的 ID。您可以使用List models API 来查看所有可用模型,或查看我们的模型概述以了解它们的描述。
promptstringarray<|endoftext|>生成完成的提示,编码为字符串、字符串数组、标记数组或标记数组数组。请注意,<|endoftext|>是模型在训练期间看到的文档分隔符,因此如果未指定提示,模型将生成新文档的开头。
suffixstringnull插入文本完成后出现的后缀。
max_tokensinteger16完成时生成的最大标记数。您的提示加上的标记计数max_tokens不能超过模型的上下文长度。大多数模型的上下文长度为 2048 个标记(最新模型除外,它支持 4096)。标记翻译请看文章末尾
temperaturenumber1使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。
我们通常建议改变这个或top_p但不是两者。
top_pnumber1一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。
我们通常建议改变这个或temperature但不是两者。
ninteger1为每个提示生成多少完成。
**注意:**因为这个参数会产生很多完成,它会很快消耗你的令牌配额。请谨慎使用并确保您对max_tokens和进行了合理的设置stop
streambooleanfalse是否回流部分进度。如果设置,标记将在可用时作为仅数据服务器发送事件发送,流由data: [DONE]消息终止。
logprobsintegernulllogprobs 上包括对数概率最有可能的标记,以及所选标记。例如,如果 logprobs 为 5,则 API 将返回 5 个最有可能的标记的列表。 API 将始终返回采样令牌的 logprob,因此响应中最多可能有 logprobs+1 个元素。
logprobs 的最大值为 5。如果您需要更多,请通过我们的帮助中心联系我们并描述您的用例。
echobooleanfalse除了完成之外,还回显提示
stopstringarraynullAPI 将停止生成更多标记的最多 4 个序列。
presence_penaltynumber0-2.0 和 2.0 之间的数字。正值会根据到目前为止是否出现在文本中来惩罚新标记,从而增加模型谈论新主题的可能性。
frequency_penaltynumber0-2.0 和 2.0 之间的数字。正值会根据新标记在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性。
best_ofinteger1在服务器端生成 best_of 完成,并返回“最佳”。 每个标记具有最高对数概率的那个。无法流式传输结果。
当使用nbest_of 控制候选完成的数量,n 指定返回多少 - best_of 必须大于 n
**注意:**因为这个参数会产生很多完成,它会很快消耗你的令牌配额。请谨慎使用并确保您对max_tokens和进行了合理的设置stop
logit_biasmapnull修改指定标记出现在完成中的可能性。接受一个 json 对象,该对象将标记(由 GPT 分词器中的标记ID 指定)映射到从 -100 到 100 的相关偏差值。您可以使用此标记生成器工具(适用于 GPT-2 和 GPT-3)将文本转换为标记 ID。从数学上讲,偏差会在采样之前添加到模型生成的对数中。确切的效果因模型而异,但 -1 和 1 之间的值应该会减少或增加选择的可能性;像 -100 或 100 这样的值应该导致相关标记的禁止或独占选择。例如,您可以传递 {“50256”: -100} 以防止生成 <|endoftext|>
userstring代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。 了解更多。

示例请求

curl https://api.openai.com/v1/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"model": "text-davinci-003","prompt": "Say this is a test","max_tokens": 7,"temperature": 0}'

参数

{"model": "text-davinci-003","prompt": "Say this is a test","max_tokens": 7,"temperature": 0,"top_p": 1,"n": 1,"stream": false,"logprobs": null,"stop": "\n"
}

响应

{"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7","object": "text_completion","created": 1589478378,"model": "text-davinci-003","choices": [{"text": "\n\nThis is indeed a test","index": 0,"logprobs": null,"finish_reason": "length"}],"usage": {"prompt_tokens": 5,"completion_tokens": 7,"total_tokens": 12}
}

聊天

给定聊天对话,模型将返回聊天完成响应。

创建聊天完成

为聊天消息创建完成

POST https://api.openai.com/v1/chat/completions

请求体

参数名类型是否必输默认值描述
modelstring要使用的模型的 ID。有关哪些模型适用于聊天 API 的详细信息,请参阅模型端点兼容性表。
messagesarray以聊天格式生成聊天完成的消息。
temperaturenumber1使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。
我们通常建议改变这个或top_p但不是两者。
top_pnumber1一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。
我们通常建议改变这个或temperature但不是两者。
ninteger1为每个输入消息生成多少个聊天完成选项。
streambooleanfalse如果设置,将发送部分消息增量,就像在 ChatGPT 中一样。令牌将在可用时作为纯数据服务器发送事件发送,流由data:[DONE] 消息终止。有关示例代码,请参阅 OpenAI Cookbook。
stopstringarraynullAPI 将停止生成更多标记的最多 4 个序列。
max_tokensintegerinf聊天完成时生成的最大标记数。
输入标记和生成标记的总长度受模型上下文长度的限制。
presence_penaltynumber0-2.0 和 2.0 之间的数字。正值会根据到目前为止是否出现在文本中来惩罚新标记,从而增加模型谈论新主题的可能性。
frequency_penaltynumber0-2.0 和 2.0 之间的数字。正值会根据新标记在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性。
logit_biasmapnull修改指定标记出现在完成中的可能性。接受一个 json 对象,该对象将标记(由 GPT 分词器中的标记ID 指定)映射到从 -100 到 100 的相关偏差值。您可以使用此标记生成器工具(适用于 GPT-2 和 GPT-3)将文本转换为标记 ID。从数学上讲,偏差会在采样之前添加到模型生成的对数中。确切的效果因模型而异,但 -1 和 1 之间的值应该会减少或增加选择的可能性;像 -100 或 100 这样的值应该导致相关标记的禁止或独占选择。
userstring代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。 了解更多。

示例请求

curl https://api.openai.com/v1/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "Hello!"}]}'

参数

{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "Hello!"}]
}

响应

{"id": "chatcmpl-123","object": "chat.completion","created": 1677652288,"choices": [{"index": 0,"message": {"role": "assistant","content": "\n\nHello there, how may I assist you today?",},"finish_reason": "stop"}],"usage": {"prompt_tokens": 9,"completion_tokens": 12,"total_tokens": 21}
}

编辑

给定提示和指令,模型将返回提示的编辑版本。

创建编辑

为提供的输入、指令和参数创建新的编辑。

POST https://api.openai.com/v1/edits

请求体

参数名类型是否必输默认值描述
modelstring要使用的模型的 ID。您可以将text-davinci-edit-001code-davinci-edit-001模型与此端点一起使用。
inputstring空字符串用作编辑起点的输入文本。
instructionstring告诉模型如何编辑提示的指令。
ninteger1为输入和指令生成多少编辑。
temperaturenumber1使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。
我们通常建议改变这个或top_p但不是两者。
top_pnumber1一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。
我们通常建议改变这个或temperature但不是两者。

示例请求

curl https://api.openai.com/v1/edits \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"model": "text-davinci-edit-001","input": "What day of the wek is it?","instruction": "Fix the spelling mistakes"}'

参数

{"model": "text-davinci-edit-001","input": "What day of the wek is it?","instruction": "Fix the spelling mistakes",
}

响应

{"object": "edit","created": 1589478378,"choices": [{"text": "What day of the week is it?","index": 0,}],"usage": {"prompt_tokens": 25,"completion_tokens": 32,"total_tokens": 57}
}

图片

给定提示和/或输入图像,模型将生成新图像。

相关指南:图像生成

创建图像

根据提示创建图像。

POST https://api.openai.com/v1/images/generations

请求体

参数名类型是否必输默认值描述
promptstring所需图像的文本描述。最大长度为 1000 个字符。
ninteger1要生成的图像数。必须介于 1 和 10 之间。
sizestring1024x1024生成图像的大小。必须是256x256 512x512 1024x1024之一
response_formatstringurl生成的图像返回的格式。必须是 urlb64_json
usernumber1代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。 了解更多。

示例请求

curl https://api.openai.com/v1/images/generations \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"prompt": "A cute baby sea otter","n": 2,"size": "1024x1024"}'

参数

{"prompt": "A cute baby sea otter","n": 2,"size": "1024x1024"
}

响应

{"created": 1589478378,"data": [{"url": "https://..."},{"url": "https://..."}]
}

创建图像编辑

在给定原始图像和提示的情况下创建编辑或扩展图像。

POST https://api.openai.com/v1/images/edits

请求体

参数名类型是否必输默认值描述
imagestring要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。如果未提供遮罩,图像必须具有透明度,将用作遮罩。
maskstring一个附加图像,其完全透明区域(例如,alpha 为零)指示应编辑image的位置。 必须是有效的 PNG 文件,小于 4MB,并且具有与image相同的尺寸。
promptstring所需图像的文本描述。最大长度为 1000 个字符。
ninteger1要生成的图像数。必须介于 1 和 10 之间。
sizestring1生成图像的大小。必须是256x256 512x512 1024x1024 之一
response_formatstringurl生成的图像返回的格式。必须是 或url b64_json之一
userstring代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。 了解更多。

示例请求

curl https://api.openai.com/v1/images/edits \-H "Authorization: Bearer $OPENAI_API_KEY" \-F image="@otter.png" \-F mask="@mask.png" \-F prompt="A cute baby sea otter wearing a beret" \-F n=2 \-F size="1024x1024"

响应

{"created": 1589478378,"data": [{"url": "https://..."},{"url": "https://..."}]
}

创建图像变体

创建给定图像的变体。

POST https://api.openai.com/v1/images/variations

请求体

参数名类型是否必输默认值描述
imagestring用作变体基础的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。
ninteger1要生成的图像数。必须介于 1 和 10 之间。
sizestring1024x1024生成图像的大小。必须是256x256 512x512 1024x1024 之一
response_formatstringurl生成的图像返回的格式。必须是 或url b64_json之一
userstring代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。 了解更多。

请求示例

curl https://api.openai.com/v1/images/variations \-H "Authorization: Bearer $OPENAI_API_KEY" \-F image="@otter.png" \-F n=2 \-F size="1024x1024"

响应

{"created": 1589478378,"data": [{"url": "https://..."},{"url": "https://..."}]
}

嵌入

获取给定输入的矢量表示,机器学习模型和算法可以轻松使用该表示。

相关指南:嵌入

创建嵌入

创建表示输入文本的嵌入向量。

POST https://api.openai.com/v1/embeddings

请求体

参数名类型是否必输默认值描述
imagestring要使用的模型的 ID。您可以使用List models API 来查看所有可用模型,或查看我们的模型概述以了解它们的描述。
ninteger1输入文本以获取嵌入,编码为字符串或标记数组。要在单个请求中获取多个输入的嵌入,请传递一个字符串数组或令牌数组数组。每个输入的长度不得超过 8192 个标记。
sizestring1024x1024代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。了解更多。

请求示例

curl https://api.openai.com/v1/embeddings \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "Content-Type: application/json" \-d '{"input": "The food was delicious and the waiter...","model": "text-embedding-ada-002"}'

参数

{"model": "text-embedding-ada-002","input": "The food was delicious and the waiter..."
}

响应

{"object": "list","data": [{"object": "embedding","embedding": [0.0023064255,-0.009327292,.... (1536 floats total for ada-002)-0.0028842222,],"index": 0}],"model": "text-embedding-ada-002","usage": {"prompt_tokens": 8,"total_tokens": 8}
}

音频

了解如何将音频转换为文本。

相关指南:语音转文本

创建转录

将音频转录为输入语言。

POST https://api.openai.com/v1/audio/transcriptions

请求体

参数名类型是否必输默认值描述
filestring要转录的音频文件,采用以下格式之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
modelstring要使用的模型的 ID。仅whisper-1当前可用。
promptstring1024x1024可选文本,用于指导模型的风格或继续之前的音频片段。提示应与音频语言相匹配。
response_formatstringjson转录输出的格式,采用以下选项之一:json、text、srt、verbose_json 或 vtt。
temperaturenumber0采样温度,介于 0 和 1 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。如果设置为 0,模型将使用对数概率自动升高温度,直到达到特定阈值。
languagestring输入音频的语言。以ISO-639-1格式提供输入语言将提高准确性和延迟。

请求示例

curl https://api.openai.com/v1/audio/transcriptions \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "Content-Type: multipart/form-data" \-F file="@/path/to/file/audio.mp3" \-F model="whisper-1"

参数

{"file": "audio.mp3","model": "whisper-1"
}

响应

{"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. This is a place where you can get to do that."
}

创建翻译

将音频翻译成英文。

POST https://api.openai.com/v1/audio/translations

请求体

参数名类型是否必输默认值描述
filestring要翻译的音频文件,采用以下格式之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
modelstring要使用的模型的 ID。仅whisper-1当前可用。
promptstring1024x1024可选文本,用于指导模型的风格或继续之前的音频片段。提示应为英文
response_formatstringjson转录输出的格式,采用以下选项之一:json、text、srt、verbose_json 或 vtt。
temperaturenumber0采样温度,介于 0 和 1 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。如果设置为 0,模型将使用对数概率自动升高温度,直到达到特定阈值。

请求示例

curl https://api.openai.com/v1/audio/translations \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "Content-Type: multipart/form-data" \-F file="@/path/to/file/german.m4a" \-F model="whisper-1"

参数

{"file": "german.m4a","model": "whisper-1"
}

响应

{"text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
}

文件

文件用于上传可与微调等功能一起使用的文档。

列出文件

返回属于用户组织的文件列表。

GET https://api.openai.com/v1/files

请求示例

curl https://api.openai.com/v1/files \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"data": [{"id": "file-ccdDZrC3iZVNiQVeEA6Z66wf","object": "file","bytes": 175,"created_at": 1613677385,"filename": "train.jsonl","purpose": "search"},{"id": "file-XjGxS3KTG0uNmNOK362iJua3","object": "file","bytes": 140,"created_at": 1613779121,"filename": "puppy.jsonl","purpose": "search"}],"object": "list"
}

上传文件

上传包含要跨各种端点/功能使用的文档的文件。目前,一个组织上传的所有文件的大小最大可达 1 GB。如果您需要增加存储限制,请联系我们。

POST https://api.openai.com/v1/files

请求体

参数名类型是否必输默认值描述
filestring要上传的JSON 行文件的名称。
如果purpose设置为“fine-tune”,则每一行都是一个 JSON 记录,其中包含代表您的训练示例的“prompt”和“completion”字段。
purposestring上传文件的预期目的。
使用“fine-tune”进行微调。这使我们能够验证上传文件的格式。

请求示例

curl https://api.openai.com/v1/files \-H "Authorization: Bearer $OPENAI_API_KEY" \-F purpose="fine-tune" \-F file="@mydata.jsonl"

响应

{"id": "file-XjGxS3KTG0uNmNOK362iJua3","object": "file","bytes": 140,"created_at": 1613779121,"filename": "mydata.jsonl","purpose": "fine-tune"
}

删除文件

删除文件。

DELETE https://api.openai.com/v1/files/{file_id}

路径参数

参数名类型是否必输描述
file_idstring用于此请求的文件的 ID

请求示例

curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \-X DELETE \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"id": "file-XjGxS3KTG0uNmNOK362iJua3","object": "file","deleted": true
}

检索文件

返回有关特定文件的信息。

GET https://api.openai.com/v1/files/{file_id}

路径参数

参数名类型是否必输描述
file_idstring用于此请求的文件的 ID

请求示例

curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"id": "file-XjGxS3KTG0uNmNOK362iJua3","object": "file","bytes": 140,"created_at": 1613779657,"filename": "mydata.jsonl","purpose": "fine-tune"
}

检索文件内容

返回指定文件的内容

GET https://api.openai.com/v1/files/{file_id}/content

路径参数

参数名类型是否必输描述
file_idstring用于此请求的文件的 ID

请求示例

curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3/content \-H "Authorization: Bearer $OPENAI_API_KEY" > file.jsonl

微调

管理微调作业以根据您的特定训练数据定制模型。

相关指南:微调模型

创建微调

创建一个从给定数据集微调指定模型的作业。

响应包括排队作业的详细信息,包括作业状态和完成后微调模型的名称。

了解有关微调的更多信息

POST https://api.openai.com/v1/fine-tunes

请求体

参数名类型是否必输默认值描述
training_filestring包含训练数据的上传文件的 ID。
有关如何上传文件,请参阅上传文件
您的数据集必须格式化为 JSONL 文件,其中每个训练示例都是一个带有键“prompt”和“completion”的 JSON 对象。此外,您上传文件时purpose 参数必须为fine-tune
有关详细信息,请参阅微调指南
validation_filestring包含验证数据的上传文件的 ID。
如果您提供此文件,该数据将用于在微调期间定期生成验证指标。这些指标可以在微调结果文件中查看。您的训练和验证数据应该是互斥的。
您的数据集必须格式化为 JSONL 文件,其中每个训练示例都是一个带有键“prompt”和“completion”的 JSON 对象。此外,您上传文件时purpose 参数必须为fine-tune
有关详细信息,请参阅微调指南
modelstringcurie要微调的基本模型的名称。您可以选择“ada”、“babbage”、“curie”、“davinci”或 2022-04-21 之后创建的微调模型之一。要了解有关这些模型的更多信息,请参阅 模型文档。
n_epochsinteger4训练模型的时期数。一个时期指的是训练数据集的一个完整周期。
batch_sizeintegernull用于训练的批量大小。批量大小是用于训练单个前向和后向传递的训练示例数。
默认情况下,批量大小将动态配置为训练集中示例数量的 0.2%,上限为 256 - 通常,我们发现较大的批量大小往往更适合较大的数据集。
learning_rate_multipliernumbernull用于训练的学习率乘数。微调学习率是用于预训练的原始学习率乘以该值。
默认情况下,学习率乘数是 0.05、0.1 或 0.2,具体取决于batch_size(较大的学习率往往在较大的批量大小下表现更好)。我们建议使用 0.02 到 0.2 范围内的值进行试验,以查看产生最佳结果的值。
prompt_loss_weightnumber0.01用于提示标记损失的权重。这控制了模型尝试学习生成提示的程度(与权重始终为 1.0 的完成相比),并且可以在完成(completions) 较短时为训练增加稳定效果。
如果提示非常长(相对于完成),则减少此权重以避免过度优先学习提示可能是有意义的。
compute_classification_metricsbooleanfalse如果设置,我们将在每个时期结束时使用验证集计算特定于分类的指标,例如准确性和 F-1 分数。可以在结果文件中查看这些指标。
为了计算分类指标,您必须提供一个 validation_file. 此外,您必须指定classification_n_classes多类分类或 classification_positive_class二元分类。
classification_n_classesintegernull分类任务中的类数。
多类分类需要此参数。
classification_positive_classstringnull二元分类中的正类。
在进行二元分类时,需要此参数来生成精度、召回率和 F1 指标。
classification_betasarraynull如果提供,我们将计算指定 beta 值的 F-beta 分数。F-beta 分数是 F-1 分数的推广。这仅用于二元分类。
当 beta 为 1(即 F-1 分数)时,精确率和召回率被赋予相同的权重。Beta 分数越大,召回率越高,精确率越低。Beta 分数越小,精确度越重要,召回率越低。
suffixstringnull最多 40 个字符的字符串,将添加到您的微调模型名称中。
例如,suffix为“custom-model-name”的,生成名字类似这样ada:ft-your-org:custom-model-name-2022-02-15-04-21-04

请求示例

curl https://api.openai.com/v1/fine-tunes \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"training_file": "file-XGinujblHPwGLSztz8cPS8XY"}'

响应

{"id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F","object": "fine-tune","model": "curie","created_at": 1614807352,"events": [{"object": "fine-tune-event","created_at": 1614807352,"level": "info","message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."}],"fine_tuned_model": null,"hyperparams": {"batch_size": 4,"learning_rate_multiplier": 0.1,"n_epochs": 4,"prompt_loss_weight": 0.1,},"organization_id": "org-...","result_files": [],"status": "pending","validation_files": [],"training_files": [{"id": "file-XGinujblHPwGLSztz8cPS8XY","object": "file","bytes": 1547276,"created_at": 1610062281,"filename": "my-data-train.jsonl","purpose": "fine-tune-train"}],"updated_at": 1614807352,
}

微调列表

列出您的组织的微调作业

GET https://api.openai.com/v1/fine-tunes

请求示例

curl https://api.openai.com/v1/fine-tunes \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"object": "list","data": [{"id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F","object": "fine-tune","model": "curie","created_at": 1614807352,"fine_tuned_model": null,"hyperparams": { ... },"organization_id": "org-...","result_files": [],"status": "pending","validation_files": [],"training_files": [ { ... } ],"updated_at": 1614807352,},{ ... },{ ... }]
}

微调检索

获取有关微调作业的信息。

了解有关微调的更多信息

GET https://api.openai.com/v1/fine-tunes/{fine_tune_id}

路径参数

参数名类型是否必输描述
fine_tune_idstring微调作业的ID

请求示例

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F","object": "fine-tune","model": "curie","created_at": 1614807352,"events": [{"object": "fine-tune-event","created_at": 1614807352,"level": "info","message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."},{"object": "fine-tune-event","created_at": 1614807356,"level": "info","message": "Job started."},{"object": "fine-tune-event","created_at": 1614807861,"level": "info","message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20."},{"object": "fine-tune-event","created_at": 1614807864,"level": "info","message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT."},{"object": "fine-tune-event","created_at": 1614807864,"level": "info","message": "Job succeeded."}],"fine_tuned_model": "curie:ft-acmeco-2021-03-03-21-44-20","hyperparams": {"batch_size": 4,"learning_rate_multiplier": 0.1,"n_epochs": 4,"prompt_loss_weight": 0.1,},"organization_id": "org-...","result_files": [{"id": "file-QQm6ZpqdNwAaVC3aSz5sWwLT","object": "file","bytes": 81509,"created_at": 1614807863,"filename": "compiled_results.csv","purpose": "fine-tune-results"}],"status": "succeeded","validation_files": [],"training_files": [{"id": "file-XGinujblHPwGLSztz8cPS8XY","object": "file","bytes": 1547276,"created_at": 1610062281,"filename": "my-data-train.jsonl","purpose": "fine-tune-train"}],"updated_at": 1614807865,
}

取消微调

立即取消微调作业

POST https://api.openai.com/v1/fine-tunes/{fine_tune_id}/cancel

路径参数

参数名类型是否必输描述
fine_tune_idstring要取消的微调作业的 ID

请求示例

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/cancel \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"id": "ft-xhrpBbvVUzYGo8oUO1FY4nI7","object": "fine-tune","model": "curie","created_at": 1614807770,"events": [ { ... } ],"fine_tuned_model": null,"hyperparams": { ... },"organization_id": "org-...","result_files": [],"status": "cancelled","validation_files": [],"training_files": [{"id": "file-XGinujblHPwGLSztz8cPS8XY","object": "file","bytes": 1547276,"created_at": 1610062281,"filename": "my-data-train.jsonl","purpose": "fine-tune-train"}],"updated_at": 1614807789,
}

列出微调事件

获取微调作业细粒度的状态更新

GET https://api.openai.com/v1/fine-tunes/{fine_tune_id}/events

路径参数

参数名类型是否必输描述
fine_tune_idstring要为其获取事件的微调作业的 ID。

查询参数

参数名类型是否必输默认值描述
streambooleanfalse是否为微调作业流式传输事件。 如果设置为 true,事件将在可用时作为纯数据服务器发送事件发送。当作业完成(成功、取消或失败)时,流将会伴随着data: [DONE]消息终止。
如果设置为 false,则只返回到目前为止生成的事件。

请求示例

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/events \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"object": "list","data": [{"object": "fine-tune-event","created_at": 1614807352,"level": "info","message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."},{"object": "fine-tune-event","created_at": 1614807356,"level": "info","message": "Job started."},{"object": "fine-tune-event","created_at": 1614807861,"level": "info","message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20."},{"object": "fine-tune-event","created_at": 1614807864,"level": "info","message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT."},{"object": "fine-tune-event","created_at": 1614807864,"level": "info","message": "Job succeeded."}]
}

删除微调模型

删除微调模型。您必须在您的组织中拥有所有者角色。

DELETE https://api.openai.com/v1/models/{model}

路径参数

参数名类型是否必输描述
modelstring要删除的模型

请求示例

curl https://api.openai.com/v1/models/curie:ft-acmeco-2021-03-03-21-44-20 \-X DELETE \-H "Authorization: Bearer $OPENAI_API_KEY"

响应

{"id": "curie:ft-acmeco-2021-03-03-21-44-20","object": "model","deleted": true
}

适度

给定输入文本,如果模型将其分类为违反 OpenAI 的内容策略,则输出。

相关指南:适度

创建适度

分类文本是否违反 OpenAI 的内容政策

POST https://api.openai.com/v1/moderations

请求体

请求体

参数名类型是否必输默认值描述
inputsstringarray要分类的输入文本
modelstringtext-moderation-latest有两种内容审核模型可用:text-moderation-stabletext-moderation-latest
默认情况下text-moderation-latest会随着时间的推移自动升级。这可确保您始终使用我们最准确的模型。如果您使用text-moderation-stable,我们将在更新模型之前提供提前通知。text-moderation-stable的准确性略低于text-moderation-latest

示例请求

curl https://api.openai.com/v1/moderations \-H "Content-Type: application/json" \-H "Authorization: Bearer $OPENAI_API_KEY" \-d '{"input": "I want to kill them."}'

请求

{"input": "I want to kill them."
}

响应

{"id": "modr-5MWoLO","model": "text-moderation-001","results": [{"categories": {"hate": false,"hate/threatening": true,"self-harm": false,"sexual": false,"sexual/minors": false,"violence": true,"violence/graphic": false},"category_scores": {"hate": 0.22714105248451233,"hate/threatening": 0.4132447838783264,"self-harm": 0.005232391878962517,"sexual": 0.01407341007143259,"sexual/minors": 0.0038522258400917053,"violence": 0.9223177433013916,"violence/graphic": 0.036865197122097015},"flagged": true}]
}

categories中各个字段的含义如下

类别描述
hate基于种族、性别、民族、宗教、国籍、性取向、残疾状况或种姓表达、煽动或促进仇恨的内容。
hate/threatening仇恨内容还包括对目标群体的暴力或严重伤害。
self-harm提倡、鼓励或描述自残行为(例如自杀、割伤和饮食失调)的内容。
sexual意在引起性兴奋的内容,例如对性活动的描述,或宣传性服务(不包括性教育和健康)的内容。
sexual/minors包含 18 岁以下个人的色情内容。
violence宣扬或美化暴力或颂扬他人的痛苦或屈辱的内容。
violence/graphic以极端的画面细节描绘死亡、暴力或严重身体伤害的暴力内容。

参数详情

标记

GPT 系列模型使用标记处理文本,标记是文本中常见的字符序列。这些模型了解这些标记之间的统计关系,并且擅长生成标记序列中的下一个标记。

下面是官网提供的分词工具,我输入了一串英文,这里面就有10个标记。

在这里插入图片描述

一个有用的经验法则是,对于普通英文文本,一个标记通常对应于 ~4 个字符的文本。这相当于大约 ¾ 个单词(因此 100 个标记 ~= 75 个单词)。

频率和存在惩罚

Completions API中发现的频率和存在惩罚可用于降低对令牌重复序列进行采样的可能性。他们通过添加贡献直接修改 logits(非标准化对数概率)来工作。

mu[j] -> mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence

在该情况下:

  • mu[j]是第 j 个标记的对数
  • c[j]是在当前位置之前对该令牌进行采样的频率
  • 如果c[j] > 0float(c[j] > 0)为1,否则为 0
  • alpha_frequency是频率惩罚系数
  • alpha_presence是存在惩罚系数

正如我们所见,存在惩罚是一种一次性的加性贡献,适用于所有至少被采样过一次的标记,而频率惩罚是与特定标记被采样的频率成正比的贡献。

如果目标只是稍微减少重复样本,则惩罚系数的合理值约为 0.1 到 1。如果目标是强烈抑制重复,那么可以将系数增加到 2,但这会显着降低样本质量。负值可用于增加重复的可能性。

最终用户ID

在您的请求中发送最终用户 ID 可以成为帮助 OpenAI 监控和检测滥用的有用工具。如果我们在您的应用程序中检测到任何违反政策的情况,这允许 OpenAI 为您的团队提供更多可操作的反馈。

ID 应该是唯一标识每个用户的字符串。我们建议散列他们的用户名或电子邮件地址,以避免向我们发送任何识别信息。如果您向未登录的用户提供产品预览,您可以改为发送会话 ID。

您可以通过参数在 API 请求中包含最终用户 ID,user如下所示:

response = openai.Completion.create(model="text-davinci-003",prompt="This is a test",max_tokens=5,user="user123456"
)

各种语言OpenAi库

手册原文链接 https://platform.openai.com/docs/libraries

Python库

我们提供了一个 Python 库,您可以按如下方式安装它:

pip install openai

安装后,您可以使用绑定和您的密钥运行以下命令:

import os
import openai# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

绑定还将安装一个命令行实用程序,您可以按如下方式使用:

$ openai api completions.create -m text-davinci-003 -p "Say this is a test" -t 0 -M 7 --stream

Node.js 库

我们还有一个 Node.js 库,您可以通过在 Node.js 项目目录中运行以下命令来安装它:

$ npm install openai

安装后,您可以使用该库和您的密钥运行以下命令:

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({model: "text-davinci-003",prompt: "Say this is a test",temperature: 0,max_tokens: 7,
});

其他语言社区库

下面的库由更广泛的开发人员社区构建和维护。

请注意,OpenAI 不会验证这些项目的正确性或安全性。

C# / .NET

  • Betalgo.OpenAI.GPT3 by Betalgo
  • OpenAI-API-dotnet by OkGoDoIt

Crystal

  • openai-crystal by sferik

Go

  • go-gpt3 by sashabaranov

Java

  • openai-java by Theo Kanning

Kotlin

  • openai-kotlin by Mouaad Aallam

Node.js

  • openai-api by Njerschow
  • openai-api-node by erlapso
  • gpt-x by ceifa
  • gpt3 by poteat
  • gpts by thencc
  • @dalenguyen/openai by dalenguyen
  • tectalic/openai by tectalic

PHP

  • orhanerday/open-ai by orhanerday
  • tectalic/openai by tectalic

Python

  • chronology by OthersideAI

R

  • rgpt3 by ben-aaron188

Ruby

  • openai by nileshtrivedi
  • ruby-openai by alexrudall

Scala

  • openai-scala-client by cequence-io

Swift

  • OpenAIKit by dylanshine

Unity

  • OpenAi-Api-Unity by hexthedev

Unreal Engine

  • OpenAI-Api-Unreal by KellanM

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

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

相关文章

ChatGPT API 本地如何调用

本文将会介绍&#xff0c;如何找到API文档和相应语言SDK&#xff0c;并使用PHP调用SDK实现本地请求API的完成过程及遇到的问题和解决方法。 API文档 1.打开官网 ChatGPT: Optimizing Language Models for Dialogue 2.找到API 3.查看文档 4.找到sdk库 OpenAI API 5.主流语言 …

chatgptApi 文档使用以及 Demo演示

前言&#xff1a;最近chatGpt 很火爆&#xff0c;搞得国内某度都按耐不住了&#xff0c;开始搞‘文心一言’了。体验到了ChatGPT的强大之后&#xff0c;那么我们会想&#xff0c;如果我们想基于ChatGPT开发一个自己的聊天机器人&#xff0c;这个能搞定吗&#xff1f; ChatGPT平…

ChatGPT编程

ChatGPT问答 问题一&#xff1a;如何合理分配时间问题二&#xff1a;以下是提高工作效率的建议&#xff1a;问题三&#xff1a;如何培养兴趣问题四&#xff1a;软件和硬件谁重要问题五: 设计模式如何熟练运用问题六:C语言编程冒泡排序 问题一&#xff1a;如何合理分配时间 这里…

Python+chatGPT编程5分钟快速上手,强烈推荐!!!

最近一段时间chatGPT火爆出圈&#xff01;无论是在互联网行业&#xff0c;还是其他各行业都赚足了话题。 俗话说&#xff1a;“外行看笑话&#xff0c;内行看门道”&#xff0c;今天从chatGPT个人体验感受以及如何用的角度来分享一下。 1、chatGPT是个啥&#xff1f; chatGP…

编程新视角:ChatGPT帮助你高效编程和理解代码

现在好几个大公司都推出了自家的大语言模型&#xff0c;有的参数比GPT多&#xff0c;但是真正能称得上会编程的&#xff0c;大概只有GPT一个&#xff0c;可以说是OpenAI的独门功夫。 这篇文章旨在探讨GPT辅助编程过程中常用的提示和技巧。当然&#xff0c;我自己也是一边学一边…

初探ChatGPT编程能力

最近ChatGPT被持续火热关注。有人盛赞它的智能超群&#xff0c;似乎要掀翻很多行业&#xff0c;重新洗盘&#xff1b;而有的人却不以为然&#xff0c;觉得它并没有这么厉害。今天我做一个小测试从编程这个需要一定逻辑能力的方面来考察一下。 首先我提出一个解答24点的问题&am…

【chatGPT】和chatGPT结对编程的6小时

1.我对AI的偏见 2013年我写了个微信聊天机器人&#xff0c;在新浪微博上小火了一把。我的认知局限性让我没想到若干年后网红如此赚钱&#xff0c;活该我现在还在搬砖送外卖。 那阵子心里美滋滋——这个机器人好像我小孩儿&#xff0c;你教它一点&#xff0c;它就聪明一点。当然…

ChatGPT 在编程中的 9 个实际应用

ChatGPT 有如此多的潜在编码用途&#xff0c;可能有很多甚至还没有想到。找出一些有。 自 OpenAI 宣布推出 ChatGPT 以来&#xff0c;非凡的 AI 聊天机器人已经在许多领域找到了自己的一席之地&#xff0c;包括复杂、快速发展的编程领域。 但是作为程序员&#xff0c;您究竟可以…

ChatGPT强悍的编程能力,让我吓出一身冷汗!

最近有好几个人给我安利ChatGPT&#xff0c;说老刘快你去看看吧&#xff0c;这货实在太强了&#xff0c;搞不好我们程序员都失业了。 刚开始我都是微微一笑&#xff0c;怎么可能&#xff1f;我之前的观点一直都是在我的有生之年&#xff0c;AI绝对不可能干掉程序员。 但是安利的…

ChatGPT及相关产品体验与研究

ChatGPT及相关产品体验与研究 我的Github博客仓库链接&#xff1a;ChatGPT及相关产品体验与研究 - Github 一、ChatGPT介绍 1. ChatGPT概述 一句话描述ChatGPT&#xff1a;一个能够通过对话得到你想要的答案的聊天机器人。 ChatGPT 是由 OpenAI 开发的一种基于深度学习的自然…

ChatGPT初体验(一)

ChatGPT初体验&#xff08;一&#xff09; ChatGPT登陆方式 “OpenAI研发的聊天机器人程序&#xff0c;于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&…

最近超火的ChatGPT到底怎么样?体验完后我有哪些感受和思考?

✔️本文主题&#xff1a;ChatGPT 人工智能 ✔️官方网站&#xff1a;chat.openai.com 文章目录 前言二、初识三、深入四、编程相关编写纠错 五、感想六、展望七、结语 前言 大家好&#xff0c;这次我们来聊一聊最近超级火的人工智能语音——ChatGPT&#xff01; ChatGPT是什…

ChatGPT的了解与初体验

ChatGPT的了解与初体验 什么是ChatGPT初体验1、场景一 数据库sql编写2、场景二 时间处理 个人感觉下一个时代就是AI的时代&#xff0c;拥抱AI吧。 什么是ChatGPT 我们请它自己介绍一下自己吧&#xff01; 总体来说&#xff0c;就是能够用自然语言进行对话的智能机器人。 初体…

ChatGPT 体验和思考

一、体验 1、辅助写代码 2、检查代码&#xff08;遗憾的是&#xff0c;不一定是对的&#xff09; 3、分析代码 4、帮你了解/入门一项陌生的技术 小结&#xff1a; AI 会慢慢成为程序员的得力帮手&#xff0c;但目前来看&#xff0c;似乎还是不够成熟。 当然&#xff0c;大多…

ChatGPTPlus的快速体验,ChatGPT还是差远了

什么是ChatGPT? ChatGPT是一种基于自然语言处理技术的聊天机器人&#xff0c;它采用了GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型&#xff0c;可以对用户的输入进行自然语言理解和语言生成。ChatGPT的设计思想是通过深度学习算法和大规模数据训练&a…

chatGPT试用体验

结合实际问题&#xff0c;试用了一下当前非常火的chatGPT&#xff0c;测试chatGPT解决实际go语言处理mongodb数据去重查询的问题&#xff0c;还不错&#xff0c;能实际帮助解决问题。 截图&#xff1a; 文本整理&#xff1a; 请给出golang go.mongodb.org/mongo-driver 去重查…

【无标题】Chatgpt使用体验

近日&#xff0c;OpenAI 公司发布了新一代的chatgpt聊天软件&#xff0c;引起了广泛的关注。那么新一代的gpt3究竟有哪些智能的地方呢&#xff1f;让我们来看一看吧 1.写诗 新一代的gpt可以写出多样化的现代诗歌&#xff0c;让我们来看一看他的水平吧。 可以看出来虽然诗歌的语…

清华系ChatGPT发布!唐杰团队打造,专对中文优化,还能把握最新新闻动态

终于&#xff0c;清华大学唐杰团队也出手了。 就在GPT4发布的同一天&#xff0c;唐教授在微博宣布&#xff1a; 基于千亿参数大模型的对话机器人ChatGLM&#xff0c;现在开启邀请制内测。 据介绍&#xff0c;ChatGLM专门针对中文进行了优化&#xff0c;可以说是国人友好&…

五分钟进步系列之chatGpt最近发布的API

学习方式&#xff1a; 先读英文的原版&#xff0c;如果你能看懂就可以到此为止的了。如果你看不懂&#xff0c;可以再看一下我给的较高难度的英文单词的翻译。如果还是看不懂可以去最下面看我翻译的汉语。 下面是我在官网中找到的一段话。 一、英文原版 Introduction to the Ch…

ChatGPT发布iOS版App!国产已在路上!

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 作者丨徐杰承、云昭 来源丨51CTO技术栈 https://mp.weixin.qq.com/s/WEJen_1qsqCFFOn4Df6RBA 一切能在移动端实现的&#xff0c;都将会在移动端实现。就连ChatGPT也…