敞开生长之旅!这是我参与「日新计划 2 月更文应战」的第 2 天,点击检查活动概况
最近 ChatGPT 突然爆火。抱着猎奇的心态我也去官网注册账号体验了一下,由于网站人数太多,一时半会居然注册不了,不过最终仍是成功注册了。还没注册的朋友们能够参考一下这篇教程 OpenAI 推出超神 ChatGPT 注册攻略来了。写的很详细,我就不再说明晰。
在我和 ChatGPT 聊了十几分钟之后,这个东西令我大为震动,尽管它有些当地显得笨笨的,带点机器人的味道,可是丝毫不影响我对它的喜爱。感叹之余我思考了一下,能不能将它接入到咱们现有的运用中。所以我仔细阅读了一下 OpenAI 官网,果然已经提供了比较多的接口供咱们运用。
准备工作
ChatGPT API 接入需求如下条件。
- 已成功注册 OpenAI 的账号。
- 创建 API KEY,这个 API KEY 是用于 HTTP 恳求身份验证的,能够创建多个。如下图点击“Create new secret key“,留意这个创建之后需求立刻仿制好保存,封闭弹框之后就看不到了。
- 官方 API 文档链接 api-reference。
- 留意 API 调用是收费的,可是 OpenAI 已经为咱们免费提供了18美元的用量,满足大家放心运用。
补全接口示例
该接口功用较多,支撑最常用的问答功用。
- 恳求方式,Post
- url,api.openai.com/v1/completi…
- 恳求体 (json)。
{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0,
"top_p": 1,
"n": 1,
"stream": false
}
- 接口文档,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
作为序列/反序列化结构。编写单元测验对该接口进行恳求,代码如下。
- 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();
- 恳求实体类。
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;
}
- 恳求方法。
运用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());
}
}
- 在
completion()
测验方法中调用上面的completion(String prompt)
方法
@Test
public void completion() {
try {
chatGPT.completion("你能背诵多少位圆周率");
} catch (IOException e) {
e.printStackTrace();
}
}
- 检查恳求成果
{
"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 还提供了其他有用的接口,这儿就不一个一个说明晰,大家能够前往官网自行检查文档。
写在最终
假如你对我感兴趣,请移步到 blogss.cn ,或重视大众号:程序员小北,进一步了解。
- 假如本文帮助到了你,欢迎点赞和重视,这是我继续创造的动力 ❤️
- 由于作者水平有限,文中假如有过错,欢迎在评论区纠正 ✔️
- 本文首发于,未经许可制止转载 ️