ChatGPT API有什么用,ChatGPT API 接入指南

最近 ChatGPT 突然爆火。抱着好奇的心态我也去官网注册账号体验了一下,因为网站人数太多,一时半会竟然注册不了,不过最终还是成功注册了。 

在我和 ChatGPT 聊了十几分钟之后,这个东西令我大为震惊,虽然它有些地方显得笨笨的,带点机器人的味道,但是丝毫不影响我对它的喜爱。感叹之余我思考了一下,能不能将它接入到我们现有的应用中。于是我仔细浏览了一下 OpenAI 官网,果然已经提供了比较多的接口供我们使用。

准备工作

ChatGPT API 接入需要如下条件。

  1. 已成功注册 OpenAI 的账号。
  2. 创建 API KEY,这个 API KEY 是用于 HTTP 请求身份验证的,可以创建多个。如下图点击“Create new secret key“,注意这个创建之后需要马上复制好保存,关闭弹框之后就看不到了。

image.png

  1. 官方 API 文档链接 api-reference。
  2. 注意 API 调用是收费的,但是 OpenAI 已经为我们免费提供了18美元的用量,足够大家放心使用。

image.png

补全接口示例

该接口功能较多,支持最常用的问答功能。

  1. 请求方式,Post
  2. url,api.openai.com/v1/completi…
  3. 请求体 (json)。
{   "model": "text-davinci-003",   "prompt": "Say this is a test",   "max_tokens": 7,   "temperature": 0,   "top_p": 1,   "n": 1,   "stream": false } 复制代码
  1. 接口文档,platform.openai.com/docs/api-re…

请求参数解析

字段 说明
model 可选参数。语言模型,这里选择的是text-davinci-003
prompt 必选参数。即用户的输入。
max_tokens 可选参数,默认值为 16。最大分词数,会影响返回结果的长度。
temperature 可选参数,默认值为 1,取值 0-2。该值越大每次返回的结果越随机,即相似度越小。
top_p 可选参数,与temperature类似。
n 可选参数,默认值为 1。表示对每条prompt生成多少条结果。
stream 可选参数,默认值为false。表示是否回流部分结果。

请求示例

本文使用OkHttp作为网络请求框架,Moshi作为序列/反序列化框架。编写单元测试对该接口进行请求,代码如下。

  1. OkHttp 的初始化。
private final OkHttpClient okHttpClient = new OkHttpClient.Builder()         .connectTimeout(10, TimeUnit.SECONDS)         .writeTimeout(10, TimeUnit.SECONDS)         .readTimeout(30, TimeUnit.SECONDS)         .callTimeout(60, TimeUnit.SECONDS)         .build(); 复制代码
  1. 请求实体类。
private static class CompletionRequest {     private String model = "text-davinci-003";     private String prompt;     private Integer max_tokens = 256;     private float temperature = 0.5f;     private Integer top_p = 1;     private Integer n = 1;     private Boolean stream = false;     private Boolean logprobs;     private String stop; } 复制代码
  1. 请求方法。

使用OkHttp发送请求。需注意所有的 Post 请求需要添加头字段Authorization,值为Bearer YOUR_API_KEY来验证身份。

public void completion(String prompt) throws IOException {     CompletionRequest completionRequest = new CompletionRequest();     completionRequest.setPrompt(prompt);      String reqJson = moshi.adapter(CompletionRequest.class).toJson(completionRequest);     System.out.println("reqJson: " + reqJson);     Request request = new Request.Builder()             .url("https://api.openai.com/v1/completions")             // 将 API_KEY 替换成你自己的 API_KEY             .header("Authorization", "Bearer " + API_KEY)             .post(RequestBody.create(MEDIA_TYPE_JSON, reqJson))             .build();      try (Response response = okHttpClient.newCall(request).execute()) {         if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);         System.out.println(response.body().string());     } } 复制代码
  1. completion()测试方法中调用上面的completion(String prompt)方法
@Test public void completion() {     try {         chatGPT.completion("你能背诵多少位圆周率");     } catch (IOException e) {         e.printStackTrace();     } } 复制代码
  1. 查看请求结果
{   "id": "cmpl-6j9PhjAom9GyxBNCVacvckcVNKVZg",   "object": "text_completion",   "created": 1676218965,   "model": "text-davinci-003",   "choices": [     {       "text": "?\n\n我可以背诵50位圆周率:3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679。",       "index": 0,       "logprobs": null,       "finish_reason": "stop"     }   ],   "usage": {     "prompt_tokens": 21,     "completion_tokens": 73,     "total_tokens": 94   } } 复制代码

总结

通过上面一个例子,相信大家已经学会了如何将 ChatGPT API 接入到自己的应用了。OpenAI 还提供了其他有用的接口,这里就不一个一个说明了,大家可以前往官网自行查看文档。

本文地址:https://www.idcbest.com/idcnews/11008714.html



天下数据手机站 关于天下数据 联系我们 诚聘英才 付款方式 帮助中心 网站备案 解决方案 域名注册 网站地图

天下数据18年专注海外香港服务器、美国服务器、海外云主机、海外vps主机租用托管以及服务器解决方案-做天下最好的IDC服务商

《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号

朗信天下发展有限公司(控股)深圳市朗玥科技有限公司(运营)联合版权

深圳总部:中国.深圳市南山区深圳国际创新谷6栋B座10层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓

7×24小时服务热线:4006388808香港服务电话:+852 67031102

本网站的域名注册业务代理北京新网数码信息技术有限公司的产品

工商网监图标