[feat] sperate reverse proxy
This commit is contained in:
@@ -326,4 +326,6 @@ export const languageEnglish = {
|
|||||||
loadDataFromAccount: "Load Data from Account",
|
loadDataFromAccount: "Load Data from Account",
|
||||||
saveCurrentDataToAccount: "Save Current Data to Account",
|
saveCurrentDataToAccount: "Save Current Data to Account",
|
||||||
chatAssumed: "Approximately {} Chats Played",
|
chatAssumed: "Approximately {} Chats Played",
|
||||||
|
proxyAPIKey: "Proxy Key/Password",
|
||||||
|
proxyRequestModel: "Rroxy Request Model"
|
||||||
}
|
}
|
||||||
@@ -103,13 +103,32 @@
|
|||||||
<span class="text-neutral-200">Claude {language.apiKey}</span>
|
<span class="text-neutral-200">Claude {language.apiKey}</span>
|
||||||
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.claudeAPIKey}>
|
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.claudeAPIKey}>
|
||||||
{/if}
|
{/if}
|
||||||
{#if $DataBase.aiModel.startsWith('gpt')}
|
{#if $DataBase.aiModel === 'reverse_proxy' || $DataBase.subModel === 'reverse_proxy'}
|
||||||
|
<span class="text-neutral-200 mt-2">{language.forceReplaceUrl} URL <Help key="forceUrl"/></span>
|
||||||
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm"bind:value={$DataBase.forceReplaceUrl} placeholder="https//...">
|
||||||
|
<span class="text-neutral-200 mt-4"> {language.proxyAPIKey}</span>
|
||||||
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="leave it blank if it hasn't password" bind:value={$DataBase.proxyKey}>
|
||||||
|
<span class="text-neutral-200 mt-4"> {language.proxyRequestModel}</span>
|
||||||
|
<select class="bg-transparent input-text mt-2 mb-4 text-gray-200 appearance-none text-sm" bind:value={$DataBase.proxyRequestModel}>
|
||||||
|
<option value="" class="bg-darkbg appearance-none">None</option>
|
||||||
|
<option value="gpt35" class="bg-darkbg appearance-none">GPT 3.5</option>
|
||||||
|
<option value="gpt35_16k" class="bg-darkbg appearance-none">GPT 3.5-Turbo</option>
|
||||||
|
<option value="gpt4" class="bg-darkbg appearance-none">GPT-4</option>
|
||||||
|
<option value="gpt4_32k" class="bg-darkbg appearance-none">GPT-4 32k</option>
|
||||||
|
<option value="gpt35_0301" class="bg-darkbg appearance-none">GPT-3.5 0301</option>
|
||||||
|
<option value="gpt4_0301" class="bg-darkbg appearance-none">GPT-4 0301</option>
|
||||||
|
</select>
|
||||||
|
{/if}
|
||||||
|
{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.subModel.startsWith('gpt')}
|
||||||
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="sk-XXXXXXXXXXXXXXXXXXXX" bind:value={$DataBase.openAIKey}>
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="sk-XXXXXXXXXXXXXXXXXXXX" bind:value={$DataBase.openAIKey}>
|
||||||
|
{/if}
|
||||||
|
{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.aiModel === 'reverse_proxy'}
|
||||||
<div class="flex items-center mt-2 mb-4">
|
<div class="flex items-center mt-2 mb-4">
|
||||||
<Check bind:check={$DataBase.useStreaming} name={`OpenAI ${language.streaming}`}/>
|
<Check bind:check={$DataBase.useStreaming} name={`Response ${language.streaming}`}/>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if $DataBase.aiModel === 'custom'}
|
{#if $DataBase.aiModel === 'custom'}
|
||||||
<span class="text-neutral-200 mt-2">{language.plugin}</span>
|
<span class="text-neutral-200 mt-2">{language.plugin}</span>
|
||||||
<select class="bg-transparent input-text mt-2 mb-4 text-gray-200 appearance-none text-sm" bind:value={$DataBase.currentPluginProvider}>
|
<select class="bg-transparent input-text mt-2 mb-4 text-gray-200 appearance-none text-sm" bind:value={$DataBase.currentPluginProvider}>
|
||||||
@@ -180,10 +199,6 @@
|
|||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.PresensePenalty}>
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected" type="range" min="0" max="100" bind:value={$DataBase.PresensePenalty}>
|
||||||
<span class="text-gray-400 mb-6 text-sm">{($DataBase.PresensePenalty / 100).toFixed(2)}</span>
|
<span class="text-gray-400 mb-6 text-sm">{($DataBase.PresensePenalty / 100).toFixed(2)}</span>
|
||||||
|
|
||||||
<span class="text-neutral-200 mt-2">{language.forceReplaceUrl} <Help key="forceUrl"/></span>
|
|
||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm"bind:value={$DataBase.forceReplaceUrl} placeholder="Leave blank to not replace url">
|
|
||||||
<span class="text-neutral-200 mt-2">{language.submodel} {language.forceReplaceUrl} <Help key="forceUrl"/></span>
|
|
||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm"bind:value={$DataBase.forceReplaceUrl2} placeholder="Leave blank to not replace url">
|
|
||||||
<span class="text-neutral-200 mt-2">{language.autoSuggest} <Help key="autoSuggest"/></span>
|
<span class="text-neutral-200 mt-2">{language.autoSuggest} <Help key="autoSuggest"/></span>
|
||||||
<textarea class="bg-transparent input-text mb-2 text-gray-200 resize-none h-20 min-h-20 focus:bg-selected text-xs w-full" autocomplete="off" bind:value={$DataBase.autoSuggestPrompt}></textarea>
|
<textarea class="bg-transparent input-text mb-2 text-gray-200 resize-none h-20 min-h-20 focus:bg-selected text-xs w-full" autocomplete="off" bind:value={$DataBase.autoSuggestPrompt}></textarea>
|
||||||
<span class="text-gray-400 mb-6 text-sm">{tokens.autoSuggest} {language.tokens}</span>
|
<span class="text-gray-400 mb-6 text-sm">{tokens.autoSuggest} {language.tokens}</span>
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
return "NovelList SuperTrin"
|
return "NovelList SuperTrin"
|
||||||
case "novellist damsel":
|
case "novellist damsel":
|
||||||
return "NovelList Damsel"
|
return "NovelList Damsel"
|
||||||
|
case 'reverse_proxy':
|
||||||
|
return "Reverse Proxy"
|
||||||
default:
|
default:
|
||||||
if(name.startsWith("horde:::")){
|
if(name.startsWith("horde:::")){
|
||||||
return name.replace(":::", " ")
|
return name.replace(":::", " ")
|
||||||
@@ -100,6 +102,7 @@
|
|||||||
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-1.0')}}>claude-v1.0</button>
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-1.0')}}>claude-v1.0</button>
|
||||||
{/if}
|
{/if}
|
||||||
</Arcodion>
|
</Arcodion>
|
||||||
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('reverse_proxy')}}>Reverse Proxy</button>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('textgen_webui')}}>Oobabooga WebUI</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('textgen_webui')}}>Oobabooga WebUI</button>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('palm2')}}>Google PaLM2</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('palm2')}}>Google PaLM2</button>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('kobold')}}>Kobold</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('kobold')}}>Kobold</button>
|
||||||
|
|||||||
@@ -87,9 +87,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
let temperature = arg.temperature ?? (db.temperature / 100)
|
let temperature = arg.temperature ?? (db.temperature / 100)
|
||||||
let bias = arg.bias
|
let bias = arg.bias
|
||||||
let currentChar = arg.currentChar
|
let currentChar = arg.currentChar
|
||||||
const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2
|
|
||||||
const aiModel = model === 'model' ? db.aiModel : db.subModel
|
const aiModel = model === 'model' ? db.aiModel : db.subModel
|
||||||
|
const replacer = aiModel === 'reverse_proxy' ? model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2 : ''
|
||||||
switch(aiModel){
|
switch(aiModel){
|
||||||
case 'gpt35':
|
case 'gpt35':
|
||||||
case 'gpt35_0613':
|
case 'gpt35_0613':
|
||||||
@@ -100,8 +99,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
case 'gpt4_0613':
|
case 'gpt4_0613':
|
||||||
case 'gpt4_32k_0613':
|
case 'gpt4_32k_0613':
|
||||||
case 'gpt35_0301':
|
case 'gpt35_0301':
|
||||||
case 'gpt4_0301':{
|
case 'gpt4_0301':
|
||||||
|
case 'reverse_proxy':{
|
||||||
for(let i=0;i<formated.length;i++){
|
for(let i=0;i<formated.length;i++){
|
||||||
if(formated[i].role !== 'function'){
|
if(formated[i].role !== 'function'){
|
||||||
if(arg.isGroupChat && formated[i].name){
|
if(arg.isGroupChat && formated[i].name){
|
||||||
@@ -141,17 +140,18 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
|
|
||||||
|
|
||||||
const oaiFunctionCall = oaiFunctions ? (arg.useEmotion ? {"name": "set_emotion"} : "auto") : undefined
|
const oaiFunctionCall = oaiFunctions ? (arg.useEmotion ? {"name": "set_emotion"} : "auto") : undefined
|
||||||
|
const requestModel = aiModel === 'reverse_proxy' ? db.proxyRequestModel : aiModel
|
||||||
const body = ({
|
const body = ({
|
||||||
model: aiModel === 'gpt35' ? 'gpt-3.5-turbo'
|
model: requestModel === 'gpt35' ? 'gpt-3.5-turbo'
|
||||||
: aiModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
||||||
: aiModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
|
: requestModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
|
||||||
: aiModel === 'gpt35_16k_0613' ? 'gpt-3.5-turbo-16k-0613'
|
: requestModel === 'gpt35_16k_0613' ? 'gpt-3.5-turbo-16k-0613'
|
||||||
: aiModel === 'gpt4' ? 'gpt-4'
|
: requestModel === 'gpt4' ? 'gpt-4'
|
||||||
: aiModel === 'gpt4_32k' ? 'gpt-4-32k'
|
: requestModel === 'gpt4_32k' ? 'gpt-4-32k'
|
||||||
: aiModel === "gpt4_0613" ? 'gpt-4-0613'
|
: requestModel === "gpt4_0613" ? 'gpt-4-0613'
|
||||||
: aiModel === "gpt4_32k_0613" ? 'gpt-4-32k-0613'
|
: requestModel === "gpt4_32k_0613" ? 'gpt-4-32k-0613'
|
||||||
: aiModel === 'gpt35_0301' ? 'gpt-3.5-turbo-0301'
|
: requestModel === 'gpt35_0301' ? 'gpt-3.5-turbo-0301'
|
||||||
: aiModel === 'gpt4_0301' ? 'gpt-4-0301' : '',
|
: requestModel === 'gpt4_0301' ? 'gpt-4-0301' : 'gpt-3.5-turbo',
|
||||||
messages: formated,
|
messages: formated,
|
||||||
temperature: temperature,
|
temperature: temperature,
|
||||||
max_tokens: maxTokens,
|
max_tokens: maxTokens,
|
||||||
@@ -197,7 +197,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
body: JSON.stringify(body),
|
body: JSON.stringify(body),
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Authorization": "Bearer " + db.openAIKey,
|
"Authorization": "Bearer " + aiModel === 'reverse_proxy' ? db.proxyKey : db.openAIKey,
|
||||||
"Content-Type": "application/json"
|
"Content-Type": "application/json"
|
||||||
},
|
},
|
||||||
signal: abortSignal
|
signal: abortSignal
|
||||||
|
|||||||
@@ -139,6 +139,9 @@ export function setDatabase(data:Database){
|
|||||||
if(checkNullish(data.requester)){
|
if(checkNullish(data.requester)){
|
||||||
data.requester = "new"
|
data.requester = "new"
|
||||||
}
|
}
|
||||||
|
if(checkNullish(data.proxyKey)){
|
||||||
|
data.proxyKey = ""
|
||||||
|
}
|
||||||
if(checkNullish(data.botPresets)){
|
if(checkNullish(data.botPresets)){
|
||||||
let defaultPreset = presetTemplate
|
let defaultPreset = presetTemplate
|
||||||
defaultPreset.name = "Default"
|
defaultPreset.name = "Default"
|
||||||
@@ -413,6 +416,7 @@ export interface Database{
|
|||||||
apiType: string
|
apiType: string
|
||||||
forceReplaceUrl2:string
|
forceReplaceUrl2:string
|
||||||
openAIKey: string
|
openAIKey: string
|
||||||
|
proxyKey:string
|
||||||
mainPrompt: string
|
mainPrompt: string
|
||||||
jailbreak: string
|
jailbreak: string
|
||||||
globalNote:string
|
globalNote:string
|
||||||
@@ -530,6 +534,7 @@ export interface Database{
|
|||||||
useAdditionalAssetsPreview:boolean,
|
useAdditionalAssetsPreview:boolean,
|
||||||
usePlainFetch:boolean
|
usePlainFetch:boolean
|
||||||
hypaMemory:boolean
|
hypaMemory:boolean
|
||||||
|
proxyRequestModel:string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface hordeConfig{
|
interface hordeConfig{
|
||||||
|
|||||||
Reference in New Issue
Block a user