Add reasoning effort
This commit is contained in:
@@ -311,6 +311,11 @@
|
|||||||
<span class="text-textcolor">Repetition penalty</span>
|
<span class="text-textcolor">Repetition penalty</span>
|
||||||
<SliderInput min={0} max={2} marginBottom step={0.01} fixed={2} bind:value={DBState.db.repetition_penalty} disableable/>
|
<SliderInput min={0} max={2} marginBottom step={0.01} fixed={2} bind:value={DBState.db.repetition_penalty} disableable/>
|
||||||
|
|
||||||
|
{/if}
|
||||||
|
{#if modelInfo.parameters.includes('reasoning_effort')}
|
||||||
|
<span class="text-textcolor">Reasoning Effort</span>
|
||||||
|
<SliderInput min={0} max={2} marginBottom step={1} fixed={0} bind:value={DBState.db.reasoningEffort} disableable/>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
{#if DBState.db.aiModel === 'textgen_webui' || DBState.db.aiModel === 'mancer' || DBState.db.aiModel.startsWith('local_') || DBState.db.aiModel.startsWith('hf:::')}
|
{#if DBState.db.aiModel === 'textgen_webui' || DBState.db.aiModel === 'mancer' || DBState.db.aiModel.startsWith('local_') || DBState.db.aiModel.startsWith('hf:::')}
|
||||||
<span class="text-textcolor">Repetition Penalty</span>
|
<span class="text-textcolor">Repetition Penalty</span>
|
||||||
@@ -631,6 +636,10 @@
|
|||||||
{@render CustomFlagButton('DeveloperRole', 14)}
|
{@render CustomFlagButton('DeveloperRole', 14)}
|
||||||
{@render CustomFlagButton('geminiThinking', 15)}
|
{@render CustomFlagButton('geminiThinking', 15)}
|
||||||
{@render CustomFlagButton('geminiBlockOff', 16)}
|
{@render CustomFlagButton('geminiBlockOff', 16)}
|
||||||
|
{@render CustomFlagButton('deepSeekPrefix', 17)}
|
||||||
|
{@render CustomFlagButton('deepSeekThinkingInput', 18)}
|
||||||
|
{@render CustomFlagButton('deepSeekThinkingOutput', 19)}
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
</Arcodion>
|
</Arcodion>
|
||||||
|
|
||||||
|
|||||||
@@ -501,7 +501,7 @@ export const LLMModels: LLMModel[] = [
|
|||||||
LLMFlags.hasImageInput,
|
LLMFlags.hasImageInput,
|
||||||
LLMFlags.DeveloperRole
|
LLMFlags.DeveloperRole
|
||||||
],
|
],
|
||||||
parameters: OpenAIParameters,
|
parameters: ['reasoning_effort'],
|
||||||
tokenizer: LLMTokenizer.tiktokenO200Base
|
tokenizer: LLMTokenizer.tiktokenO200Base
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ interface OaiFunctions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export type Parameter = 'temperature'|'top_k'|'repetition_penalty'|'min_p'|'top_a'|'top_p'|'frequency_penalty'|'presence_penalty'
|
export type Parameter = 'temperature'|'top_k'|'repetition_penalty'|'min_p'|'top_a'|'top_p'|'frequency_penalty'|'presence_penalty'|'reasoning_effort'
|
||||||
export type ModelModeExtended = 'model'|'submodel'|'memory'|'emotion'|'otherAx'|'translate'
|
export type ModelModeExtended = 'model'|'submodel'|'memory'|'emotion'|'otherAx'|'translate'
|
||||||
type ParameterMap = {
|
type ParameterMap = {
|
||||||
[key in Parameter]?: string;
|
[key in Parameter]?: string;
|
||||||
@@ -101,6 +101,24 @@ function applyParameters(data: { [key: string]: any }, parameters: Parameter[],
|
|||||||
ignoreTopKIfZero?:boolean
|
ignoreTopKIfZero?:boolean
|
||||||
} = {}): { [key: string]: any } {
|
} = {}): { [key: string]: any } {
|
||||||
const db = getDatabase()
|
const db = getDatabase()
|
||||||
|
|
||||||
|
function getEffort(effort:number){
|
||||||
|
switch(effort){
|
||||||
|
case 0:{
|
||||||
|
return 'low'
|
||||||
|
}
|
||||||
|
case 1:{
|
||||||
|
return 'medium'
|
||||||
|
}
|
||||||
|
case 2:{
|
||||||
|
return 'high'
|
||||||
|
}
|
||||||
|
default:{
|
||||||
|
return 'medium'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(db.seperateParametersEnabled && ModelMode !== 'model'){
|
if(db.seperateParametersEnabled && ModelMode !== 'model'){
|
||||||
if(ModelMode === 'submodel'){
|
if(ModelMode === 'submodel'){
|
||||||
ModelMode = 'otherAx'
|
ModelMode = 'otherAx'
|
||||||
@@ -108,7 +126,7 @@ function applyParameters(data: { [key: string]: any }, parameters: Parameter[],
|
|||||||
|
|
||||||
for(const parameter of parameters){
|
for(const parameter of parameters){
|
||||||
|
|
||||||
let value = 0
|
let value:number|string = 0
|
||||||
if(parameter === 'top_k' && arg.ignoreTopKIfZero && db.seperateParameters[ModelMode][parameter] === 0){
|
if(parameter === 'top_k' && arg.ignoreTopKIfZero && db.seperateParameters[ModelMode][parameter] === 0){
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -146,6 +164,10 @@ function applyParameters(data: { [key: string]: any }, parameters: Parameter[],
|
|||||||
value = db.seperateParameters[ModelMode].presence_penalty === -1000 ? -1000 : (db.seperateParameters[ModelMode].presence_penalty / 100)
|
value = db.seperateParameters[ModelMode].presence_penalty === -1000 ? -1000 : (db.seperateParameters[ModelMode].presence_penalty / 100)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
case 'reasoning_effort':{
|
||||||
|
value = getEffort(db.seperateParameters[ModelMode].reasoning_effort)
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(value === -1000 || value === undefined){
|
if(value === -1000 || value === undefined){
|
||||||
@@ -159,7 +181,7 @@ function applyParameters(data: { [key: string]: any }, parameters: Parameter[],
|
|||||||
|
|
||||||
|
|
||||||
for(const parameter of parameters){
|
for(const parameter of parameters){
|
||||||
let value = 0
|
let value:number|string = 0
|
||||||
if(parameter === 'top_k' && arg.ignoreTopKIfZero && db.top_k === 0){
|
if(parameter === 'top_k' && arg.ignoreTopKIfZero && db.top_k === 0){
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -188,6 +210,10 @@ function applyParameters(data: { [key: string]: any }, parameters: Parameter[],
|
|||||||
value = db.top_p
|
value = db.top_p
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
case 'reasoning_effort':{
|
||||||
|
value = getEffort(db.reasoningEffort)
|
||||||
|
break
|
||||||
|
}
|
||||||
case 'frequency_penalty':{
|
case 'frequency_penalty':{
|
||||||
value = db.frequencyPenalty === -1000 ? -1000 : (db.frequencyPenalty / 100)
|
value = db.frequencyPenalty === -1000 ? -1000 : (db.frequencyPenalty / 100)
|
||||||
break
|
break
|
||||||
@@ -769,7 +795,7 @@ async function requestOpenAI(arg:RequestDataArgumentExtended):Promise<requestDat
|
|||||||
|
|
||||||
body = applyParameters(
|
body = applyParameters(
|
||||||
body,
|
body,
|
||||||
aiModel === 'openrouter' ? ['temperature', 'top_p', 'frequency_penalty', 'presence_penalty', 'repetition_penalty', 'min_p', 'top_a', 'top_k'] : ['temperature', 'top_p', 'frequency_penalty', 'presence_penalty'],
|
arg.modelInfo.parameters,
|
||||||
{},
|
{},
|
||||||
arg.mode
|
arg.mode
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -471,6 +471,7 @@ export function setDatabase(data:Database){
|
|||||||
data.showPromptComparison ??= false
|
data.showPromptComparison ??= false
|
||||||
data.checkCorruption ??= true
|
data.checkCorruption ??= true
|
||||||
data.OaiCompAPIKeys ??= {}
|
data.OaiCompAPIKeys ??= {}
|
||||||
|
data.reasoningEffort ??= 0
|
||||||
data.hypaV3Settings = {
|
data.hypaV3Settings = {
|
||||||
memoryTokensRatio: data.hypaV3Settings?.memoryTokensRatio ?? 0.2,
|
memoryTokensRatio: data.hypaV3Settings?.memoryTokensRatio ?? 0.2,
|
||||||
extraSummarizationRatio: data.hypaV3Settings?.extraSummarizationRatio ?? 0.2,
|
extraSummarizationRatio: data.hypaV3Settings?.extraSummarizationRatio ?? 0.2,
|
||||||
@@ -896,6 +897,7 @@ export interface Database{
|
|||||||
},
|
},
|
||||||
OaiCompAPIKeys: {[key:string]:string}
|
OaiCompAPIKeys: {[key:string]:string}
|
||||||
inlayErrorResponse:boolean
|
inlayErrorResponse:boolean
|
||||||
|
reasoningEffort:number
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SeparateParameters{
|
interface SeparateParameters{
|
||||||
@@ -907,6 +909,7 @@ interface SeparateParameters{
|
|||||||
top_p?:number
|
top_p?:number
|
||||||
frequency_penalty?:number
|
frequency_penalty?:number
|
||||||
presence_penalty?:number
|
presence_penalty?:number
|
||||||
|
reasoning_effort?:number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface customscript{
|
export interface customscript{
|
||||||
@@ -1219,6 +1222,7 @@ export interface botPreset{
|
|||||||
customFlags?: LLMFlags[]
|
customFlags?: LLMFlags[]
|
||||||
image?:string
|
image?:string
|
||||||
regex?:customscript[]
|
regex?:customscript[]
|
||||||
|
reasonEffort?:number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1524,6 +1528,7 @@ export function saveCurrentPreset(){
|
|||||||
enableCustomFlags: db.enableCustomFlags,
|
enableCustomFlags: db.enableCustomFlags,
|
||||||
regex: db.presetRegex,
|
regex: db.presetRegex,
|
||||||
image: pres?.[db.botPresetsId]?.image ?? '',
|
image: pres?.[db.botPresetsId]?.image ?? '',
|
||||||
|
reasonEffort: db.reasoningEffort ?? 0,
|
||||||
}
|
}
|
||||||
db.botPresets = pres
|
db.botPresets = pres
|
||||||
setDatabase(db)
|
setDatabase(db)
|
||||||
@@ -1633,6 +1638,7 @@ export function setPreset(db:Database, newPres: botPreset){
|
|||||||
db.customFlags = safeStructuredClone(newPres.customFlags) ?? []
|
db.customFlags = safeStructuredClone(newPres.customFlags) ?? []
|
||||||
db.enableCustomFlags = newPres.enableCustomFlags ?? false
|
db.enableCustomFlags = newPres.enableCustomFlags ?? false
|
||||||
db.presetRegex = newPres.regex ?? []
|
db.presetRegex = newPres.regex ?? []
|
||||||
|
db.reasoningEffort = newPres.reasonEffort ?? 0
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1660,11 +1666,6 @@ export async function downloadPreset(id:number, type:'json'|'risupreset'|'return
|
|||||||
pres.textgenWebUIStreamURL= ''
|
pres.textgenWebUIStreamURL= ''
|
||||||
pres.textgenWebUIBlockingURL= ''
|
pres.textgenWebUIBlockingURL= ''
|
||||||
|
|
||||||
if((pres.image || pres.regex?.length > 0) && type !== 'return'){
|
|
||||||
alertError("Preset with image or regexes cannot be exported for now. use RisuRealm to share the preset.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if(type === 'json'){
|
if(type === 'json'){
|
||||||
downloadFile(pres.name + "_preset.json", Buffer.from(JSON.stringify(pres, null, 2)))
|
downloadFile(pres.name + "_preset.json", Buffer.from(JSON.stringify(pres, null, 2)))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user