Merge branch 'main' of https://github.com/kwaroran/RisuAI into gpt-sovits-tts

This commit is contained in:
Junha Heo
2024-08-24 19:04:17 +09:00
24 changed files with 251 additions and 137 deletions

View File

@@ -1153,6 +1153,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
case 'gemini-pro':
case 'gemini-pro-vision':
case 'gemini-1.5-pro-latest':
case 'gemini-1.5-pro-exp-0801':
case 'gemini-1.5-flash':
case 'gemini-ultra':
case 'gemini-ultra-vision':{
@@ -1997,6 +1998,10 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
headers['anthropic-beta'] = 'prompt-caching-2024-07-31'
}
if(db.usePlainFetch){
headers['anthropic-dangerous-direct-browser-access'] = 'true'
}
if(useStreaming){
const res = await fetchNative(replacerURL, {

View File

@@ -20,9 +20,9 @@ export async function processScript(char:character|groupChat, data:string, mode:
return (await processScriptFull(char, data, mode)).data
}
export function exportRegex(){
export function exportRegex(s?:customscript[]){
let db = get(DataBase)
const script = db.globalscript
const script = s ?? db.globalscript
const data = Buffer.from(JSON.stringify({
type: 'regex',
data: script
@@ -31,22 +31,22 @@ export function exportRegex(){
alertNormal(language.successExport)
}
export async function importRegex(){
export async function importRegex(o?:customscript[]):Promise<customscript[]>{
o = o ?? []
const filedata = (await selectSingleFile(['json'])).data
if(!filedata){
return
return o
}
let db = get(DataBase)
try {
const imported= JSON.parse(Buffer.from(filedata).toString('utf-8'))
if(imported.type === 'regex' && imported.data){
const datas:customscript[] = imported.data
const script = db.globalscript
const script = o
for(const data of datas){
script.push(data)
}
db.globalscript = script
setDatabase(db)
return o
}
else{
alertError("File invaid or corrupted")
@@ -55,6 +55,7 @@ export async function importRegex(){
} catch (error) {
alertError(`${error}`)
}
return o
}
let bestMatchCache = new Map<string, string>()

View File

@@ -11,7 +11,7 @@ export const chatTemplates = {
'chatml': `{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}`,
'gpt2': `{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}`,
'gemma': "{% if messages[0]['role'] == 'system' %}{{ raise_exception('System role not supported') }}{% endif %}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if (message['role'] == 'assistant') %}{% set role = 'model' %}{% else %}{% set role = message['role'] %}{% endif %}{{ '<start_of_turn>' + role + '\n' + message['content'] | trim + '<end_of_turn>\n' }}{% endfor %}{% if add_generation_prompt %}{{'<start_of_turn>model\n'}}{% endif %}",
'mistral': "{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ ' [INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + message['content'] + ' ' + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %}",
'mistral': "{% for message in messages %}{% if message['role'] == 'user' %}{{ ' [INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + message['content'] + ' ' + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %}",
'vicuna': "{%- set ns = namespace(found=false) -%}\n{%- for message in messages -%}\n {%- if message['role'] == 'system' -%}\n {%- set ns.found = true -%}\n {%- endif -%}\n{%- endfor -%}\n{%- if not ns.found -%}\n {{- '' + 'A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user\\'s questions.' + '\\n\\n' -}}\n{%- endif %}\n{%- for message in messages %}\n {%- if message['role'] == 'system' -%}\n {{- '' + message['content'] + '\\n\\n' -}}\n {%- else -%}\n {%- if message['role'] == 'user' -%}\n {{-'USER: ' + message['content'] + '\\n'-}}\n {%- else -%}\n {{-'ASSISTANT: ' + message['content'] + '</s>\\n' -}}\n {%- endif -%}\n {%- endif -%}\n{%- endfor -%}\n{%- if add_generation_prompt -%}\n {{-'ASSISTANT:'-}}\n{%- endif -%}",
"alpaca": "{%- set ns = namespace(found=false) -%}\n{%- for message in messages -%}\n {%- if message['role'] == 'system' -%}\n {%- set ns.found = true -%}\n {%- endif -%}\n{%- endfor -%}\n{%- if not ns.found -%}\n {{- '' + 'Below is an instruction that describes a task. Write a response that appropriately completes the request.' + '\\n\\n' -}}\n{%- endif %}\n{%- for message in messages %}\n {%- if message['role'] == 'system' -%}\n {{- '' + message['content'] + '\\n\\n' -}}\n {%- else -%}\n {%- if message['role'] == 'user' -%}\n {{-'### Instruction:\\n' + message['content'] + '\\n\\n'-}}\n {%- else -%}\n {{-'### Response:\\n' + message['content'] + '\\n\\n' -}}\n {%- endif -%}\n {%- endif -%}\n{%- endfor -%}\n{%- if add_generation_prompt -%}\n {{-'### Response:\\n'-}}\n{%- endif -%}"
}
@@ -22,7 +22,7 @@ export const templateEffect = {
],
'mistral': [
'no_system_messages',
'alter_user_assistant_roles'
'alter_user_assistant_roles',
],
} as {[key:string]:TemplateEffect[]}
@@ -94,6 +94,8 @@ export const applyChatTemplate = (messages:OpenAIChat[]) => {
"messages": formatedMessages,
"add_generation_prompt": true,
"risu_char": currentChar.name,
"risu_user": getUserName()
"risu_user": getUserName(),
"eos_token": "",
"bos_token": "",
})
}