OpenApi接口使用说明(二)

释放双眼,带上耳机,听听看~!
本文介绍了OpenApi接口的使用说明,包括消息体特点、交互方式、API密钥的介绍和获取方式。适合对AI接口交互感兴趣的读者阅读。

相关:OpenApi接口使用说明(二)

前言:

针对新人场景的学习文章,介绍一些简单的使用、基础定义等。

从一个简单的消息编辑开始:

诉求:我想发送如下信息

 'prompt' : 'tell me a joke'

那发送的最终格式为:

'messages': [{
        'role': 'user',
        'content': 'tell me a joke'
}]

那连续对话的消息格式为:

'messages': [{
                'role': 'user',
                'content': 'tell me a joke'
        },
        {
                'role': 'assistant',
                'content': 'why did the chicken cross the road'
        },
        {
                'role': 'user',
                'content': "'I don't know, why did the chicken cross the road "
        }
]

1.1 消息体特点:

通过发送消息,进行交互。

  1. 不是发送单个字符串作为提示,而是发送一组消息作为输入。

  2. 列表中的每个消息都有两个属性: role and content。

属性 role:

role:可以取三个值之一: system、user 或 assistant

  1. system 指令:可以为会话提供高层次的指令。

  2. assistant 指令:消息将按照它们在列表中出现的顺序进行处理,assistant将相应地作出响应。

system 指令详解:

可以使用系统级指令在整个对话过程中指导模型的行为。

例如:

'messages': [{
                'role': 'system',
                'content': 'You are an assistant that speaks like Shakespeare.'
        },
        {
                'role': 'user',
                'content': 'tell me a joke'
        }
]

这里添加了一个模型的人设,是一名说话方式像莎士比亚一样的助手,则后续 模型会返回 贴合 莎士比亚语境的 对话。

属性 content:

包含来自 role 的消息文本。

如何发送消息进行交互?

发送消息进行交互,目前一定有4种方法:

  1. 任何语言的HTTP请求与API交互,

  2. 可以通过官方Python绑定、

pip install openai
  1. 官方Node.js库
//在Node.js项目目录下运行以下命令:
npm install openai
  1. 社区维护的库

但是不管哪一种,于 Open Api 交互,都需要 密钥key。

密钥介绍

密钥用于跟 Open Api 通信的身份校验。

如何获取密钥?

OpenAI API使用API密钥进行认证。密钥key获取地址:platform.openai.com/account/api…

OpenApi接口使用说明(二)

提示:

  1. 密钥生成后,只提供一次复制的机会,如果密钥忘记,只能删除重新创建密钥。

如何使用密钥?

所有的API 请求,Authorization HTTP header 中应该包含对应生成的 密钥key。

Authorization: Bearer OPENAI_API_KEY

当有多个组织时,需要考虑到Open Api 请求计费,就需要进行 多组织配置。

如何多组织配置,避免错误计费?

当用户属于多个组织时,可以通过header配置 来指定 API 请求属于哪一个组织,这些API请求的使用量将计入指定组织的订阅配额。

Curl 示例:

// 示例代码:
curl https://api.openai.com/v1/models 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -H "OpenAI-Organization: org-QDZ0nHgzgPVhuYVa21sOEkpR"

官方Python openai 示例:

import os
import openai
openai.organization = "org-QDZ0nHgzgPVhuYVa21sOEkpR"
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-QDZ0nHgzgPVhuYVa21sOEkpR",
    apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();

其中 Organization IDs 查询见:platform.openai.com

从一个简单的消息发送开始:

当如上前置的条件完备后,这里开始进行发起 Chat 聊天。

Curl 执行示例:

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

说明:

  1. 需要将 $OPENAI_API_KEY 替换为 上面自己查找到的 密钥。

  2. 这里涉及到了特有的模型选择,这里使用模型:gpt-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":"nnThis is a test!"
         },
         "finish_reason":"stop",
         "index":0
      }
   ]
}

说明:

  1. “finish_reason”:”stop”,表示由API 返回的数据全部完成。

有哪些模型?

模型有很多,可以通过接口请求,查询模型列表信息。

6.1 如何查询模型列表?

查询接口:

GET api.openai.com/v1/models

Curl 执行示例:

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

结果(截止2023-4-18模型数据):

共计64个数据模型,具体见如下文档:

模型太多,也可以检索指定的模型,查看功能。

6.2 如何检索指定的模型信息?

Curl 执行示例:

curl https://api.openai.com/v1/models/text-davinci-003 
  -H "Authorization: Bearer $OPENAI_API_KEY"

返回结果:

{
  "id": "text-davinci-003",
  "object": "model",
  "created": 1669599635,
  "owned_by": "openai-internal",
  "permission": [
    {
      "id": "modelperm-XKctlRE4Wz1fIXFVcybPlWQE",
      "object": "model_permission",
      "created": 1681415378,
      "allow_create_engine": false,
      "allow_sampling": true,
      "allow_logprobs": true,
      "allow_search_indices": false,
      "allow_view": true,
      "allow_fine_tuning": false,
      "organization": "*",
      "group": null,
      "is_blocking": false
    }
  ],
  "root": "text-davinci-003",
  "parent": null
}

6.3 gpt-3.5-turbo 特点:

  • 更多地用于传统的文本补全任务。

  • 对chat 应用进行了优化。

所以 chat 应用,多是使用 gpt-3.5-turbo 模型。

扩展参考:

  1. text completion task

  2. chat applications

Open APi 提供了不同的接口调用能力,不同的接口使用了不同的数据模型。

不同接口使用了哪些数据模型?

ENDPOINT MODEL NAME
/v1/chat/completions gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301
/v1/completions text-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001
/v1/edits text-davinci-edit-001, code-davinci-edit-001
/v1/audio/transcriptions whisper-1
/v1/audio/translations whisper-1
/v1/fine-tunes davinci, curie, babbage, ada
/v1/embeddings text-embedding-ada-002, text-search-ada-doc-001
/v1/moderations text-moderation-stable, text-moderation-latest

更多模型类别,参考 Models

接口请求的数据存在有效期吗?

从2023年3月1日起,openApi 只保存 30天的数据,但不再使用通过API发送的客户数据来改进 OpenApi 的模型。

如何保持聊天会话集中在一个主题上?

主要方法是 system 信息。

ChatGPT API的速率限制如何?

Free trial users: 20 RPM 40000 TPM

Pay-as-you-go users (first 48 hours): 60 RPM 60,000 TPM

Pay-as-you-go users (after 48 hours): 3500 RPM 90,000 TPM

RPM = requests per minute,每分钟请求数

用于监控服务的指标之一,更常用的是QPS(Queries Per Second)。对于一些AI服务,其处理速度可能比通常的服务要长,几秒到十几秒都正常,因此QPS对于此类服务并不精确,更常用QPM来限制。

TPM = tokens per minute,每分钟Token数。

Tokens Per Minute 是长文本NLP服务经常使用的负载衡量单位。NLP服务尤其是大模型,计算资源的处理负载主要取决于单位时间所处理的token数量,因此传统的QPS等负载衡量指标并不适用。NLP中的Token分割和语言相关,在中文、日文等语言一般是字,在英文等拉丁语言中一般是词根等等。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

AI vs. AI: 深度强化学习多智能体竞赛系统

2023-12-16 20:57:14

AI教程

Stability AI发布史上首个开源RLHF大语言模型和像素级图像模型DeepFloyd IF

2023-12-16 21:06:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索