La primera experiencia de ChatGPT y la integración de Android
prefacio
ChatGPT está en un lío con su poderosa función de IA. Dado que no se puede acceder a su sitio web oficial en China, muchos amigos no pueden experimentarlo y usarlo de manera amigable. Ahora permítanme compartir su integración y uso simples, y finalmente adjuntar el código de integración en Android lado _
( Recordatorio: las siguientes URL requieren acceso de proxy )
Cree su propia CLAVE API
- Primero, abra el sitio web oficial de ChatGPT , para que no repita el proceso de registro e inicio de sesión aquí Para conocer los pasos específicos, consulte aquí
- Después de ingresar a la cuenta, haga clic en su avatar en la esquina superior derecha y seleccione la opción Ver claves API
- Haga clic en este botón para crear una clave ( recuerde copiar la clave generada , no se mostrará más tarde, guárdela y se usará más tarde)
Integración en el lado de Android
-
Abra el documento API y elija ver los pasos de integración específicos. El oficial proporciona tres métodos: curl, python, Node.js
-
Aquí necesitamos integrar la función de chat de ChatGPT. Antes de comenzar el proyecto, planeo usar kotlin + coroutines + retorfit2 para construir
-
Cree un nuevo proyecto en el estudio de Android y enumere las bibliotecas dependientes clave:
//retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' //coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
-
De acuerdo con la parte oficial de Chat del código de caso de uso, se deben agregar dos encabezados de solicitud:
curl https://api.openai.com/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "model": "gpt-3.5-turbo", "messages": [{ "role": "user", "content": "Hello!"}] }'
-
Escriba nuestra propia interfaz de solicitud, traiga el encabezado de la solicitud:
interface ApiService { @POST("chat/completions") fun getMessage(@Header("Content-Type") type:String,@Header("Authorization") authorization:String, @Body body:SendBodyData):Call<ModelData> }
-
Implementar solicitudes específicas en el modelo de vista:
private val baseUrl = "https://api.openai.com/v1/chat/completions" private val key = "sk-Rix2aNkoTt0NuiJQBCc4T3BlbkFJMnAdYtxTn1TfpOQ4K" var responseData = MutableStateFlow(ModelData()) suspend fun getMsg(info:String){ when (val result = ApiHelper.getMsg("application/json","Bearer $key", SendBodyData(listOf(SendMessage(info,"user")),"gpt-3.5-turbo"))) { is Result.Success -> { responseData.emit(result.data) } is Result.Error -> { val exception = result.exception // 处理错误响应 println(exception) } } }
-
Finalmente se muestra en la Actividad:
lifecycleScope.launch { dataViewModel.responseData.collect{ mBinding.idTVResponse.text = it.choices?.get(0)?.message?.content mBinding.idTILQuery.setText("") } } lifecycleScope.launchWhenResumed { dataViewModel.getMsg(mBinding.idTILQuery.text.toString()) }
el código
Lo anterior es solo el código principal publicado, consulte aquí el código de ingeniería específico
Resumir
Pisando el pozo en el proceso:
- La autorización en el encabezado de la solicitud es de tipo Portador, de lo contrario se devuelve un error 401
- Recuerde encender el agente cuando el teléfono esté funcionando , de lo contrario será una pérdida de tiempo...