Chat-GPT 是一个基于 GPT-3.5 架构训练的大型语言模型,可以用于各种自然语言处理任务,例如文本生成、对话系统、语言翻译等。本文通过接入 GPT-3.5,实现AI聊天。
实现效果:
一、ChatGPT API 接入前提条件:
1.已成功注册 OpenAI 的账号;
2.创建 API KEY,这个 API KEY 是用于 API 请求身份验证的,一个 OpenAI 账号可以创建多个 API KEY。
3.官方 API 文档链接 :https://platform.openai.com/docs/api-reference/introduction
二、ChatGPT Chat API 接入:
1.本文接入的是gpt-3.5,文档链接:https://platform.openai.com/docs/api-reference/chat/create
2.API 接入详解:
2.1 请求url地址:
https://api.openai.com/v1/chat/completions
2.2 请求头:
添加头字段Authorization,值为Bearer YOUR_API_KEY(创建的API KEY)来验证身份
2.3 请求参数:
设置 model,使用的是 gpt-3.5;
设置 messages,包含 role(角色) 和 content(内容) 参数,这里使用 role(角色)是 user(用户),content 是用户输入的内容;
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}
3.使用OkHttp完整请求
fun jinOpenApi(prompt: String, callback: ICallback<String>?) {
val completionJSON = "{\n" +
" \"model\": \"gpt-3.5-turbo\",\n" +
" \"messages\": [{\"role\": \"user\", \"content\": \"$prompt\"}]\n" +
"}\n"
val okClient = OkHttpClient().newBuilder().build()
val mediaType = "application/json".toMediaTypeOrNull()
val body = RequestBody.create(mediaType, completionJSON)
val request = Request.Builder()
.url("https://api.openai.com/v1/chat/completions")
.method("POST", body)
.addHeader("Authorization", "Bearer $YOUR_API_KEY")
.addHeader("Content-Type", "application/json")
.build()
GlobalScope.loadData(
load = {
okClient.newCall(request).execute()
},
response = {
if (it?.isSuccessful == true) {
val data = it?.body!!.string()
Log.i(TAG, "jinOpenApi data $data")
val dataJSON = JSONObject(data)
val choices = dataJSON.getJSONArray("choices")
if (choices != null && choices.length() > 0) {
val choicesJSON = choices.getJSONObject(0)
val messageJSON = choicesJSON.getJSONObject("message")
val content = messageJSON.optString("content")
callback?.onSuccess(content)
}
}
},
error = {
callback?.onFailed("400", it)
}
)
}