Skip to content

Commit 7a1dac6

Browse files
author
prima
committed
Merge remote-tracking branch 'origin/concedo_experimental' into remoteManagement
2 parents 0812fc5 + 75ec0ba commit 7a1dac6

File tree

2 files changed

+74
-54
lines changed

2 files changed

+74
-54
lines changed

klite.embd

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4223,7 +4223,7 @@ Current version indicated by LITEVER below.
42234223
function get_instruct_starttag(doTrim=true)
42244224
{
42254225
let instag = localsettings.instruct_starttag;
4226-
if(instag=="{{[INPUT]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()) && localsettings.placeholder_tags)
4226+
if(instag=="{{[INPUT]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()))
42274227
{
42284228
instag = "\n### Instruction:\n"; //backend not compatible with auto
42294229
}
@@ -4236,7 +4236,7 @@ Current version indicated by LITEVER below.
42364236
function get_instruct_endtag(doTrim=true)
42374237
{
42384238
let instag = localsettings.instruct_endtag;
4239-
if(instag=="{{[OUTPUT]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()) && localsettings.placeholder_tags)
4239+
if(instag=="{{[OUTPUT]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()))
42404240
{
42414241
instag = "\n### Response:\n"; //backend not compatible with auto
42424242
}
@@ -4249,7 +4249,7 @@ Current version indicated by LITEVER below.
42494249
function get_instruct_systag(doTrim=true)
42504250
{
42514251
let instag = localsettings.instruct_systag;
4252-
if(instag=="{{[SYSTEM]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()) && localsettings.placeholder_tags)
4252+
if(instag=="{{[SYSTEM]}}" && !(custom_kobold_endpoint != "" && is_using_kcpp_with_autotags()))
42534253
{
42544254
instag = ""; //backend not compatible with auto
42554255
}
@@ -16607,7 +16607,7 @@ Current version indicated by LITEVER below.
1660716607
gentxt = trim_extra_stop_seqs(gentxt,false);
1660816608

1660916609
//fix alpaca leakage
16610-
if(localsettings.fix_alpaca_leak && (localsettings.opmode == 2 || localsettings.opmode == 3 || localsettings.opmode == 4) && get_instruct_starttag(true).toLowerCase().includes("### instruction"))
16610+
if(localsettings.fix_alpaca_leak && (localsettings.opmode == 2 || localsettings.opmode == 3 || localsettings.opmode == 4) && (get_instruct_starttag(true)=="{{[INPUT]}}" || get_instruct_starttag(true).toLowerCase().includes("### instruction")))
1661116611
{
1661216612
let matches = gentxt.match(/\n### (instruction|response)\n|\n### ([^\s]+?):\n/gi);
1661316613
for(let m in matches)
@@ -16749,42 +16749,44 @@ Current version indicated by LITEVER below.
1674916749
{
1675016750
let st = get_instruct_starttag(true);
1675116751
let et = get_instruct_endtag(true);
16752-
let stet_et = "";
16753-
if(localsettings.separate_end_tags && get_instruct_endtag_end(true))
16752+
let stripping_arr = [];
16753+
if(st!="")
1675416754
{
16755-
stet_et = get_instruct_endtag_end(true);
16755+
stripping_arr.push(st);
1675616756
}
16757-
16758-
//sometimes the OAI type endpoints get confused and repeat the instruct tag, so trim it
16759-
let earlymatch = gentxt.indexOf(et);
16760-
if(earlymatch==0)
16757+
if(et!="")
1676116758
{
16762-
gentxt = gentxt.substring(et.length);
16759+
stripping_arr.push(et);
1676316760
}
16764-
16765-
let found = gentxt.indexOf(st);
16766-
let splitresponse = [];
16767-
if (found != -1) //if found, truncate to it
16761+
if(st=="{{[INPUT]}}" || et=="{{[OUTPUT]}}")
1676816762
{
16769-
splitresponse = gentxt.split(st);
16770-
gentxt = splitresponse[0];
16763+
stripping_arr.push("### Instruction:");
16764+
stripping_arr.push("### Response:");
1677116765
}
16772-
16773-
found = gentxt.indexOf(et);
16774-
splitresponse = [];
16775-
if (found != -1) //if found, truncate to it
16766+
if(localsettings.separate_end_tags && get_instruct_endtag_end(true))
1677616767
{
16777-
splitresponse = gentxt.split(et);
16778-
gentxt = splitresponse[0];
16768+
let stet_et = get_instruct_endtag_end(true);
16769+
if(stet_et!="")
16770+
{
16771+
stripping_arr.push(stet_et);
16772+
}
1677916773
}
1678016774

16781-
if(stet_et && stet_et!="")
16775+
//sometimes the OAI type endpoints get confused and repeat the instruct tag, so trim it
16776+
for(let i=0;i<stripping_arr.length;++i)
1678216777
{
16783-
found = gentxt.indexOf(stet_et);
16784-
splitresponse = [];
16778+
let curtag = stripping_arr[i];
16779+
let earlymatch = gentxt.indexOf(curtag);
16780+
if(earlymatch==0)
16781+
{
16782+
gentxt = gentxt.substring(curtag.length);
16783+
}
16784+
16785+
let found = gentxt.indexOf(curtag);
16786+
let splitresponse = [];
1678516787
if (found != -1) //if found, truncate to it
1678616788
{
16787-
splitresponse = gentxt.split(stet_et);
16789+
splitresponse = gentxt.split(curtag);
1678816790
gentxt = splitresponse[0];
1678916791
}
1679016792
}

koboldcpp.py

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,8 +1292,7 @@ def generate(genparams, stream_flag=False):
12921292
xtc_probability = tryparsefloat(genparams.get('xtc_probability', 0),0)
12931293
sampler_order = genparams.get('sampler_order', [6, 0, 1, 3, 4, 2, 5])
12941294
seed = tryparseint(genparams.get('sampler_seed', -1),-1)
1295-
stop_sequence = (genparams.get('stop_sequence', []) if genparams.get('stop_sequence', []) is not None else [])
1296-
stop_sequence = stop_sequence[:stop_token_max]
1295+
stop_sequence = genparams.get('stop_sequence', [])
12971296
ban_eos_token = genparams.get('ban_eos_token', False)
12981297
stream_sse = stream_flag
12991298
grammar = genparams.get('grammar', '')
@@ -1317,25 +1316,6 @@ def generate(genparams, stream_flag=False):
13171316
banned_tokens = genparams.get('banned_tokens', banned_strings)
13181317
bypass_eos_token = genparams.get('bypass_eos', False)
13191318
custom_token_bans = genparams.get('custom_token_bans', '')
1320-
replace_instruct_placeholders = genparams.get('replace_instruct_placeholders', False)
1321-
if replace_instruct_placeholders:
1322-
adapter_obj = {} if chatcompl_adapter is None else chatcompl_adapter
1323-
system_message_start = adapter_obj.get("system_start", "\n### Instruction:\n")
1324-
user_message_start = adapter_obj.get("user_start", "\n### Instruction:\n")
1325-
user_message_end = adapter_obj.get("user_end", "")
1326-
assistant_message_start = adapter_obj.get("assistant_start", "\n### Response:\n")
1327-
assistant_message_end = adapter_obj.get("assistant_end", "")
1328-
prompt = prompt.replace("{{[INPUT]}}", assistant_message_end + user_message_start)
1329-
prompt = prompt.replace("{{[OUTPUT]}}", user_message_end + assistant_message_start)
1330-
prompt = prompt.replace("{{[SYSTEM]}}", system_message_start)
1331-
memory = memory.replace("{{[INPUT]}}", assistant_message_end + user_message_start)
1332-
memory = memory.replace("{{[OUTPUT]}}", user_message_end + assistant_message_start)
1333-
memory = memory.replace("{{[SYSTEM]}}", system_message_start)
1334-
for i in range(len(stop_sequence)):
1335-
if stop_sequence[i] == "{{[INPUT]}}":
1336-
stop_sequence[i] = user_message_start
1337-
elif stop_sequence[i] == "{{[OUTPUT]}}":
1338-
stop_sequence[i] = assistant_message_start
13391319

13401320
for tok in custom_token_bans.split(','):
13411321
tok = tok.strip() # Remove leading/trailing whitespace
@@ -2505,6 +2485,34 @@ def transform_genparams(genparams, api_format):
25052485
genparams["ollamasysprompt"] = ollamasysprompt
25062486
genparams["ollamabodyprompt"] = ollamabodyprompt
25072487
genparams["prompt"] = ollamasysprompt + ollamabodyprompt
2488+
2489+
#final transformations (universal template replace)
2490+
replace_instruct_placeholders = genparams.get('replace_instruct_placeholders', False)
2491+
stop_sequence = (genparams.get('stop_sequence', []) if genparams.get('stop_sequence', []) is not None else [])
2492+
stop_sequence = stop_sequence[:stop_token_max]
2493+
if replace_instruct_placeholders:
2494+
prompt = genparams.get('prompt', "")
2495+
memory = genparams.get('memory', "")
2496+
adapter_obj = {} if chatcompl_adapter is None else chatcompl_adapter
2497+
system_message_start = adapter_obj.get("system_start", "\n### Instruction:\n")
2498+
user_message_start = adapter_obj.get("user_start", "\n### Instruction:\n")
2499+
user_message_end = adapter_obj.get("user_end", "")
2500+
assistant_message_start = adapter_obj.get("assistant_start", "\n### Response:\n")
2501+
assistant_message_end = adapter_obj.get("assistant_end", "")
2502+
prompt = prompt.replace("{{[INPUT]}}", assistant_message_end + user_message_start)
2503+
prompt = prompt.replace("{{[OUTPUT]}}", user_message_end + assistant_message_start)
2504+
prompt = prompt.replace("{{[SYSTEM]}}", system_message_start)
2505+
memory = memory.replace("{{[INPUT]}}", assistant_message_end + user_message_start)
2506+
memory = memory.replace("{{[OUTPUT]}}", user_message_end + assistant_message_start)
2507+
memory = memory.replace("{{[SYSTEM]}}", system_message_start)
2508+
for i in range(len(stop_sequence)):
2509+
if stop_sequence[i] == "{{[INPUT]}}":
2510+
stop_sequence[i] = user_message_start
2511+
elif stop_sequence[i] == "{{[OUTPUT]}}":
2512+
stop_sequence[i] = assistant_message_start
2513+
genparams["prompt"] = prompt
2514+
genparams["memory"] = memory
2515+
genparams["stop_sequence"] = stop_sequence
25082516
return genparams
25092517

25102518
def LaunchWebbrowser(target_url, failedmsg):
@@ -4881,18 +4889,28 @@ def fetch_search_quants(a,b,c):
48814889

48824890
def fetch_search_models():
48834891
from tkinter import messagebox
4884-
nonlocal searchbox1, modelsearch1_var, modelsearch2_var
4892+
nonlocal searchbox1, searchbox2, modelsearch1_var, modelsearch2_var
48854893
try:
48864894
modelsearch1_var.set("")
48874895
modelsearch2_var.set("")
4896+
searchbox1.configure(values=[])
4897+
searchbox2.configure(values=[])
48884898
searchedmodels = []
4889-
search = "GGUF " + model_search.get()
4890-
urlcode = urlparse.urlencode({"search":search,"limit":10}, doseq=True)
4899+
searchbase = model_search.get()
4900+
if searchbase.strip()=="":
4901+
return
4902+
urlcode = urlparse.urlencode({"search":( "GGUF " + searchbase),"limit":10}, doseq=True)
4903+
urlcode2 = urlparse.urlencode({"search":searchbase,"limit":6}, doseq=True)
48914904
resp = make_url_request(f"https://huggingface.co/api/models?{urlcode}",None,'GET',{},10)
4892-
if len(resp)==0:
4893-
messagebox.showinfo("No Results Found", "Search found no results")
48944905
for m in resp:
48954906
searchedmodels.append(m["id"])
4907+
if len(resp)<=3: #too few results, repeat search without GGUF in the string
4908+
resp2 = make_url_request(f"https://huggingface.co/api/models?{urlcode2}",None,'GET',{},10)
4909+
for m in resp2:
4910+
searchedmodels.append(m["id"])
4911+
4912+
if len(searchedmodels)==0:
4913+
messagebox.showinfo("No Results Found", "Search found no results")
48964914
searchbox1.configure(values=searchedmodels)
48974915
if len(searchedmodels)>0:
48984916
modelsearch1_var.set(searchedmodels[0])

0 commit comments

Comments
 (0)