[feat] sperate reverse proxy
This commit is contained in:
@@ -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"
|
||||
}
|
||||
@@ -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 = ''
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user