OpenAI API参考文档

介绍

您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。
若要安装官方 Python 绑定,请运行以下命令:

pip install openai

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

npm install openai

身份认证

OpenAI API 使用 API 密钥进行身份验证。访问您的 API 密钥页面,检索您将在请求中使用的 API 密钥。
请记住,您的API密钥是一个秘密!不要与他人共享或在任何客户端代码(浏览器、应用程序)中公开它。生产请求必须通过您自己的后端服务器进行路由,在该服务器上,可以从环境变量或密钥管理服务安全地加载 API 密钥。
所有 API 请求都应在 Authorization HTTP 标头中包含您的 API 密钥,如下所示:

Authorization: Bearer YOUR_API_KEY

请求组织

对于属于多个组织的用户,您可以传递标头以指定用于 API 请求的组织。这些 API 请求的使用量将计入指定组织的订阅配额。
示例 curl 命令:

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

Python 包的openai示例:

import os
import openai
openai.organization = "YOUR_ORG_ID"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()
Node.js 包的openai示例:
import {
    Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
   
    organization: "YOUR_ORG_ID",
    apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();

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

提出请求

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

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
   }'

此请求使用 “gpt-3.5-turbo” 模型来完成以 “Say this is a test” 为提示的文本。您将收到一个类似以下的响应:

{
   
   "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_reason 是 stop,这意味着 API 返回了模型生成的完整完成结果。在上述请求中,我们只生成了一条消息,但您可以通过设置 n 参数来生成多个消息选择。

模型

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

API 中可用的各种模型及其描述:
text-davinci-003: 这是一个基于文本的模型,适用于广泛的自然语言处理任务。它可以生成高质量的文本,但需要更长的推理时间。
text-davinci-002: 这也是一个基于文本的模型,适用于各种自然语言处理任务。它在速度和质量之间取得了平衡。
text-davinci-001: 这是一个基于文本的模型,适用于常见的自然语言处理任务。它在速度方面更快,但可能牺牲一些质量。
gpt-3.5-turbo: 这是一个强大的模型,适用于生成文本、回答问题、完成任务等多种任务。它是最先进的模型之一,具有出色的质量和速度。
每个模型都有不同的特点和用途,具体选择取决于您的需求和偏好。您可以参考「Models」文档以了解可用模型之间的区别和适用场景。

列出模型

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

示例请求

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()

响应

{
   
  "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}
获取模型实例,提供有关模型的基本信息,例如所有者和权限。

路径参数 model string Required
用于此请求的模型 ID
示例请求:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.retrieve("text-davinci-003")

响应

{
   
  "id": "text-davinci-003",
  "object": "model",
  "owned_by": "openai",
  "permission": [...]
}

Chat(聊天):

给定一个包含对话的消息列表,模型将返回一个响应

创建完成

POST https://api.openai.com/v1/completions
创建给定聊天对话的模型响应:

请求 body

model string Required
要使用的模型的ID。有关哪些模型适用于 Chat API 的详细信息,请参阅模型端点兼容性表。

messages array Required
以下是一个示例的 Python 代码,其中包含一个消息列表,表示到目前为止的对话:
role string Required
消息作者的角色。可以是以下之一:system(系统)、user(用户)、assistant(助手)或function(函数)。
content string Optional
消息的内容。除了助手消息中的函数调用外,所有消息都需要提供内容(content)。
name string Optional
消息作者的名称。如果角色(role)是 function,则需要提供名称(name),它应该是内容(content)中响应的函数的名称。名称可以包含 a-z、A-Z、0-9 和下划线,最大长度为 64 个字符。
function_call object Optional
由模型生成的应调用的函数的名称和参数。

functions array Optional
模型可能为其生成 JSON 输入的函数列表。
name string Required
要调用的函数的名称。名称必须由 a-z、A-Z、0-9 组成,可以包含下划线和破折号,最大长度为 64。
description string Optional
函数的描述,即函数的功能说明。
parameters object Optional
函数接受的参数,以 JSON Schema 对象的形式进行描述。请参阅指南中的示例,以及 JSON Schema 参考文档,了解有关格式的详细信息。

function_call string or object Optional
控制模型对函数调用的响应方式。“none” 表示模型不调用函数,而是直接响应给最终用户。“auto” 表示模型可以在最终用户和调用函数之间进行选择。通过 {“name”: “my_function”} 指定特定函数会强制模型调用该函数。当没有函数存在时,默认值为 “none”。当存在函数时,默认值为 “auto”。

temperature number Optional Defaults to 1
要使用的采样温度,取值范围为 0 到 2 之间。较高的值(例如 0.8)会使输出更加随机,而较低的值(例如 0.2)会使其更加集中和确定性。通常建议只修改其中一个参数,而不是同时修改两个参数(sampling temperature 和 top_p)。
top_p number Optional Defaults to 1
一种替代采用温度进行采样的方法是使用核心采样(nucleus sampling),其中模型考虑具有 top_p 概率质量的令牌的结果。因此,0.1 表示仅考虑组成前 10% 概率质量的令牌。通常建议只修改其中一个参数,而不是同时修改两个参数(核心采样和温度)。
n integer Optional Defaults to 1
为每个输入消息生成的聊天完成选项的数量。

Strea(流式传输) 布尔值 可选项,默认为 false
如果设置为 true,将发送部分消息增量,就像在 ChatGPT 中一样。令牌将作为数据的服务器推送事件在可用时发送,流式传输以 data: [DONE] 消息终止。stream 被设置为 True,表示启用了流式传输。
stop(停止标记) 字符串或数组 可选项,默认为 null
最多可以指定 4 个序列,当 API 生成这些序列后,将停止继续生成更多的令牌

max_tokens(最大令牌数) 整数 可选项,默认为 inf(无限)
聊天完成中要生成的最大令牌数。输入令牌和生成的令牌的总长度受模型上下文长度的限制。max_tokens 被设置为 100,表示在聊天完成中最多生成 100 个令牌。

presence_penalty 数字 可选项,默认为 0
取值范围为 -2.0 到 2.0 之间的数字。正值会根据新令牌是否在已生成的文本中出现来对其进行惩罚,增加模型谈论新话题的可能性。
frequency_penalty 数字 可选项,默认为 0
取值范围为 -2.0 到 2.0 之间的数字。正值会根据新令牌在已生成的文本中的频率对其进行惩罚,降低模型直接重复相同文本的可能性。
logit_bias 映射 可选项,默认为 null
修改特定令牌在生成结果中出现的可能性。接受一个 JSON 对象,将令牌(由其在分词器中的令牌 ID 指定)映射到 -100 到 100 之间的相关偏差值。在数学上,在采样之前,将偏差添加到模型生成的 logits 中。具体效果因模型而异,但 -1 到 1 之间的值应该会减少或增加选择的可能性;-100 或 100 这样的值应该会导致相关令牌的禁止或独占选择。
user 字符串 可选项
表示您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。

请求示例:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")

completion = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
    {
   "role": "system", "content": "You are a helpful assistant."},
    {
   "role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

参数:

{
   
  "model": "gpt-3.5-turbo",
  "messages": [{
   "role": "system", "content": "You are a helpful assistant."}, {
   "role": "user", "content": "Hello!"}]
}

响应:

{
   
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "choices": [
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值