import
android.content material.Context
import
android.os.Bundle
import
android.util.Log
import
android.view.inputmethod.EditorInfo
import
android.widget.TextView
import
android.widget.TextView.OnEditorActionListener
import
android.widget.Toast
import
androidx.appcompat.app.AppCompatActivity
import
com.android.volley.RequestQueue
import
com.android.volley.Response
import
com.android.volley.RetryPolicy
import
com.android.volley.VolleyError
import
com.android.volley.toolbox.JsonObjectRequest
import
com.android.volley.toolbox.Volley
import
com.google.android.materials.textfield.TextInputEditText
import
org.json.JSONObject
Â
Â
class
MainActivity : AppCompatActivity() {
Â
Â
   Â
   Â
lateinit var responseTV: TextView
   Â
lateinit var questionTV: TextView
   Â
lateinit var queryEdt: TextInputEditText
Â
Â
Â
Â
   Â
override enjoyable onCreate(savedInstanceState: Bundle?) {
       Â
tremendous
.onCreate(savedInstanceState)
       Â
setContentView(R.structure.activity_main)
       Â
       Â
responseTV = findViewById(R.id.idTVResponse)
       Â
questionTV = findViewById(R.id.idTVQuestion)
       Â
queryEdt = findViewById(R.id.idEdtQuery)
Â
Â
       Â
       Â
queryEdt.setOnEditorActionListener(OnEditorActionListener { v, actionId, occasion ->
           Â
if
(actionId == EditorInfo.IME_ACTION_SEND) {
               Â
               Â
responseTV.textual content =
"Please wait.."
               Â
               Â
if
(queryEdt.textual content.toString().size >
0
) {
                   Â
                   Â
getResponse(queryEdt.textual content.toString())
               Â
}
else
{
                   Â
Toast.makeText(
this
,
"Please enter your question.."
, Toast.LENGTH_SHORT).present()
               Â
}
               Â
return
@OnEditorActionListener
true
           Â
}
           Â
false
       Â
})
   Â
}
Â
Â
   Â
personal
enjoyable getResponse(question: String) {
       Â
       Â
questionTV.textual content = question
       Â
queryEdt.setText(
""
)
       Â
       Â
val queue: RequestQueue = Volley.newRequestQueue(applicationContext)
       Â
       Â
val jsonObject: JSONObject? = JSONObject()
       Â
       Â
jsonObject?.put(
"mannequin"
,
"text-davinci-003"
)
       Â
jsonObject?.put(
"immediate"
, question)
       Â
jsonObject?.put(
"temperature"
,
0
)
       Â
jsonObject?.put(
"max_tokens"
,
100
)
       Â
jsonObject?.put(
"top_p"
,
1
)
       Â
jsonObject?.put(
"frequency_penalty"
,
0.0
)
       Â
jsonObject?.put(
"presence_penalty"
,
0.0
)
Â
Â
       Â
       Â
val postRequest: JsonObjectRequest =
           Â
           Â
object : JsonObjectRequest(Technique.POST, url, jsonObject,
               Â
Response.Listener { response ->
                   Â
                   Â
val responseMsg: String =
                       Â
response.getJSONArray(
"selections"
).getJSONObject(
0
).getString(
"textual content"
)
                   Â
responseTV.textual content = responseMsg
               Â
},
               Â
               Â
Response.ErrorListener { error ->
                   Â
Log.e(
"TAGAPI"
,
"Error is : "
+ error.message +
"n"
+ error)
               Â
}) {
               Â
override enjoyable getHeaders(): kotlin.collections.MutableMap<kotlin.String, kotlin.String> {
                   Â
val params: MutableMap<String, String> = HashMap()
                   Â
                   Â
params[
"Content-Type"
] =
"utility/json"
                   Â
params[
"Authorization"
] =
                       Â
"Bearer Enter your token right here"
                   Â
return
params;
               Â
}
           Â
}
Â
Â
       Â
       Â
postRequest.setRetryPolicy(object : RetryPolicy {
           Â
override enjoyable getCurrentTimeout(): Int {
               Â
return
50000
           Â
}
Â
Â
           Â
override enjoyable getCurrentRetryCount(): Int {
               Â
return
50000
           Â
}
Â
Â
           Â
@Throws
(VolleyError::
class
)
           Â
override enjoyable retry(error: VolleyError) {
           Â
}
       Â
})
       Â
       Â
queue.add(postRequest)
   Â
}
}