OpenAI Context Size
diff --git a/public/scripts/openai.js b/public/scripts/openai.js
index b92981f91..577a8b787 100644
--- a/public/scripts/openai.js
+++ b/public/scripts/openai.js
@@ -78,6 +78,7 @@ const default_settings = {
jailbreak_prompt: default_jailbreak_prompt,
openai_model: 'gpt-3.5-turbo-0301',
jailbreak_system: false,
+ reverse_proxy: '',
};
const oai_settings = {
@@ -98,11 +99,28 @@ const oai_settings = {
jailbreak_prompt: default_jailbreak_prompt,
openai_model: 'gpt-3.5-turbo-0301',
jailbreak_system: false,
+ reverse_proxy: '',
};
let openai_setting_names;
let openai_settings;
+function validateReverseProxy() {
+ if (!oai_settings.reverse_proxy) {
+ return;
+ }
+
+ try {
+ new URL(oai_settings.reverse_proxy);
+ }
+ catch (err) {
+ callPopup('Entered reverse proxy address is not a valid URL', 'text');
+ setOnlineStatus('no_connection');
+ resultCheckStatusOpen();
+ throw err;
+ }
+}
+
function setOpenAIOnlineStatus(value) {
is_get_status_openai = value;
}
@@ -396,6 +414,10 @@ async function prepareOpenAIMessages(name2, storyString, worldInfoBefore, worldI
}
async function sendOpenAIRequest(openai_msgs_tosend) {
+ if (oai_settings.reverse_proxy) {
+ validateReverseProxy();
+ }
+
const generate_data = {
"messages": openai_msgs_tosend,
"model": oai_settings.openai_model,
@@ -404,6 +426,7 @@ async function sendOpenAIRequest(openai_msgs_tosend) {
"presence_penalty": parseFloat(oai_settings.pres_pen_openai),
"max_tokens": oai_settings.openai_max_tokens,
"stream": false, //oai_settings.stream_openai,
+ "reverse_proxy": oai_settings.reverse_proxy,
};
const generate_url = '/generate_openai';
@@ -589,17 +612,28 @@ function loadOpenAISettings(data, settings) {
$('#pres_pen_openai').val(oai_settings.pres_pen_openai);
$('#pres_pen_counter_openai').text(Number(oai_settings.pres_pen_openai).toFixed(2));
+
+ if (settings.reverse_proxy !== undefined) oai_settings.reverse_proxy = settings.reverse_proxy;
+ $('#openai_reverse_proxy').val(oai_settings.reverse_proxy);
}
async function getStatusOpen() {
if (is_get_status_openai) {
- let data = { key: oai_settings.api_key_openai };
+
+ let data = {
+ key: oai_settings.api_key_openai,
+ reverse_proxy: oai_settings.reverse_proxy,
+ };
jQuery.ajax({
type: 'POST', //
url: '/getstatus_openai', //
data: JSON.stringify(data),
- beforeSend: function () { },
+ beforeSend: function () {
+ if (oai_settings.reverse_proxy) {
+ validateReverseProxy();
+ }
+ },
cache: false,
dataType: "json",
contentType: "application/json",
@@ -902,4 +936,9 @@ $(document).ready(function () {
$('#jailbreak_prompt_textarea').val(oai_settings.jailbreak_prompt);
saveSettingsDebounced();
});
+
+ $("#openai_reverse_proxy").on('input', function () {
+ oai_settings.reverse_proxy = $(this).val();
+ saveSettingsDebounced();
+ });
});
diff --git a/server.js b/server.js
index 3944e2ae4..3baa4943e 100644
--- a/server.js
+++ b/server.js
@@ -1923,10 +1923,11 @@ app.get('/thumbnail', jsonParser, async function (request, response) {
app.post("/getstatus_openai", jsonParser, function (request, response_getstatus_openai = response) {
if (!request.body) return response_getstatus_openai.sendStatus(400);
api_key_openai = request.body.key;
+ const api_url = new URL(request.body.reverse_proxy || api_openai).toString();
const args = {
headers: { "Authorization": "Bearer " + api_key_openai }
};
- client.get(api_openai + "/models", args, function (data, response) {
+ client.get(api_url + "/models", args, function (data, response) {
if (response.statusCode == 200) {
console.log(data);
response_getstatus_openai.send(data);//data);
@@ -1946,11 +1947,12 @@ app.post("/getstatus_openai", jsonParser, function (request, response_getstatus_
app.post("/generate_openai", jsonParser, function (request, response_generate_openai) {
if (!request.body) return response_generate_openai.sendStatus(400);
+ const api_url = new URL(request.body.reverse_proxy || api_openai).toString();
console.log(request.body);
const config = {
method: 'post',
- url: api_openai + '/chat/completions',
+ url: api_url + '/chat/completions',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + api_key_openai