Added OpenAI Uri option (2)

This commit is contained in:
M66B
2023-05-29 20:32:24 +02:00
parent f8676e56c4
commit 1004e6d5ee
3 changed files with 54 additions and 5 deletions

View File

@@ -161,6 +161,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private ImageButton ibSend;
private SwitchCompat swOpenAi;
private TextView tvOpenAiPrivacy;
private EditText etOpenAi;
private TextInputLayout tilOpenAi;
private EditText etOpenAiModel;
private TextView tvOpenAiTemperature;
@@ -280,7 +281,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"deepl_enabled",
"vt_enabled", "vt_apikey",
"send_enabled", "send_host", "send_dlimit", "send_tlimit",
"openai_enabled", "openai_apikey", "openai_model", "openai_temperature", "openai_moderation",
"openai_enabled", "openai_uri", "openai_apikey", "openai_model", "openai_temperature", "openai_moderation",
"updates", "weekly", "beta", "show_changelog", "announcements",
"crash_reports", "cleanup_attachments",
"watchdog", "experiments", "main_log", "main_log_memory", "protocol", "log_level", "debug", "leak_canary",
@@ -406,6 +407,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
ibSend = view.findViewById(R.id.ibSend);
swOpenAi = view.findViewById(R.id.swOpenAi);
tvOpenAiPrivacy = view.findViewById(R.id.tvOpenAiPrivacy);
etOpenAi = view.findViewById(R.id.etOpenAi);
tilOpenAi = view.findViewById(R.id.tilOpenAi);
etOpenAiModel = view.findViewById(R.id.etOpenAiModel);
tvOpenAiTemperature = view.findViewById(R.id.tvOpenAiTemperature);
@@ -1047,6 +1049,28 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
etOpenAi.setHint(BuildConfig.OPENAI_ENDPOINT);
etOpenAi.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Do nothing
}
@Override
public void afterTextChanged(Editable s) {
String apikey = s.toString().trim();
if (TextUtils.isEmpty(apikey))
prefs.edit().remove("openai_uri").apply();
else
prefs.edit().putString("openai_uri", apikey).apply();
}
});
tilOpenAi.getEditText().addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -2238,6 +2262,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"lt_key".equals(key) ||
"vt_apikey".equals(key) ||
"send_host".equals(key) ||
"openai_uri".equals(key) ||
"openai_apikey".equals(key) ||
"openai_model".equals(key))
return;
@@ -2432,6 +2457,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swSend.setChecked(prefs.getBoolean("send_enabled", false));
etSend.setText(prefs.getString("send_host", null));
swOpenAi.setChecked(prefs.getBoolean("openai_enabled", false));
etOpenAi.setText(prefs.getString("openai_uri", null));
tilOpenAi.getEditText().setText(prefs.getString("openai_apikey", null));
etOpenAiModel.setText(prefs.getString("openai_model", null));

View File

@@ -40,6 +40,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
public class OpenAI {
private static final int MAX_OPENAI_LEN = 1000; // characters
@@ -53,7 +54,8 @@ public class OpenAI {
boolean enabled = prefs.getBoolean("openai_enabled", false);
String apikey = prefs.getString("openai_apikey", null);
return (enabled && !TextUtils.isEmpty(apikey));
return (enabled &&
(!TextUtils.isEmpty(apikey) || !Objects.equals(getUri(context), BuildConfig.OPENAI_ENDPOINT)));
}
static Pair<Double, Double> getGrants(Context context) throws JSONException, IOException {
@@ -154,12 +156,20 @@ public class OpenAI {
return choices;
}
private static String getUri(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String endpoint = prefs.getString("openai_uri", BuildConfig.OPENAI_ENDPOINT);
if (!endpoint.endsWith("/"))
endpoint += "/";
return endpoint;
}
private static JSONObject call(Context context, String method, String path, JSONObject args) throws JSONException, IOException {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String apikey = prefs.getString("openai_apikey", null);
// https://platform.openai.com/docs/api-reference/introduction
Uri uri = Uri.parse(BuildConfig.OPENAI_ENDPOINT).buildUpon().appendEncodedPath(path).build();
Uri uri = Uri.parse(getUri(context)).buildUpon().appendEncodedPath(path).build();
Log.i("OpenAI uri=" + uri);
long start = new Date().getTime();