OpenAI API及ChatGPT系列教程3:API参考(Python)

系列文章目录:

  1. OpenAI API及ChatGPT系列教程1:快速入门
  2. OpenAI API及ChatGPT系列教程2:使用手册
  3. OpenAI API及ChatGPT系列教程3:API参考(Python)


OpenAI API及ChatGPT系列教程3:API参考(Python)

一、介绍:

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

pip install openai

二、验证:

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

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

Authorization: Bearer OPENAI_API_KEY
  • 请求组织:

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

openai.organization = "YOUR_ORG_ID"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.xxxxxx

三、发出请求:

import openai,json

openai.api_key = '你的AIP密钥'
response =openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  temperature=0.7,
  messages=[
        {"role": "user", "content": "Say this is a test!"}
    ]
)
result = json.dumps(response,ensure_ascii=False)  # ensure_ascii处理中文
with open('chat.json', 'a+', encoding='utf-8') as f:  # 将返回保存为json文件
    f.write(result)

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

{
    "id": "chatcmpl-7BYJHEraVZUFW9tsUSpaIsG671cLh",
    "object": "chat.completion",
    "created": 1682987851,
    "model": "gpt-3.5-turbo-0301",
    "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 5,
        "total_tokens": 19
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "This is a test!"
            },
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

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

四、模型:

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

  • 查询列表:(返回很长的列表,1541行的json文件)

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

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"
}
  • 查询详情:

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

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": [...]
}

五、补全:

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

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Completion.create(
  model="text-davinci-003",
  prompt="Say this is a test",
  max_tokens=7,
  temperature=0
)
{
  "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
  }
}
  • 请求参数说明:
{
  "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"
}

model string 必选:要使用的模型的 ID。

promptstring or array 可选 默认为<|endoftext|>:生成补全的提示,编码为字符串、字符串数组、标记数组或标记数组数组。请注意,<|endoftext|> 是模型在训练期间看到的文档分隔符,因此如果未指定提示,模型将生成新文档的开头。

suffixstring 可选 默认为 null:插入文本补全后出现的后缀。

max_tokensinteger 可选 默认为16:生成的最大令牌数。您的提示加上的令牌计数**max_tokens**不能超过模型的上下文长度。大多数模型的上下文长度为 2048 个标记(最新模型除外,它支持 4096)

temperaturenumber 可选 默认为1:使用什么采样概览热度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。我们通常建议改变次参数或**top_p ,**但不要同事改变两者。

top_pnumber 可选 默认为1:一种替代概览热度采样的方法,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。

ninteger 可选 默认为1:为每个提示生成多少补全。注意:因为这个参数会产生很多完成,它会很快消耗你的令牌配额。请谨慎使用并确保您对max_tokens和进行了合理的设置stop

streamboolean 可选 默认为false:是否流方式返回。流由**data: [DONE]**消息终止。

logprobsinteger 可选 默认为null:包括最有可能标记的对数概率**logprobs,以及所选标记。例如,如果logprobs**是 5,API 将返回 5 个最有可能的标记的列表。

echoboolean 可选 默认为false:除了补全之外的回显提示。

stopstring or array 可选 默认为null:API 将停止生成更多令牌的最多 4 个序列。返回的文本将不包含停止序列。

presence_penaltynumber 可选 默认为0:-2.0 和 2.0 之间的数字。正值会增加模型谈论新主题的可能性。

frequency_penaltynumber 可选 默认为0:-2.0 和 2.0 之间的数字。正值会降低模型逐字重复同一行的可能性。

best_ofinteger 可选 默认为1:

**best_of**在服务器端生成补全并返回“最佳的补全”(每个标记具有最高对数概率的那个)。无法流式传输结果。与 n一起使用时,控制候选完成的数量并n指定要返回的数量 ,best_of必须大于n

logit_biasmap 可选 默认为null:修改指定标记出现在补全中的可能性。

userstring 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。

六、聊天:

给定一个描述对话的消息列表,该模型将返回一个响应。

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

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

print(completion.choices[0].message)
result = json.dumps(completion ,ensure_ascii=False)
with open('chat.json', 'a+', encoding='utf-8') as f:
    f.write(result)
{
  "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
  }
}
  • 请求参数说明:

model string 必选:要使用的模型的 ID。

message array 必选:到目前为止描述对话的消息列表。包含:

  • rolestring 必选:此消息作者的角色。systemuserassistant
  • content string 必选:消息的内容。
  • name string 可选:作者的姓名。可包含 az、AZ、0-9 和下划线,最大长度为 64 个字符。

temperaturenumber 可选 默认为1:使用什么采样热度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。

top_pnumber 可选 默认为1:一种替代热度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。

ninteger 可选 默认为1:为每个输入消息生成多少个聊天完成选项。

streamboolean 可选 默认为false:如果设置为true,将以流的方式发送消息,就像在 ChatGPT 中一样。

max_tokensinteger 可选 默认为16:聊天完成时生成的最大**令牌**数。输入标记和生成标记的总长度受模型上下文长度的限制。

stopstring or array 可选 默认为null:API 将停止生成更多令牌的最多 4 个序列。

presence_penaltynumber 可选 默认为0:-2.0 和 2.0 之间的数字。正值会增加模型谈论新主题的可能性。

frequency_penaltynumber 可选 默认为0:-2.0 和 2.0 之间的数字。正值会降低模型逐字重复同一行的可能性。

logit_biasmap 可选 默认为null:修改指定标记出现在完成中的可能性。

userstring 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。

七、编辑:

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

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Edit.create(
  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
  }
}
  • 请求参数说明:

model string 必选:要使用的模型的 ID。

input string 可选 默认为空字符串:用作编辑起点的输入文本。

instruction string 必选:告诉模型如何编辑的指令。

temperaturenumber 可选 默认为1:使用什么采样热度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。

top_pnumber 可选 默认为1:一种替代热度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。

ninteger 可选 默认为1:为输入和指令生成多少编辑。

八、图片:

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

1. 创建图像:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Image.create(
  prompt="A cute baby sea otter",
  n=2,
  size="1024x1024"
)
{
  "created": 1589478378,
  "data": [
    {
      "url": "https://..."
    },
    {
      "url": "https://..."
    }
  ]
}
  • 请求参数说明:

prompt string 必选:所需图像的文本描述。最大长度为 1000 个字符。

ninteger 可选 默认为1:要生成的图像数。必须介于 1 和 10 之间。

size string 可选 默认为1024x1024:生成图像的大小。必须是**256x256512x5121024x1024**。

response_format string 可选 默认为url:生成的图像返回的格式。必须是 urlb64_json

user string 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。

2. 编辑图像:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Image.create_edit(
  image=open("otter.png", "rb"),
  mask=open("mask.png", "rb"),
  prompt="A cute baby sea otter wearing a beret",
  n=2,
  size="1024x1024"
)
{
  "created": 1589478378,
  "data": [
    {
      "url": "https://..."
    },
    {
      "url": "https://..."
    }
  ]
}
  • 请求参数说明:

image string 必选:要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。如果未提供遮罩,图像必须具有透明度,将用作遮罩。

mask string 可选:附加图像,其完全透明区域(例如,alpha 为零的区域)指示**image**应编辑的位置。必须是有效的 PNG 文件,小于 4MB,并且与image具有相同尺寸。

prompt string 必选:所需图像的文本描述。最大长度为 1000 个字符。

ninteger 可选 默认为1:要生成的图像数。必须介于 1 和 10 之间。

size string 可选 默认为1024x1024:生成图像的大小。必须是**256x256512x5121024x1024**。

response_format string 可选 默认为url:生成的图像返回的格式。必须是 urlb64_json

user string 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。

3. 图像变体:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Image.create_variation(
  image=open("otter.png", "rb"),
  n=2,
  size="1024x1024"
)
{
  "created": 1589478378,
  "data": [
    {
      "url": "https://..."
    },
    {
      "url": "https://..."
    }
  ]
}
  • 请求参数说明:

image string 必选:用作变体基础的图像。必须是有效的 PNG 文件,小于 4MB,并且是方形的。

ninteger 可选 默认为1:要生成的图像数。必须介于 1 和 10 之间。

size string 可选 默认为1024x1024:生成图像的大小。必须是**256x256512x5121024x1024**。

response_format string 可选 默认为url:生成的图像返回的格式。必须是 urlb64_json

user string 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为

九、嵌入embeddings:

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

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Embedding.create(
  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
  }
}
  • 请求参数说明:

model string 必选:要使用的模型的 ID。

input string or array 必选:输入文本以获取嵌入,编码为字符串或标记数组。要在单个请求中获取多个输入的嵌入,请传递一个字符串数组或令牌数组数组。每个输入的长度不得超过 8192 个标记。

user string 可选:代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为

十、语音:

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

1. 转录:将音频转录为输入语言

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
audio_file = open("audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
{
  "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."
}
  • 请求参数说明:

file string 必选:要转录的音频文件,采用以下格式之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
model string 必选:要使用的模型的 ID。当前仅**whisper-1**可用。

prompt string 可选:可选文本,用于指导模型的风格或继续之前的音频片段。提示应与音频语言相匹配。

response_format string 可选 默认为json:输出的格式,采用以下选项之一:json、text、srt、verbose_json 或 vtt。

temperature number 可选:采样概率热度,介于 0 和 1 之间。

language string 可选:输入音频的语言。

2. 翻译:将音频翻译成英文

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
audio_file = open("german.m4a", "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)
{
  "text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
}
  • 请求参数说明:

file string 必选:要翻译的音频文件,采用以下格式之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
model string 必选:要使用的模型的 ID。当前仅**whisper-1**可用。

prompt string 可选:可选文本,用于指导模型的风格或继续之前的音频片段。提示应为英文****

response_format string 可选 默认为json:输出的格式,采用以下选项之一:json、text、srt、verbose_json 或 vtt。

temperature number 可选:采样概率热度,介于 0 和 1 之间。

十一、文件:

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

1. 列出文件:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.File.list()
{
  "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"
}

2. 上传文件:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.File.create(
  file=open("mydata.jsonl", "rb"),
  purpose='fine-tune'
)
{
  "id": "file-XjGxS3KTG0uNmNOK362iJua3",
  "object": "file",
  "bytes": 140,
  "created_at": 1613779121,
  "filename": "mydata.jsonl",
  "purpose": "fine-tune"
}

3. 删除文件:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.File.delete("file-XjGxS3KTG0uNmNOK362iJua3")
{
  "id": "file-XjGxS3KTG0uNmNOK362iJua3",
  "object": "file",
  "deleted": true
}

4. 检索文件:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.File.retrieve("file-XjGxS3KTG0uNmNOK362iJua3")
{
  "id": "file-XjGxS3KTG0uNmNOK362iJua3",
  "object": "file",
  "bytes": 140,
  "created_at": 1613779657,
  "filename": "mydata.jsonl",
  "purpose": "fine-tune"
}

5. 检索文件内容:返回指定文件的内容

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
content = openai.File.download("file-XjGxS3KTG0uNmNOK362iJua3")

十二、微调Fine-tunes:

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

1. 创建微调:

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

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

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTune.create(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,
}

2. 微调列表:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTune.list()
{
  "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,
    },
    { ... },
    { ... }
  ]
}

3. 检索微调:获取有关微调作业的信息

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTune.retrieve(id="ft-AF1WoRqd3aJAHsqc9NY7iL8F")
{
  "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,
}

4. 取消微调:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTune.cancel(id="ft-AF1WoRqd3aJAHsqc9NY7iL8F")
{
  "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,
}

5. 列出微调事件:获取微调作业的细粒度状态更新

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTune.list_events(id="ft-AF1WoRqd3aJAHsqc9NY7iL8F")
{
  "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."
    }
  ]
}

6. 删除微调模型:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.delete("curie:ft-acmeco-2021-03-03-21-44-20")
{
  "id": "curie:ft-acmeco-2021-03-03-21-44-20",
  "object": "model",
  "deleted": true
}

十三、审核:

给定输入文本,判断是否违反 OpenAI 的内容策略。

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Moderation.create(
  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
    }
  ]
}
  • 请求参数说明:

input string or array 必选:要分类的输入文本

mode string 可选 默认为text-moderation-latest:有两种内容审核模型可用:text-moderation-stabletext-moderation-latest。默认情况下**text-moderation-latest会随着时间的推移自动升级。这可确保您始终使用我们最准确的模型。如果您使用text-moderation-stable,我们将在更新模型之前提供提前通知。的准确度text-moderation-stable可能略低于 的准确度text-moderation-latest**

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬码侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值