ChatGPT の初体験と Android の統合
序文
ChatGPT はその強力な AI 機能に混乱しています. 中国では公式 Web サイトにアクセスできないため、多くの友人はそれを体験できず、非常にフレンドリーに使用できません. 次に、その簡単な統合と使用法を共有し、最後に Android に統合コードを添付します.側面。
(注意: 次の URL にはプロキシ アクセスが必要です)
独自の API キーを作成する
- まずはChatGPTの公式サイトを開くので、ここでは登録・ログインの手順は省略しますが、具体的な手順はこちらを参照してください
- アカウントを入力したら、右上隅にある自分のアバターをクリックし、[API キーを表示] オプションを選択します。
- このボタンをクリックしてキーを作成します (生成されたキーをコピーすることを忘れないでください。後で表示されることはありません。保存して、後で使用します)。
Android 側での統合
-
Open the API document and choose to view the specific integration steps. 公式には、curl、python、Node.js の 3 つの方法が用意されています。
-
ここで ChatGPT のチャット機能を統合する必要があります. プロジェクトを開始する前に、kotlin + coroutines + retorfit2 を使用してビルドする予定です.
-
Android Studio で新しいプロジェクトを作成し、主要な依存ライブラリを一覧表示します。
//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'
-
ユース ケース コードの公式チャット部分によると、2 つの要求ヘッダーを追加する必要があります。
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!"}] }'
-
独自のリクエスト インターフェイスを作成し、リクエスト ヘッダーを持ってきます。
interface ApiService { @POST("chat/completions") fun getMessage(@Header("Content-Type") type:String,@Header("Authorization") authorization:String, @Body body:SendBodyData):Call<ModelData> }
-
ビューモデルで特定のリクエストを実装します。
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) } } }
-
最終的にアクティビティに表示されます:
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()) }
コード
上記は投稿された主なコードです。具体的なエンジニアリング コードについては、こちらを参照してください。
要約する
その過程でピットを踏む:
- リクエスト ヘッダーの認証は Bearer タイプです。それ以外の場合は 401 エラーが返されます
- 電話が動作しているときにエージェントをオンにすることを忘れないでください。そうしないと、時間の無駄になります...