1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| package com.example.myapp.config;
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;
import java.io.IOException; import java.util.concurrent.TimeUnit;
import okhttp3.*;
public class AiConfig { public String API_KEY;
public String SECRET_KEY;
public String AI_Role;
public JSONArray Dialogue_Content;
public AiConfig(String apikey, String secrectkey, String airole){ Dialogue_Content=new JSONArray(); API_KEY=apikey; SECRET_KEY=secrectkey; AI_Role=airole; }
static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS).writeTimeout(60, TimeUnit.SECONDS).readTimeout(60, TimeUnit.SECONDS).build(); public void GetAnswer(String user_msg,final ResponseCallback callback) throws IOException, JSONException{ JSONObject jsonObject = new JSONObject(); jsonObject.put("role", "user"); jsonObject.put("content", user_msg);
Dialogue_Content.put(jsonObject); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"messages\":" + Dialogue_Content.toString() + ",\"system\":\"" + AI_Role + "\",\"disable_search\":false,\"enable_citation\":false}");
Request request = new Request.Builder().url("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token=" + getAccessToken()).method("POST", body).addHeader("Content-Type", "application/json").build();
HTTP_CLIENT.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, Response response){ try { if (response.isSuccessful()) { JSONObject json_feedback = new JSONObject(response.body().string()); String res = json_feedback.getString("result"); JSONObject jsontmp = new JSONObject(); jsontmp.put("assistant", res); Dialogue_Content.put(jsontmp); callback.onSuccess(res); } else { callback.onError("服务器返回错误:" + response.code()); } } catch (Exception e) { callback.onError(e.getMessage()); } }
@Override public void onFailure(Call call, IOException e) { callback.onError(e.getMessage()); } });
}
public String getAccessToken() throws IOException, JSONException { MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY); Request request = new Request.Builder().url("https://aip.baidubce.com/oauth/2.0/token").method("POST", body).addHeader("Content-Type", "application/x-www-form-urlencoded").build(); Response response = HTTP_CLIENT.newCall(request).execute(); return new JSONObject(response.body().string()).getString("access_token"); } public interface ResponseCallback { void onSuccess(String response); void onError(String error); } }
|