AI资讯
掌握人工智能AI动态,领略未来风采!
OpenAI ChatGPT 是一款极为强大的人工智能对话系统,用户只需输入提示词,便可在几秒钟内便生成流畅而自然的响应。凭借其卓越的语言理解与生成能力,ChatGPT 在行业中已然脱颖而出,现今已广泛地应用于各行各业,其影响力日渐提升。不论是日常对话、创意写作,还是专业咨询和程序编程,ChatGPT 都能提供出人意料的智能支持,极大地提升了人类的工作效率和创造力。
本文档旨在详尽介绍 OpenAI Chat Completion API 的操作流程,借助此工具,我们可以轻松享用官方的 OpenAI ChatGPT 的对话功能。
欲使用 OpenAI Chat Completion API,首先可前往 OpenAI Chat Completion API 页面,并点击「Acquire」按钮以获取所需的凭证:
若您尚未登入或注册,页面会自动跳转至登录界面,邀请您进行注册与登录,完成后便会自动返回当前页面。
首次申请时您将获得免费额度,可免费体验该 API。
紧接着,您可以在界面中填写相应内容,如下图所示:
在首次使用此接口时,我们至少需要填写三个字段:其一为 authorization
,可直接在下拉菜单中选择。第二个参数为 model
, model
表示我们所选择的 OpenAI ChatGPT 官方模型类型,这里提供了 20 种模型,具体信息请参阅我们列出的模型。最后一个参数为 messages
,messages
是我们所输入的提问词数组,表示可以同时上传多个提问,每条提问均包含 role
和 content
,其中 role
标示提问者的身份属性,我们提供了三种角色:user
、assistant
、system
;而 content
则是我们实际的提问内容。
您还可以注意到右侧有相应的调用代码生成,您可以直接复制代码进行运行,或点击「Try」按钮进行测试。
调用后,我们可以看到返回结果如下:
json代码解读复制代码{ "id": "chatcmpl-9k1idCCQuteN6Zu7Kv35TrG6DHKNt", "object": "chat.completion.chunk", "created": 1720756723, "model": "gpt-4", "system_fingerprint": "fp_abc28019ad", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Hello! How can I assist you today?" }, "finish_reason": "stop" } ], "recipient": "all", "usage": { "prompt_tokens": 8, "completion_tokens": 9, "total_tokens": 17 } }
返回结果中包含多个字段,具体介绍如下:
id
:用于唯一标识此次对话任务的 ID。
model
:所选择的 OpenAI ChatGPT 官方模型。
choices
:ChatGPT 针对提问给予的回答信息。
usage
:本次问答所涉及 token 的统计信息。
其中 choices
包含了 ChatGPT 的回答信息,从中可以获悉,如下图所示。
可以指出的是,choices
里的 content
字段包含了 ChatGPT 所给出的具体答复。
此接口亦支持流式响应,这对网页的接入极为有利,能够实现逐字展现效果。
若希望实现流式返回响应,则可在请求头中将 stream
参数更改为 true
。
如图所示的修改会需要相应调整才能支持流式响应。
当您将 stream
修改为 true
后,API 将逐行返回对应的 JSON 数据,我们需在代码层面做相应调整以获取逐行的结果。
Python 示例代码调用如下:
python代码解读复制代码import requests url = "https://api.acedata.cloud/openai/chat/completions" headers = { "accept": "application/json", "authorization": "Bearer {token}", "content-type": "application/json" } payload = { "model": "gpt-4", "messages": [{"role":"user","content":"hello"}], "stream": True } response = requests.post(url, json=payload, headers=headers) print(response.text)
输出效果如下:
json代码解读复制代码data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": "Hi", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " there", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": "!", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " How", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " can", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " I", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " assist", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " you", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": " today", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"content": "?", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: {"choices": [{"delta": {"role": "assistant"}, "finish_reason": "stop", "index": 0}], "created": 1721007349, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"} data: [DONE]
在这个响应中,您能看到多个 data
,而 data
中的 choices
便是最新的回复内容,和前文描述一致。choices
中的新回复内容,您可以依此将其接入到您的系统中。同时,流式响应的结束是基于 data
的内容判定的,当内容为 [DONE]
时,便表示流式响应已全部结束。返回的 data
结果同样包含多个字段,具体介绍如下:
id
:用于唯一标识此次对话任务的 ID。
model
:所选择的 OpenAI ChatGPT 官方模型。
choices
:ChatGPT 针对提问给予的回答信息。
JavaScript 亦支持流式调用,以下是 Node.js 的代码示例:
javascript代码解读复制代码const options = { method: "post", headers: { accept: "application/json", authorization: "Bearer {token}", "content-type": "application/json", }, body: JSON.stringify({ model: "gpt-4", messages: [{ role: "user", content: "hello" }], stream: true, }), }; fetch("https://api.acedata.cloud/openai/chat/completions", options) .then((response) => response.json()) .then((response) => console.log(response)) .catch((err) => console.error(err));
Java 示例代码如下:
java代码解读复制代码JSONObject jsonObject = new JSONObject(); jsonObject.put("model", "gpt-4"); jsonObject.put("messages", [{"role":"user","content":"hello"}]); jsonObject.put("stream", true); MediaType mediaType = "application/json; charset=utf-8".toMediaType(); RequestBody body = jsonObject.toString().toRequestBody(mediaType); Request request = new Request.Builder() .url("https://api.acedata.cloud/openai/chat/completions") .post(body) .addHeader("accept", "application/json") .addHeader("authorization", "Bearer {token}") .addHeader("content-type", "application/json") .build(); OkHttpClient client = new OkHttpClient(); Response response = client.newCall(request).execute(); System.out.print(response.body!!.string())
其他语言可按自身需求进行改写,基本原理一致。
若您想要接入多轮对话功能,则需对 messages
字段上传多个提问,这些提问的具体示例如下图所示:
Python 示例调用代码如下:
python代码解读复制代码import requests url = "https://api.acedata.cloud/openai/chat/completions" headers = { "accept": "application/json", "authorization": "Bearer {token}", "content-type": "application/json" } payload = { "model": "gpt-4", "messages": [{"role":"user","content":"Hello"},{"role":"assistant","content":"Hi! How can I assist you today?"},{"role":"user","content":"What I say just now?"}] } response = requests.post(url, json=payload, headers=headers) print(response.text)
通过上传多个提问,您便能轻松实现多轮对话,并获取如下回答:
json代码解读复制代码{ "choices": [ { "index": 0, "message": { "role": "assistant", "content": "You said, \"Hello.\"" }, "finish_reason": "stop" } ], "created": 1721323012, "id": "chatcmpl-NWZmOTA5MDlkZjBjNDRjNGEwMzRjYzA5NmM1MzQwMWY", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all", "usage": { "prompt_tokens": 31, "completion_tokens": 6, "total_tokens": 37 } }
可以观察到,choices
中的信息与基本使用的内容一致,包括 ChatGPT 针对多个对话进行回复的具体内容,这样便能依据众多对话内容准确回答相应的问题。
OpenAI Chat Completion API 服务的上游是官方的 OpenAI 服务,具体可参考官方的 OpenAI-Python,以下简要介绍如何使用官方提供的服务。
首先需搭建本地的 Python
环境,您可通过谷歌搜索相关教程。
下载并安装开发环境,例如 VSCode 编辑器。
配置 OpenAI
的环境变量。
在项目文件夹中,创建一个名为 .env
的文件并保存。
.env
文件内容应为:
json代码解读复制代码OPENAI_API_KEY="sk-xxx" OPENAI_BASE_URL="https://api.acedata.cloud/openai" # 再次提醒:若使用官网OpenAI的key,请确保不使用此地址。
请用您的密钥替换 sk-xxx
。OPENAI_BASE_URL
是访问 OpenAI 代理接口的地址。
安装项目所需的依赖包:
shell代码解读复制代码pip install openai
在 Mac OS 中,命令为:
shell代码解读复制代码pip3 install openai
创建示例源代码文件
假定我们创建一个示例代码 index.py
,具体内容如下:
python代码解读复制代码import os from openai import OpenAI client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) response = client.chat.completions.create( messages=[ { "role": "user", "content": "hello", } ], model="gpt-4", ) print(response.text)
gpt-3.5-browsing 和 gpt-4-browsing 模型与其他模型有所不同,它们能根据提问词进行在线搜索,并相应调整结果返回给您。以下将通过具体示例演示联网功能,接下来可在 OpenAI Chat Completion API 界面填写相应内容,如下图所示:
同时,您还可以注意到右侧生成相应的调用代码,您可以直接复制代码进行运行,或点击「Try」按钮进行测试。
调用之后,我们发现返回结果如下:
json代码解读复制代码{ "choices": [ { "index": 0, "message": { "role": "assistant", "content": "For the latest news in China today, you can check major news websites such as:\n\n- [BBC News China](https://www.bbc.com/news/world/asia/china)\n- [CNN China News](https://edition.cnn.com/china)\n- [Reuters China](https://www.reuters.com/news/archive/china-news)\n\nThese sources will have up-to-date information on current events in China." }, "finish_reason": "stop" } ], "created": 1721009347, "id": "chatcmpl-YzA0M2RjZDVkYThlNDkxNTkzOThmZWQ4OGMzNzdhNzA", "model": "gpt-4-browsing", "object": "chat.completion.chunk", "recipient": "all", "usage": { "prompt_tokens": 325, "completion_tokens": 82, "total_tokens": 407 } }
可以明显看到,choices
中的回答信息是依据联网查询结果生成的,且给出了相关链接,需通过 markdown
语法进行渲染,以获得最佳体验,最终也展现出了我们模型联网功能的强大优势。
gpt-4o 是 OpenAI 开发的一款多模态大型语言模型,它在 GPT-4 的基础上增加了视觉理解能力。此模型能够同时处理文本与图像输入,达成跨模态的理解与生成。
使用 gpt-4o 模型处理文本的方式与前述基本使用内容相似,下面将简要介绍如何运用该模型的图像处理能力。
使用 gpt-4o 模型进行图像处理的方式是,通过在原有的 content
内容上增添一个 type
字段,以识别上传的是文本還是图片,从而利用 gpt-4o 模型的图像处理能力。以下主要通过 Curl 和 Python 两种方式来调用该功能。
Curl 脚本方式
css代码解读复制代码curl -X POST 'https://api.acedata.cloud/openai/chat/completions' \ -H 'accept: application/json' \ -H 'authorization: Bearer {token}' \ -H 'content-type: application/json' \ -d '{ "model": "gpt-4o", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What'\''s in this image?" }, { "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } } ] } ] }'
Python 脚本方式
python代码解读复制代码import requests url = "https://api.acedata.cloud/openai/chat/completions" headers = { "accept": "application/json", "authorization": "Bearer {token}", "content-type": "application/json" } payload = { "model": "gpt-4o", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What's in this image?" }, { "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }, ], } ] } response = requests.post(url, json=payload, headers=headers) print(response.text)
最终您将获得如下结果,结果中的字段信息与前述一致,具体如下:
json代码解读复制代码{ "id": "chatcmpl-123", "object": "chat.completion", "created": 1677652288, "model": "gpt-4-vision-preview", "system_fingerprint": "fp_44709d6fcb", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "\n\nThis image shows a wooden boardwalk extending through a lush green marshland." }, "logprobs": null, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 9, "completion_tokens": 12, "total_tokens": 21 } }
可见回答的内容是依据所上传的图片生成的,因此无论您采用何种方式,都能轻松使用 gpt-4o 模型的文本与图像处理能力。
此外,另有一款低成本的模型,称为 gpt-4o-mini。gpt-4o-mini 是 OpenAI 最新推出的大型语言模型,除响应速度快之外,其价格亦更为亲民,且同样支持多模态。视觉功能的使用可参考前文 gpt-4o 模型的使用指导。
在调用 API 时,如遇到错误,API 会返回相应的错误代码与信息。例如:
400 token_mismatched
:请求错误,可能由于缺少或无效的参数。
400 api_not_implemented
:请求错误,可能由于缺少或无效的参数。
401 invalid_token
:未授权,验证码无效或缺失。
429 too_many_requests
:请求过多,超出请求限度。
500 api_error
:内部服务器错误,服务器出现问题。
json代码解读复制代码{ "success": false, "error": { "code": "api_error", "message": "fetch failed" }, "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89" }
通过本文档,您已了解到如何轻松地使用 OpenAI Chat Completion API 实现官方 OpenAI ChatGPT 的对话功能。希望此文档能帮助您更好地对接与使用该 API。如有任何疑问,请随时联系到我们的技术支持团队。