当前位置:   article > 正文

ChatGPT API教程在线对接OpenAI APIKey技术教程_gtpchatapi

gtpchatapi

一、OpenAI基本库介绍

您可以通过 HTTP 请求与 API 进行交互,这可以通过任何编程语言实现。我们提供官方的 Python 绑定、官方的 Node.js 库,以及由社区维护的库。

要安装官方的 Python 绑定,请运行以下命令:

pip install openai

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

pip install openai

二、APIKey认证授权

API密钥(API Keys)
OpenAI API 使用 API 密钥进行认证。您可以在用户或服务账户级别创建 API 密钥。服务账户与“机器人”个体相关联,应用于为生产系统提供访问权限。每个 API 密钥可以限定以下之一的范围:

项目密钥 - 提供对单个项目的访问(推荐选项);通过选择您希望生成密钥的特定项目来访问项目 API 密钥。
用户密钥 - 我们的旧密钥。提供对用户已添加到的所有组织和所有项目的访问;访问 API 密钥以查看您可用的密钥。我们强烈建议过渡到项目密钥以获得最佳安全实践,尽管目前仍支持通过这种方法进行访问。
记住您的 API 密钥是一个秘密!不要与他人共享或在客户端代码(浏览器、应用程序)中公开它。生产请求必须通过您自己的后端服务器进行路由,您可以从环境变量或密钥管理服务中安全加载您的 API 密钥。

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

Authorization: Bearer OPENAI_API_KEY


组织和项目(可选)
对于属于多个组织的用户或通过其旧的用户 API 密钥访问其项目的用户,您可以传递一个头来指定用于 API 请求的组织和项目。这些 API 请求的使用将计入指定的组织和项目的使用量。

要访问组织中的默认项目,请省略 OpenAI-Project 头

示例 curl 命令:

  1. curl https://api.openai.com/v1/models \
  2. -H "Authorization: Bearer $OPENAI_API_KEY" \
  3. -H "OpenAI-Organization: YOUR_ORG_ID" \
  4. -H "OpenAI-Project: $PROJECT_ID"

使用 openai Python 包的示例:

  1. from openai import OpenAI
  2. client = OpenAI(
  3.   organization='YOUR_ORG_ID',
  4.   project='$PROJECT_ID',
  5. )

使用 openai Node.js 包的示例:

  1. import OpenAI from "openai";const openai = new OpenAI({
  2.     organization"YOUR_ORG_ID",
  3.     project"$PROJECT_ID",
  4. });

Organization IDs可以在您的组织设置页面找到。 Project IDs可以通过选择特定项目在您的常规设置页面找到。

三、发起请求示例

您可以将下面的命令粘贴到您的终端中来运行您的第一个 API 请求。请确保将 $OPENAI_API_KEY 替换为您的秘密 API 密钥。如果您使用的是旧版用户密钥并且有多个项目,您还需要指定Project ID。为了提高安全性,我们建议转向基于项目的keys。

  1. curl https://api.openai.com/v1/chat/completions \
  2.   -H "Content-Type: application/json" \
  3.   -H "Authorization: Bearer $OPENAI_API_KEY" \
  4.   -d '{
  5.      "model": "gpt-3.5-turbo",
  6.      "messages": [{"role": "user", "content": "Say this is a test!"}],
  7.      "temperature": 0.7
  8.    }'

此请求查询的是 gpt-3.5-turbo 模型(实际上是指向 gpt-3.5-turbo 模型变体),以完成以 "Say this is a test" 为提示的文本。您应该会收到一个类似以下内容的响应:

  1. {
  2.     "id""chatcmpl-abc123",
  3.     "object""chat.completion",
  4.     "created": 1677858242,
  5.     "model""gpt-3.5-turbo-0613",
  6.     "usage": {
  7.         "prompt_tokens": 13,
  8.         "completion_tokens": 7,
  9.         "total_tokens": 20
  10.     },
  11.     "choices": [
  12.         {
  13.             "message": {
  14.                 "role""assistant",
  15.                 "content""\n\nThis is a test!"
  16.             },
  17.             "logprobs": null,
  18.             "finish_reason""stop",
  19.             "index": 0
  20.         }
  21.     ]}

现在您已经生成了第一次chat completion  ,让我们分解一下响应对象。我们可以看到 finish_reason 是 stop,这意味着 API 返回了模型生成的完整chat completion 内容,没有遇到任何限制。在 choices 列表中,我们只生成了一条消息,但您可以设置 n 参数来生成多个消息选项。

四、流式输出

OpenAI API 提供了将响应流回客户端的能力,以允许某些请求返回部分结果。为实现此目的,我们遵循 Server-sent events 标准。我们的官方 Node 和 Python 库包括一些帮助工具,可以简化这些事件的解析。

流式传输支持 Chat Completions API 和 Assistants API。本节重点介绍流式传输在 Chat Completions 中的工作方式。

在 Python 中,流式请求看起来像这样:

  1. from openai import OpenAI
  2. client = OpenAI()
  3. stream = client.chat.completions.create(
  4. model="gpt-3.5-turbo",
  5. messages=[{"role": "user", "content": "Say this is a test"}],
  6. stream=True,
  7. )
  8. for chunk in stream:
  9. if chunk.choices[0].delta.content is not None:
  10. print(chunk.choices[0].delta.content, end="")

在 Node / Typescript 中,流式请求看起来像这样:

  1. import OpenAI from "openai";
  2. const openai = new OpenAI();
  3. async function main() {
  4. const stream = await openai.chat.completions.create({
  5. model: "gpt-3.5-turbo",
  6. messages: [{ role: "user", content: "Say this is a test" }],
  7. stream: true,
  8. });
  9. for await (const chunk of stream) {
  10. process.stdout.write(chunk.choices[0]?.delta?.content || "");
  11. }
  12. }
  13. main();

解析 Server-sent events 并不简单,需要谨慎处理。简单的策略比如按新行分割可能会导致解析错误。我们建议尽可能使用现有的客户端库。

原文链接:介绍 | ChatGPT API教程 | ChatGPT API技术开发教程 (chatgptzh.com)icon-default.png?t=N7T8https://jc.chatgptzh.com/web-59-1.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/777533
推荐阅读
相关标签
  

闽ICP备14008679号