searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OpenAI - API 解读

2024-09-18 09:21:42
47
0

1 前言

随着人工智能技术的迅猛发展,OpenAI 以其卓越的研发能力和前瞻性的技术理念,在自然语言处理、强化学习等多个关键的人工智能子领域取得了突破性的进展。其开发的 GPT(Generative Pretrained Transformer)系列模型等成果在自然语言处理领域取得了前所未有的成就。这些模型通过在海量文本数据上进行预训练,能够对各种自然语言处理任务进行有效处理,如文本生成、语言翻译、问答系统等。

OpenAI 在 2023 年 3 月宣布开放 API,允许第三方开发者通过 API 将 ChatGPT 集成至他们的应用程序和服务中;并在2023 年 7 月 6 日向所有付费 API 客户开放 GPT-4 API,并计划在 7 月底前向新的开发人员开放访问权限。

OpenAI API 的出现激发了行业内对人工智能技术的进一步探索和创新。许多公司和研究机构在 OpenAI 的影响下,加大了对自然语言处理技术的研发投入,推动了整个行业的技术进步。目前,几乎所有的大模型服务和开源项目都支持 OpenAI 的接口。这意味着开发者可以使用一套适配 OpenAI 的代码来调用各种其他大模型,具有较高的通用性和灵活性。

因而,解读 OpenAI - API 接口文档对于希望构建自研大模型、搭建大模型平台、应用的机构/开发者都是至关重要的。本文系列主要就OpenAI-API接口协议进行解读,并从个人角度分析理解一些模型参数的用法,并对

2 OpenAI-API 接口协议介绍

2.1 协议格式

OpenAI通过HTTP方式对外暴露服务功能,需要采用统一的域名以及鉴权方式进行接口访问。

  • 请求域名:https://api.openai.com
  • 请求路径:OpenAI在所有API接口路径中加入了版本参数,目前版本为v1,目前所有OpenAI API请求的URL前缀为:https://api.openai.com/v1

2.2 接口鉴权

OpenAI API使用API密钥进行身份验证。所有的HTTP API请求都应包括以下格式的Authorization HTTP标题, 其中包含API密钥:

Authorization: Bearer OPENAI_API_KEY

2.3 接口请求

2.3.1 CURL请求

由于OpenAI API通过HTTP请求进行访问,因而可以通过CURL进行发送HTTP请求。

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

2.3.2 OpenAI python包发送请求

OpenAI 提供了封装好的python包,可以方便用户快速发送请求、接收模型返回结果,并处理过程中可能出现个各种异常。

pip install openai
try:

    response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me a joke."}
    ])

    print(response['choices'][0]['message']['content'])

except openai.error.OpenAIError as e:
    # 捕获所有 OpenAI API 错误
    print(f"OpenAI API error: {e}")
except Exception as e:
    # 捕获其他潜在的错误
    print(f"An unexpected error occurred: {e}")

4 接口返回

OpenAI 支持流式/非流式的返回

4.1 非流式正常返回

非流式请求中,OpenAI 会同步返回一个Http Response,Http Response中包含本次请求的结果。具体的Http Response Body内容需见具体的请求,此处不做详细介绍。

4.2 流式正常返回

流式请求中,OpenAI 会同步会一个Http SSE 流式对象,并在流式对象中,通过SSE chunk的逐个返回模型的输出结果。

5 异常处理

当OpenAI在处理请求过程中出现异常时,会返回一个异常信息给到接口调用方。

  • 首先是返回一个非200的 httpcode以表示当前请求无法正常完成。
  • 其次是在http 响应的body中返回一个error 结构,error中返回具体的错误信息。

5.1 异常http code

目前已知的http 错误code有以下几种:

HTTP错误码 说明
400 通常表示客户端发送的请求存在问题,例如请求中的参数错误、格式不正确或者缺少必要的参数等。在OpenAI API的使用中,可能是输入数据不符合API的要求,如输入的文本格式错误或者请求的参数值不合法。
401 授权类错误。这可能是因为在请求OpenAI API时,使用的API密钥不正确、已过期或者根本没有提供API密钥。这是一种身份验证失败的情况,需要检查API密钥的正确性和有效性。
403 国家/地区禁止访问。
429 表示在单位时间内发送的请求数量过多或超出限额,需要调整请求的频率或者数量 或是 增加限额。
500 这是服务器内部错误,表示OpenAI的服务器端出现了故障。
503 服务器过载。

5.2 error 结构

OpenAI 的 API 会返回类似这样的error错误响应:

字段名称 二级字段 类型 必选 描述
error object 错误信息
- code string 错误码
- type string 错误类型
- message string 错误详情
- param string 错误提示参数

错误结果示例

{
    "error": {
        "message": "You exceeded your current quota, please check your plan and billing details.",
        "type": "rate_limit_error",
        "param": null,
        "code": "rate_limit_exceeded"
    }
}
0条评论
作者已关闭评论
c****j
4文章数
0粉丝数
c****j
4 文章 | 0 粉丝
c****j
4文章数
0粉丝数
c****j
4 文章 | 0 粉丝
原创

OpenAI - API 解读

2024-09-18 09:21:42
47
0

1 前言

随着人工智能技术的迅猛发展,OpenAI 以其卓越的研发能力和前瞻性的技术理念,在自然语言处理、强化学习等多个关键的人工智能子领域取得了突破性的进展。其开发的 GPT(Generative Pretrained Transformer)系列模型等成果在自然语言处理领域取得了前所未有的成就。这些模型通过在海量文本数据上进行预训练,能够对各种自然语言处理任务进行有效处理,如文本生成、语言翻译、问答系统等。

OpenAI 在 2023 年 3 月宣布开放 API,允许第三方开发者通过 API 将 ChatGPT 集成至他们的应用程序和服务中;并在2023 年 7 月 6 日向所有付费 API 客户开放 GPT-4 API,并计划在 7 月底前向新的开发人员开放访问权限。

OpenAI API 的出现激发了行业内对人工智能技术的进一步探索和创新。许多公司和研究机构在 OpenAI 的影响下,加大了对自然语言处理技术的研发投入,推动了整个行业的技术进步。目前,几乎所有的大模型服务和开源项目都支持 OpenAI 的接口。这意味着开发者可以使用一套适配 OpenAI 的代码来调用各种其他大模型,具有较高的通用性和灵活性。

因而,解读 OpenAI - API 接口文档对于希望构建自研大模型、搭建大模型平台、应用的机构/开发者都是至关重要的。本文系列主要就OpenAI-API接口协议进行解读,并从个人角度分析理解一些模型参数的用法,并对

2 OpenAI-API 接口协议介绍

2.1 协议格式

OpenAI通过HTTP方式对外暴露服务功能,需要采用统一的域名以及鉴权方式进行接口访问。

  • 请求域名:https://api.openai.com
  • 请求路径:OpenAI在所有API接口路径中加入了版本参数,目前版本为v1,目前所有OpenAI API请求的URL前缀为:https://api.openai.com/v1

2.2 接口鉴权

OpenAI API使用API密钥进行身份验证。所有的HTTP API请求都应包括以下格式的Authorization HTTP标题, 其中包含API密钥:

Authorization: Bearer OPENAI_API_KEY

2.3 接口请求

2.3.1 CURL请求

由于OpenAI API通过HTTP请求进行访问,因而可以通过CURL进行发送HTTP请求。

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

2.3.2 OpenAI python包发送请求

OpenAI 提供了封装好的python包,可以方便用户快速发送请求、接收模型返回结果,并处理过程中可能出现个各种异常。

pip install openai
try:

    response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me a joke."}
    ])

    print(response['choices'][0]['message']['content'])

except openai.error.OpenAIError as e:
    # 捕获所有 OpenAI API 错误
    print(f"OpenAI API error: {e}")
except Exception as e:
    # 捕获其他潜在的错误
    print(f"An unexpected error occurred: {e}")

4 接口返回

OpenAI 支持流式/非流式的返回

4.1 非流式正常返回

非流式请求中,OpenAI 会同步返回一个Http Response,Http Response中包含本次请求的结果。具体的Http Response Body内容需见具体的请求,此处不做详细介绍。

4.2 流式正常返回

流式请求中,OpenAI 会同步会一个Http SSE 流式对象,并在流式对象中,通过SSE chunk的逐个返回模型的输出结果。

5 异常处理

当OpenAI在处理请求过程中出现异常时,会返回一个异常信息给到接口调用方。

  • 首先是返回一个非200的 httpcode以表示当前请求无法正常完成。
  • 其次是在http 响应的body中返回一个error 结构,error中返回具体的错误信息。

5.1 异常http code

目前已知的http 错误code有以下几种:

HTTP错误码 说明
400 通常表示客户端发送的请求存在问题,例如请求中的参数错误、格式不正确或者缺少必要的参数等。在OpenAI API的使用中,可能是输入数据不符合API的要求,如输入的文本格式错误或者请求的参数值不合法。
401 授权类错误。这可能是因为在请求OpenAI API时,使用的API密钥不正确、已过期或者根本没有提供API密钥。这是一种身份验证失败的情况,需要检查API密钥的正确性和有效性。
403 国家/地区禁止访问。
429 表示在单位时间内发送的请求数量过多或超出限额,需要调整请求的频率或者数量 或是 增加限额。
500 这是服务器内部错误,表示OpenAI的服务器端出现了故障。
503 服务器过载。

5.2 error 结构

OpenAI 的 API 会返回类似这样的error错误响应:

字段名称 二级字段 类型 必选 描述
error object 错误信息
- code string 错误码
- type string 错误类型
- message string 错误详情
- param string 错误提示参数

错误结果示例

{
    "error": {
        "message": "You exceeded your current quota, please check your plan and billing details.",
        "type": "rate_limit_error",
        "param": null,
        "code": "rate_limit_exceeded"
    }
}
文章来自个人专栏
OpenAI
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0