ai mod cmds improvements, remove phi4 models for bad performance to output, push example env
This commit is contained in:
parent
173d4e7a52
commit
3b6d200b21
6 changed files with 40 additions and 20 deletions
14
config/ai.ts
14
config/ai.ts
|
@ -327,13 +327,6 @@ export const models: ModelInfo[] = [
|
||||||
descriptionEn: 'Phi-4 is a 14B parameter, state-of-the-art open model from Microsoft. ',
|
descriptionEn: 'Phi-4 is a 14B parameter, state-of-the-art open model from Microsoft. ',
|
||||||
descriptionPt: 'Phi-4 é um modelo de 14B de última geração, aberto pela Microsoft.',
|
descriptionPt: 'Phi-4 é um modelo de 14B de última geração, aberto pela Microsoft.',
|
||||||
models: [
|
models: [
|
||||||
{
|
|
||||||
name: 'hf.co/unsloth/Phi-4-mini-reasoning-GGUF',
|
|
||||||
label: 'Phi4 Mini Reasoning',
|
|
||||||
parameterSize: '4B',
|
|
||||||
thinking: true,
|
|
||||||
uncensored: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'phi4:14b',
|
name: 'phi4:14b',
|
||||||
label: 'Phi4 14B',
|
label: 'Phi4 14B',
|
||||||
|
@ -341,13 +334,6 @@ export const models: ModelInfo[] = [
|
||||||
thinking: false,
|
thinking: false,
|
||||||
uncensored: false
|
uncensored: false
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: 'hf.co/unsloth/Phi-4-reasoning-plus-GGUF',
|
|
||||||
label: 'Phi4 Reasoning Plus',
|
|
||||||
parameterSize: '14B',
|
|
||||||
thinking: true,
|
|
||||||
uncensored: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'huihui_ai/phi4-abliterated:14b',
|
name: 'huihui_ai/phi4-abliterated:14b',
|
||||||
label: 'Phi4 Uncensored 14B',
|
label: 'Phi4 Uncensored 14B',
|
||||||
|
|
|
@ -984,11 +984,30 @@ export default (bot: Telegraf<Context>, db: NodePgDatabase<typeof schema>) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let stoppedCurrentRequest = false;
|
||||||
const initialLength = requestQueue.length;
|
const initialLength = requestQueue.length;
|
||||||
const filteredQueue = requestQueue.filter(item => item.userId !== targetUserId);
|
const filteredQueue = requestQueue.filter(item => item.userId !== targetUserId);
|
||||||
const removedCount = initialLength - filteredQueue.length;
|
const removedCount = initialLength - filteredQueue.length;
|
||||||
|
|
||||||
if (removedCount === 0) {
|
requestQueue.length = 0;
|
||||||
|
requestQueue.push(...filteredQueue);
|
||||||
|
|
||||||
|
if (currentRequest && currentRequest.userId === targetUserId) {
|
||||||
|
currentRequest.abortController?.abort();
|
||||||
|
|
||||||
|
try {
|
||||||
|
await axios.post(`${process.env.ollamaApi}/api/generate`, {
|
||||||
|
model: currentRequest.model,
|
||||||
|
keep_alive: 0,
|
||||||
|
}, { timeout: 5000 });
|
||||||
|
} catch (error) {
|
||||||
|
console.log("[✨ AI] Could not unload model after cancellation:", error.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
stoppedCurrentRequest = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (removedCount === 0 && !stoppedCurrentRequest) {
|
||||||
await ctx.reply(Strings.ai.noQueueItems.replace("{userId}", String(targetUserId)), {
|
await ctx.reply(Strings.ai.noQueueItems.replace("{userId}", String(targetUserId)), {
|
||||||
parse_mode: 'Markdown',
|
parse_mode: 'Markdown',
|
||||||
...(reply_to_message_id && { reply_parameters: { message_id: reply_to_message_id } })
|
...(reply_to_message_id && { reply_parameters: { message_id: reply_to_message_id } })
|
||||||
|
@ -996,10 +1015,16 @@ export default (bot: Telegraf<Context>, db: NodePgDatabase<typeof schema>) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
requestQueue.length = 0;
|
let responseMessage = "";
|
||||||
requestQueue.push(...filteredQueue);
|
if (stoppedCurrentRequest && removedCount > 0) {
|
||||||
|
responseMessage = Strings.ai.stoppedCurrentAndCleared.replace("{count}", String(removedCount)).replace("{userId}", String(targetUserId));
|
||||||
|
} else if (stoppedCurrentRequest) {
|
||||||
|
responseMessage = Strings.ai.stoppedCurrentRequestOnly.replace("{userId}", String(targetUserId));
|
||||||
|
} else {
|
||||||
|
responseMessage = Strings.ai.queueCleared.replace("{count}", String(removedCount)).replace("{userId}", String(targetUserId));
|
||||||
|
}
|
||||||
|
|
||||||
await ctx.reply(Strings.ai.queueCleared.replace("{count}", String(removedCount)).replace("{userId}", String(targetUserId)), {
|
await ctx.reply(responseMessage, {
|
||||||
parse_mode: 'Markdown',
|
parse_mode: 'Markdown',
|
||||||
...(reply_to_message_id && { reply_parameters: { message_id: reply_to_message_id } })
|
...(reply_to_message_id && { reply_parameters: { message_id: reply_to_message_id } })
|
||||||
});
|
});
|
||||||
|
|
|
@ -120,7 +120,10 @@
|
||||||
"requestStopped": "🛑 Your AI request has been stopped.",
|
"requestStopped": "🛑 Your AI request has been stopped.",
|
||||||
"requestRemovedFromQueue": "🛑 Your AI request has been removed from the queue.",
|
"requestRemovedFromQueue": "🛑 Your AI request has been removed from the queue.",
|
||||||
"noActiveRequest": "ℹ️ You don't have any active AI requests to stop.",
|
"noActiveRequest": "ℹ️ You don't have any active AI requests to stop.",
|
||||||
"executionTimeoutReached": "\n\n⏱️ Max execution time limit reached!"
|
"executionTimeoutReached": "\n\n⏱️ Max execution time limit reached!",
|
||||||
|
"stoppedCurrentAndCleared": "🛑 Stopped current request and cleared {count} queued item(s) for user {userId}.",
|
||||||
|
"stoppedCurrentRequestOnly": "🛑 Stopped current request for user {userId} (no queued items found).",
|
||||||
|
"stoppedCurrentAndClearedQueue": "🛑 Stopped current request and cleared all queued items for user {userId}."
|
||||||
},
|
},
|
||||||
"maInvalidModule": "Please provide a valid module ID from The Mod Archive.\nExample: `/modarchive 81574`",
|
"maInvalidModule": "Please provide a valid module ID from The Mod Archive.\nExample: `/modarchive 81574`",
|
||||||
"maDownloadError": "Error downloading the file. Check the module ID and try again.",
|
"maDownloadError": "Error downloading the file. Check the module ID and try again.",
|
||||||
|
|
|
@ -123,7 +123,10 @@
|
||||||
"requestStopped": "🛑 Sua solicitação de IA foi interrompida.",
|
"requestStopped": "🛑 Sua solicitação de IA foi interrompida.",
|
||||||
"requestRemovedFromQueue": "🛑 Sua solicitação de IA foi removida da fila.",
|
"requestRemovedFromQueue": "🛑 Sua solicitação de IA foi removida da fila.",
|
||||||
"noActiveRequest": "ℹ️ Você não tem nenhuma solicitação ativa de IA para parar.",
|
"noActiveRequest": "ℹ️ Você não tem nenhuma solicitação ativa de IA para parar.",
|
||||||
"executionTimeoutReached": "\n\n⏱️ Limite máximo de tempo de execução atingido!"
|
"executionTimeoutReached": "\n\n⏱️ Limite máximo de tempo de execução atingido!",
|
||||||
|
"stoppedCurrentAndCleared": "🛑 Parou solicitação atual e limpou {count} item(s) da fila para o usuário {userId}.",
|
||||||
|
"stoppedCurrentRequestOnly": "🛑 Parou solicitação atual para o usuário {userId} (nenhum item na fila encontrado).",
|
||||||
|
"stoppedCurrentAndClearedQueue": "🛑 Parou solicitação atual e limpou todos os itens da fila para o usuário {userId}."
|
||||||
},
|
},
|
||||||
"maInvalidModule": "Por favor, forneça um ID de módulo válido do The Mod Archive.\nExemplo: `/modarchive 81574`",
|
"maInvalidModule": "Por favor, forneça um ID de módulo válido do The Mod Archive.\nExemplo: `/modarchive 81574`",
|
||||||
"maDownloadError": "Erro ao baixar o arquivo. Verifique o ID do módulo e tente novamente.",
|
"maDownloadError": "Erro ao baixar o arquivo. Verifique o ID do módulo e tente novamente.",
|
||||||
|
|
2
webui/.env.example
Normal file
2
webui/.env.example
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
botApiUrl = "http://kowalski:3030"
|
||||||
|
databaseUrl = "postgres://kowalski:kowalski@localhost:5432/kowalski"
|
1
webui/.gitignore
vendored
1
webui/.gitignore
vendored
|
@ -32,6 +32,7 @@ yarn-error.log*
|
||||||
|
|
||||||
# env files (can opt-in for committing if needed)
|
# env files (can opt-in for committing if needed)
|
||||||
.env*
|
.env*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue