Backport llama.cpp-related DRY fixes from staging (#3051) * llama.cpp Enable dry w/ array convert The new PR that was merged needs an array instead of a str https://github.com/ggerganov/llama.cpp/pull/9702 * Safe sequence breakers parse * Support comma-separated list of llama.cpp sequence breakers #3026 --------- Co-authored-by: Beinsezii <beinsezii@gmail.com>

a3ca407b2714df5af5a9f83aa925fd64fb778e24

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
2 files changed, +13 -2Showing whitespace changes
public/index.html+1 -2
@@ -1397,8 +1397,7 @@
1397 </div>1397 </div>
1398 </div>1398 </div>
13991399
1400 <!-- Enable for llama.cpp when the PR is merged: https://github.com/ggerganov/llama.cpp/pull/6839 -->1400 <div data-tg-type="ooba, koboldcpp, tabby, llamacpp" id="dryBlock" class="wide100p">
1401 <div data-tg-type="ooba, koboldcpp, tabby" id="dryBlock" class="wide100p">
1402 <h4 class="wide100p textAlignCenter" title="DRY penalizes tokens that would extend the end of the input into a sequence that has previously occurred in the input. Set multiplier to 0 to disable." data-i18n="[title]DRY_Repetition_Penalty_desc">1401 <h4 class="wide100p textAlignCenter" title="DRY penalizes tokens that would extend the end of the input into a sequence that has previously occurred in the input. Set multiplier to 0 to disable." data-i18n="[title]DRY_Repetition_Penalty_desc">
1403 <label data-i18n="DRY Repetition Penalty">DRY Repetition Penalty</label>1402 <label data-i18n="DRY Repetition Penalty">DRY Repetition Penalty</label>
1404 <a href="https://github.com/oobabooga/text-generation-webui/pull/5677" target="_blank">1403 <a href="https://github.com/oobabooga/text-generation-webui/pull/5677" target="_blank">
public/scripts/textgen-settings.js+12 -0
@@ -1307,11 +1307,23 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
1307 : [];1307 : [];
1308 const tokenBans = toIntArray(banned_tokens);1308 const tokenBans = toIntArray(banned_tokens);
1309 logitBiasArray.push(...tokenBans.map(x => [Number(x), false]));1309 logitBiasArray.push(...tokenBans.map(x => [Number(x), false]));
1310 const sequenceBreakers = (() => {
1311 try {
1312 return JSON.parse(params.dry_sequence_breakers);
1313 } catch {
1314 if (typeof params.dry_sequence_breakers === 'string') {
1315 return params.dry_sequence_breakers.split(',');
1316 }
1317
1318 return undefined;
1319 }
1320 })();
1310 const llamaCppParams = {1321 const llamaCppParams = {
1311 'logit_bias': logitBiasArray,1322 'logit_bias': logitBiasArray,
1312 // Conflicts with ooba's grammar_string1323 // Conflicts with ooba's grammar_string
1313 'grammar': settings.grammar_string,1324 'grammar': settings.grammar_string,
1314 'cache_prompt': true,1325 'cache_prompt': true,
1326 'dry_sequence_breakers': sequenceBreakers,
1315 };1327 };
1316 params = Object.assign(params, llamaCppParams);1328 params = Object.assign(params, llamaCppParams);
1317 }1329 }