OpenApi 接口使用说明 (二)

654 阅读5分钟

承前:OpenApi接口使用说明(一)

前言:

抱着学习GPT,就从接口层学习,才能更深入理解的初衷,遂在一定的理解的基础上,对 Open API Doc 该文章的进行中文转译,也是自我学习的一个过程。

Open API Doc 进行中文转译,并进行一定语境翻译,内容的调整,可能存在翻译不准确,如果介意请前往英文版查阅,或者Google 文章中文翻译查阅。

Completion 介绍

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

接口:

功能:

  • 根据提供的 提示符(“prompt”) 和 参数,创建 补齐(“completion”) 。

presence_penalty & frequency_penalty 补充介绍

作用:

用于减少采样标记重复序列的可能性。

运作原理:

直接修改logits(非标准化的对数概率),并添加额外的惩罚/诱导。

具体修改方式:
mu[j] -> mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence
  • mu[j]:第j个 token 的 logits 分对数。

  • c[j]: 指 多长时间下,token 在当前位置之前被采样。

  • float(c[j] > 0) :如果 c[j] > 0 则值为1, 否则 值为0。

  • alpha_frequency:是 频率惩罚 系数。

  • alpha_presence:是 存在惩罚系数。

presence_penalty vs frequency_penalty 区别:
  • presence_penalty:

  • frequency_penalty:

penalty coefficients 取值:
  • 如果目标只是在一定程度上减少重复样本,惩罚系数的合理值应该在0.1到1之间。

  • 如果目标是强烈抑制重复,那么可以将系数增加到2,但这可能会显著降低样本的质量。而负值可以用来增加重复的可能性。

Curl 执行示例:

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

结果:

{
        "id": "cmpl-76zk30Q0ejRwP9HA7C7SfpIm5fo1M",
        "object": "text_completion",
        "created": 1681901659,
        "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
        }
}

Chat 介绍

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

接口:

功能:

  • 为给定的chat 聊天对话创建一个模型响应。

Edits 介绍

功能:给定一个 提示 或者 指令,模型将 返回一个 编辑过的 提示信息。

接口:

功能:

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

Curl 执行示例:

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

结果:

{
  "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
  }
}

说明:将 错误的单词 wek,转为 week。

Images 介绍

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

更多参考 Image Generate

4.1 Create Images 介绍

接口:

功能:

  • 根据提示创建一个图像。

Curl 执行示例:

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

返回数据:

{
  "created": 1682313829,
  "data": [
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-QDZ0nHgzgPVhuYVa21sOEkpR/user-uvKCDCPswre2qtsKQHvTAxgG/img-xJYFqIwhUVkfWHz5oc3CKoQV.png?st=2023-04-24T04%3A23%3A49Z&se=2023-04-24T06%3A23%3A49Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-04-24T05%3A20%3A20Z&ske=2023-04-25T05%3A20%3A20Z&sks=b&skv=2021-08-06&sig=ZEbptoEEk1J6bkswqLipji/VEzAnc5qb3wrMjNY52TI%3D"
    },
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-QDZ0nHgzgPVhuYVa21sOEkpR/user-uvKCDCPswre2qtsKQHvTAxgG/img-ahdwDjngqdTokldybaXbRvqR.png?st=2023-04-24T04%3A23%3A49Z&se=2023-04-24T06%3A23%3A49Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2023-04-24T05%3A20%3A20Z&ske=2023-04-25T05%3A20%3A20Z&sks=b&skv=2021-08-06&sig=iqVL7KtrSr3L2EXmVATgjV/FytnEAlxzRayn5wdq%2BOg%3D"
    }
  ]
}

补充:该模型对 欧美人图像进行了更多的训练,生成的图像效果还不错。相反对其他地区的人像生成效果一般。

4.2 Create Images Edit 介绍

根据原始图片 和 提示,生成编辑后的 或者 扩展后的 新的图片。

接口:

功能:

  • 根据原始图片 和 提示,生成编辑后的 或者 扩展后的 新的图片。

Curl 执行示例:

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

4.3 Create Images variation 介绍

接口:

功能:

  • 基于给定的图片,创建一个变化的图片。

Curl 执行示例:

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

Embeddings 介绍

功能:获得给定输入的向量表示,可以很容易地被机器学习模型和算法 使用。

接口:

功能:

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

Curl 执行示例:

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

结果:

{
  "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
  }
}

Audio 介绍

功能:实现将音频转换为文本。

更多参考 Speech to text

6.1 Create transcription 介绍

接口:

功能:

  • 将音频转为文本

Curl 执行示例:

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"

结果:

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

6.2 Create translation 介绍

接口:

功能:

  • 将音频翻译成英语。

Curl 执行示例:

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"

结果:

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

Files 介绍

功能:是用于 上传可以 与 Fine-tuning 等功能 一起使用的 文档。

7.1 List files 介绍

接口:

功能:

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

Curl 执行示例:

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

7.2 Upload files 介绍

接口:

功能:

  • 上传一个包含被用于跨不同端点/特性 的文档。

  • 目前,一个组织上传的所有文件最大可达1GB。

Curl 执行示例:

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

7.3 Delete files 介绍

接口:

功能:

  • 删除指定文件

路径参数介绍:

类型是否必填默认值释义
file_idstringRequired要用于此请求的文件的ID

Curl 执行示例:

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

结果:

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

7.4 Retrieve files 介绍

接口:

功能:

  • 返回特定文件的信息。

路径参数介绍:

类型是否必填默认值释义
file_idstringRequired要用于此请求的文件的ID

Curl 执行示例:

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

7.5 Retrieve files content 介绍

接口:

功能:

  • 返回指定文件的内容

路径参数介绍:

类型是否必填默认值释义
file_idstringRequired要用于此请求的文件的ID

Curl 执行示例:

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

Fine-tunes 介绍

功能:管理 fine-tunes 工作,使用提供的特定训练数据 完成裁剪定制模型。

更多参考:Fine-tune models

8.1 Create fine-tunes 介绍

接口:

功能:

  • 创建一个任务,根据给定的 数据集 进行 fine-tunes 一个 特定的模型。

  • 响应包括排队任务的详细信息,包括任务状态,以及一旦完成 fine-tuned 的模型名称。

Learn more about Fine-tuning

Curl 执行示例:

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

8.2 List fine-tunes 介绍

接口:

功能:

  • 列举对应 组织下的 所有 fine-tunes 文件。

Curl 执行示例:

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,
    },
    { ... },
    { ... }
  ]
}

8.3 Retrieve fine-tunes 介绍

接口:

功能:

  • 检索 指定 id 的 fine-tunes 工作信息。

更多信息参考 Fine-Tunes

路径参数介绍:

类型是否必填默认值释义
fine_tune_idstringRequiredfine-tune 工作ID

Curl 执行示例:

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": 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,
}

8.4 Cancel fine-tunes 介绍

接口:

功能:

  • 立刻取消 fine-tunes 工作。

路径参数介绍:

类型是否必填默认值释义
fine_tune_idstringRequiredfine-tune 工作ID

Curl 执行示例:

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

8.5 List fine-tunes events介绍

接口:

功能:

  • 获取 fine-tunes 工作的细粒度状态更新信息。

路径参数介绍:

类型是否必填默认值释义
fine_tune_idstringRequiredfine-tune 工作ID

查询参数介绍:

类型是否必填默认值释义
streambooleanOptionalfalse是否为fine-tune 工作 进行流式传输。

Curl 执行示例:

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

8.6 Delete fine-tunes model介绍

接口:

功能:

  • 删除 fine-tunes 微调过的模型。

注:删除者必须在组织中具有Owner角色。

路径参数介绍:

类型是否必填默认值释义
modelstringRequired要删除的模型

Curl 执行示例:

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
}

Moderations 介绍

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

更多信息,见 Moderations

9.1 Create moderations 介绍

接口:

功能:

  • 如果文本违反OpenAI的内容政策,则对应分类归类

Curl 执行示例:

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

结果:

{
  "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
    }
  ]
}