[feat] sperate reverse proxy

This commit is contained in:
kwaroran
2023-07-04 22:06:24 +09:00
parent 9f9c7736fb
commit 1139de8140
6 changed files with 47 additions and 22 deletions

View File

@@ -326,4 +326,6 @@ export const languageEnglish = {
loadDataFromAccount: "Load Data from Account",
saveCurrentDataToAccount: "Save Current Data to Account",
chatAssumed: "Approximately {} Chats Played",
proxyAPIKey: "Proxy Key/Password",
proxyRequestModel: "Rroxy Request Model"
}

View File

@@ -6,7 +6,7 @@
import { ParseMarkdown } from '../../ts/parser';
import BarIcon from '../SideBars/BarIcon.svelte';
import { User } from 'lucide-svelte';
import { hubURL } from 'src/ts/characterCards';
import { hubURL } from 'src/ts/characterCards';
let btn
let input = ''

View File

@@ -103,13 +103,32 @@
<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}>
{/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>
<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">
<Check bind:check={$DataBase.useStreaming} name={`OpenAI ${language.streaming}`}/>
<Check bind:check={$DataBase.useStreaming} name={`Response ${language.streaming}`}/>
</div>
{/if}
{#if $DataBase.aiModel === 'custom'}
<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}>
@@ -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}>
<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>
<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>

View File

@@ -46,6 +46,8 @@
return "NovelList SuperTrin"
case "novellist damsel":
return "NovelList Damsel"
case 'reverse_proxy':
return "Reverse Proxy"
default:
if(name.startsWith("horde:::")){
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>
{/if}
</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('palm2')}}>Google PaLM2</button>
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('kobold')}}>Kobold</button>

View File

@@ -87,9 +87,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
let temperature = arg.temperature ?? (db.temperature / 100)
let bias = arg.bias
let currentChar = arg.currentChar
const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2
const aiModel = model === 'model' ? db.aiModel : db.subModel
const replacer = aiModel === 'reverse_proxy' ? model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2 : ''
switch(aiModel){
case 'gpt35':
case 'gpt35_0613':
@@ -100,8 +99,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
case 'gpt4_0613':
case 'gpt4_32k_0613':
case 'gpt35_0301':
case 'gpt4_0301':{
case 'gpt4_0301':
case 'reverse_proxy':{
for(let i=0;i<formated.length;i++){
if(formated[i].role !== 'function'){
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 requestModel = aiModel === 'reverse_proxy' ? db.proxyRequestModel : aiModel
const body = ({
model: aiModel === 'gpt35' ? 'gpt-3.5-turbo'
: aiModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
: aiModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
: aiModel === 'gpt35_16k_0613' ? 'gpt-3.5-turbo-16k-0613'
: aiModel === 'gpt4' ? 'gpt-4'
: aiModel === 'gpt4_32k' ? 'gpt-4-32k'
: aiModel === "gpt4_0613" ? 'gpt-4-0613'
: aiModel === "gpt4_32k_0613" ? 'gpt-4-32k-0613'
: aiModel === 'gpt35_0301' ? 'gpt-3.5-turbo-0301'
: aiModel === 'gpt4_0301' ? 'gpt-4-0301' : '',
model: requestModel === 'gpt35' ? 'gpt-3.5-turbo'
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
: requestModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
: requestModel === 'gpt35_16k_0613' ? 'gpt-3.5-turbo-16k-0613'
: requestModel === 'gpt4' ? 'gpt-4'
: requestModel === 'gpt4_32k' ? 'gpt-4-32k'
: requestModel === "gpt4_0613" ? 'gpt-4-0613'
: requestModel === "gpt4_32k_0613" ? 'gpt-4-32k-0613'
: requestModel === 'gpt35_0301' ? 'gpt-3.5-turbo-0301'
: requestModel === 'gpt4_0301' ? 'gpt-4-0301' : 'gpt-3.5-turbo',
messages: formated,
temperature: temperature,
max_tokens: maxTokens,
@@ -197,7 +197,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
body: JSON.stringify(body),
method: "POST",
headers: {
"Authorization": "Bearer " + db.openAIKey,
"Authorization": "Bearer " + aiModel === 'reverse_proxy' ? db.proxyKey : db.openAIKey,
"Content-Type": "application/json"
},
signal: abortSignal

View File

@@ -139,6 +139,9 @@ export function setDatabase(data:Database){
if(checkNullish(data.requester)){
data.requester = "new"
}
if(checkNullish(data.proxyKey)){
data.proxyKey = ""
}
if(checkNullish(data.botPresets)){
let defaultPreset = presetTemplate
defaultPreset.name = "Default"
@@ -413,6 +416,7 @@ export interface Database{
apiType: string
forceReplaceUrl2:string
openAIKey: string
proxyKey:string
mainPrompt: string
jailbreak: string
globalNote:string
@@ -530,6 +534,7 @@ export interface Database{
useAdditionalAssetsPreview:boolean,
usePlainFetch:boolean
hypaMemory:boolean
proxyRequestModel:string
}
interface hordeConfig{