mancer support

This commit is contained in:
kwaroran
2023-08-15 16:31:47 +09:00
parent 25bbf7703b
commit 22ea6b0890
8 changed files with 32 additions and 14 deletions

View File

@@ -23,4 +23,4 @@ darling = "0.20.3"
[features] [features]
# this feature is used for production builds or when `devPath` points to the filesystem # this feature is used for production builds or when `devPath` points to the filesystem
# DO NOT REMOVE!! # DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"] custom-protocol = ["tauri/custom-protocol"]

View File

@@ -404,7 +404,7 @@
{#if $DataBase.useAutoSuggestions} {#if $DataBase.useAutoSuggestions}
<Suggestion messageInput={(msg)=>messageInput=( <Suggestion messageInput={(msg)=>messageInput=(
$DataBase.subModel === "textgen_webui" && $DataBase.autoSuggestClean ($DataBase.subModel === "textgen_webui" || $DataBase.subModel === "mancer") && $DataBase.autoSuggestClean
? msg.replace(/ +\(.+?\) *$| - [^"'*]*?$/, '') ? msg.replace(/ +\(.+?\) *$| - [^"'*]*?$/, '')
: msg : msg
)} {send}/> )} {send}/>

View File

@@ -75,7 +75,7 @@
} }
] ]
if($DataBase.subModel === "textgen_webui"){ if($DataBase.subModel === "textgen_webui" || $DataBase.subModel === 'mancer'){
promptbody = [ promptbody = [
{ {
role: 'system', role: 'system',

View File

@@ -57,7 +57,7 @@
unsub() unsub()
}) })
$: if($DataBase.aiModel === 'textgen_webui'){ $: if($DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'mancer'){
$DataBase.useStreaming = $DataBase.textgenWebUIStreamURL.startsWith("wss://") $DataBase.useStreaming = $DataBase.textgenWebUIStreamURL.startsWith("wss://")
} }
</script> </script>
@@ -121,7 +121,10 @@
<span class="text-textcolor">NovelList {language.apiKey}</span> <span class="text-textcolor">NovelList {language.apiKey}</span>
<TextInput marginBottom={true} size={"sm"} placeholder="..." bind:value={$DataBase.novellistAPI}/> <TextInput marginBottom={true} size={"sm"} placeholder="..." bind:value={$DataBase.novellistAPI}/>
{/if} {/if}
{#if $DataBase.aiModel.startsWith('mancer') || $DataBase.subModel.startsWith('mancer')}
<span class="text-textcolor">Mancer {language.apiKey}</span>
<TextInput marginBottom={true} size={"sm"} placeholder="..." bind:value={$DataBase.mancerHeader}/>
{/if}
{#if $DataBase.aiModel.startsWith('claude') || $DataBase.subModel.startsWith('claude')} {#if $DataBase.aiModel.startsWith('claude') || $DataBase.subModel.startsWith('claude')}
<span class="text-textcolor">Claude {language.apiKey}</span> <span class="text-textcolor">Claude {language.apiKey}</span>
<TextInput marginBottom={true} size={"sm"} placeholder="..." bind:value={$DataBase.claudeAPIKey}/> <TextInput marginBottom={true} size={"sm"} placeholder="..." bind:value={$DataBase.claudeAPIKey}/>
@@ -222,11 +225,12 @@
<TextInput marginBottom={true} bind:value={$DataBase.hordeConfig.apiKey} /> <TextInput marginBottom={true} bind:value={$DataBase.hordeConfig.apiKey} />
{/if} {/if}
{#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui'} {#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'textgen_webui'
<span class="text-textcolor mt-2">Oobabooga Blocking {language.providerURL}</span> || $DataBase.aiModel === 'mancer' || $DataBase.subModel === 'mancer'}
<span class="text-textcolor mt-2">Blocking {language.providerURL}</span>
<TextInput marginBottom={true} bind:value={$DataBase.textgenWebUIBlockingURL} placeholder="https://..."/> <TextInput marginBottom={true} bind:value={$DataBase.textgenWebUIBlockingURL} placeholder="https://..."/>
<span class="text-draculared text-xs mb-2">You must use textgen webui with --public-api</span> <span class="text-draculared text-xs mb-2">You must use textgen webui with --public-api</span>
<span class="text-textcolor mt-2">Oobabooga Stream {language.providerURL}</span> <span class="text-textcolor mt-2">Stream {language.providerURL}</span>
<TextInput marginBottom={true} bind:value={$DataBase.textgenWebUIStreamURL} placeholder="wss://..."/> <TextInput marginBottom={true} bind:value={$DataBase.textgenWebUIStreamURL} placeholder="wss://..."/>
{#if !isTauri} {#if !isTauri}
<span class="text-draculared text-xs mb-2">You are using web version. you must use ngrok or other tunnels to use your local webui.</span> <span class="text-draculared text-xs mb-2">You are using web version. you must use ngrok or other tunnels to use your local webui.</span>
@@ -261,7 +265,7 @@
{/if} {/if}
<span class="text-textcolor2 mb-6 text-sm">{($DataBase.temperature / 100).toFixed(2)}</span> <span class="text-textcolor2 mb-6 text-sm">{($DataBase.temperature / 100).toFixed(2)}</span>
{#if $DataBase.aiModel === 'textgen_webui'} {#if $DataBase.aiModel === 'textgen_webui' || $DataBase.subModel === 'mancer'}
<span class="text-textcolor">Repetition Penalty</span> <span class="text-textcolor">Repetition Penalty</span>
<SliderInput min={1} max={1.5} step={0.01} bind:value={$DataBase.ooba.repetition_penalty}/> <SliderInput min={1} max={1.5} step={0.01} bind:value={$DataBase.ooba.repetition_penalty}/>
<span class="text-textcolor2 mb-6 text-sm">{($DataBase.ooba.repetition_penalty).toFixed(2)}</span> <span class="text-textcolor2 mb-6 text-sm">{($DataBase.ooba.repetition_penalty).toFixed(2)}</span>

View File

@@ -36,6 +36,8 @@
return "PaLM2" return "PaLM2"
case "textgen_webui": case "textgen_webui":
return "Oobabooga WebUI" return "Oobabooga WebUI"
case "mancer":
return "Mancer"
case "kobold": case "kobold":
return "Kobold" return "Kobold"
case "custom": case "custom":
@@ -111,6 +113,7 @@
<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('reverse_proxy')}}>Reverse Proxy</button>
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('openrouter')}}>OpenRouter</button> <button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('openrouter')}}>OpenRouter</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('mancer')}}>Mancer</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>
<Arcodion name="Novellist"> <Arcodion name="Novellist">

View File

@@ -433,7 +433,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
} }
} }
case "textgen_webui":{ case "textgen_webui":
case 'mancer':{
let streamUrl = db.textgenWebUIStreamURL.replace(/\/api.*/, "/api/v1/stream") let streamUrl = db.textgenWebUIStreamURL.replace(/\/api.*/, "/api/v1/stream")
let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate") let blockingUrl = db.textgenWebUIBlockingURL.replace(/\/api.*/, "/api/v1/generate")
let bodyTemplate:any let bodyTemplate:any
@@ -464,6 +465,11 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
add_bos_token: true, add_bos_token: true,
prompt: proompt prompt: proompt
} }
const headers = (aiModel === 'textgen_webui') ? {} : {
'X-API-KEY': db.mancerHeader
}
if(db.useStreaming && arg.useStreaming){ if(db.useStreaming && arg.useStreaming){
const oobaboogaSocket = new WebSocket(streamUrl); const oobaboogaSocket = new WebSocket(streamUrl);
const statusCode = await new Promise((resolve) => { const statusCode = await new Promise((resolve) => {
@@ -514,7 +520,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
const res = await globalFetch(blockingUrl, { const res = await globalFetch(blockingUrl, {
body: bodyTemplate, body: bodyTemplate,
headers: {}, headers: headers,
abortSignal abortSignal
}) })

View File

@@ -25,9 +25,13 @@ export async function setRecommended(model: string, ask:'ask'|'force') {
const pr:botPreset = prebuiltPresets.NAI const pr:botPreset = prebuiltPresets.NAI
setDatabase(setPreset(db, pr)) setDatabase(setPreset(db, pr))
} }
else if(db.aiModel === 'textgen_webui'){ else if(db.aiModel === 'textgen_webui' || db.aiModel === 'mancer'){
const model = db.aiModel
const submodel = db.subModel
const sel = parseInt(await alertSelect(["Vicuna, WizardLM, Airoboros", "OpenChat V3.2", "Guanaco", "OpenAssistant", "Dolphin, Luna", "StableBeluga, Orca-Mini", "Others (Alpaca, Nous-Hermes, ...)"])) const sel = parseInt(await alertSelect(["Vicuna, WizardLM, Airoboros", "OpenChat V3.2", "Guanaco", "OpenAssistant", "Dolphin, Luna", "StableBeluga, Orca-Mini", "Others (Alpaca, Nous-Hermes, ...)"]))
let pr = prebuiltPresets.ooba let pr = prebuiltPresets.ooba
pr.aiModel = model
pr.subModel = submodel
pr.mainPrompt = pr.bias = pr.globalNote = undefined pr.mainPrompt = pr.bias = pr.globalNote = undefined
pr.jailbreak = "" pr.jailbreak = ""
if(!db.autoSuggestPrompt || db.autoSuggestPrompt === defaultAutoSuggestPrompt){ if(!db.autoSuggestPrompt || db.autoSuggestPrompt === defaultAutoSuggestPrompt){
@@ -99,5 +103,5 @@ export async function setRecommended(model: string, ask:'ask'|'force') {
} }
export function recommendedPresetExist(model:string){ export function recommendedPresetExist(model:string){
return model.startsWith('gpt') || model === 'openrouter' || model === 'reverse_proxy' || model === 'textgen_webui' || model.startsWith('novelai') return model.startsWith('gpt') || model === 'openrouter' || model === 'reverse_proxy' || model === 'textgen_webui' || model.startsWith('novelai') || model === 'mancer'
} }

View File

@@ -303,7 +303,7 @@ export function setDatabase(data:Database){
data.colorSchemeName ??= 'default' data.colorSchemeName ??= 'default'
data.NAIsettings.starter ??= "" data.NAIsettings.starter ??= ""
data.hypaModel ??= 'MiniLM' data.hypaModel ??= 'MiniLM'
data.mancerHeader ??= ''
changeLanguage(data.language) changeLanguage(data.language)
DataBase.set(data) DataBase.set(data)
} }
@@ -622,6 +622,7 @@ export interface Database{
forceProxyAsOpenAI?:boolean forceProxyAsOpenAI?:boolean
hypaModel:'ada'|'MiniLM' hypaModel:'ada'|'MiniLM'
saveTime?:number saveTime?:number
mancerHeader:string
} }
interface hordeConfig{ interface hordeConfig{