【ChatGPT初体験とAndroidの連携利用】

序文

ChatGPT はその強力な AI 機能に混乱しています. 中国では公式 Web サイトにアクセスできないため、多くの友人はそれを体験できず、非常にフレンドリーに使用できません. 次に、その簡単な統合と使用法を共有し、最後に Android に統合コードを添付します.側面
(注意: 次の URL にはプロキシ アクセスが必要です)

独自の API キーを作成する

  1. まずはChatGPTの公式サイトを開くので、ここでは登録・ログインの手順は省略しますが、具体的な手順はこちらを参照してください
  2. アカウントを入力したら、右上隅にある自分のアバターをクリックし、[API キーを表示] オプションを選択します。
  3. このボタンをクリックしてキーを作成します (生成されたキーをコピーすることを忘れないでください。後で表示されることはありません。保存して、後で使用します)。ボタンをクリックしてキーを作成します

Android 側での統合

  1. Open the API document and choose to view the specific integration steps. 公式には、curl、python、Node.js の 3 つの方法が用意されています。

  2. ここで ChatGPT のチャット機能を統合する必要があります. プロジェクトを開始する前に、kotlin + coroutines + retorfit2 を使用してビルドする予定です.

  3. 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'
    
  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!"}]
    }'
    
    
  5. 独自のリクエスト インターフェイスを作成し、リクエスト ヘッダーを持ってきます。

    interface ApiService {
          
          
        @POST("chat/completions")
        fun getMessage(@Header("Content-Type") type:String,@Header("Authorization") authorization:String, @Body body:SendBodyData):Call<ModelData>
    }
    
  6. ビューモデルで特定のリクエストを実装します。

    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)
            }
        }
    }
    
  7. 最終的にアクティビティに表示されます:

    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())
    }
    
    

コード

上記は投稿された主なコードです。具体的なエンジニアリング コードについては、こちらを参照してください。

要約する

その過程でピットを踏む:

  1. リクエスト ヘッダーの認証は Bearer タイプです。それ以外の場合は 401 エラーが返されます
  2. 電話が動作しているときにエージェントをオンにすることを忘れないでください。そうしないと、時間の無駄になります...

おすすめ

転載: blog.csdn.net/h397318057/article/details/129445646