diff --git a/config.properties b/config.properties index f827f42..7398fc3 100644 --- a/config.properties +++ b/config.properties @@ -1,5 +1,5 @@ #Llama Runner Configuration -#Wed Mar 25 12:59:21 CET 2026 +#Thu Mar 26 18:27:22 CET 2026 windowHeight=1189 windowWidth=711 windowX=1849 diff --git a/profiles.json b/profiles.json index 19342d7..ecb6717 100644 --- a/profiles.json +++ b/profiles.json @@ -17,7 +17,8 @@ "modelPath": "/home/kamma/models/Nemotron-Cascade-2-30B-A3B.Q8_0.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": -1, - "fit": false + "fit": false, + "reasoning": false }, "Qwen3.5-q6k-180k": { "host": "0.0.0.0", @@ -37,7 +38,8 @@ "modelPath": "/home/kamma/models/Qwen3.5-35B-A3B-Q6_K.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": 999, - "fit": false + "fit": false, + "reasoning": false }, "QwenCoderNext-160k": { "host": "0.0.0.0", @@ -57,7 +59,8 @@ "modelPath": "/home/kamma/models/Qwen3-Coder-Next-UD-Q2_K_XL.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": 999, - "fit": false + "fit": false, + "reasoning": false }, "Nemotron Cascade 180k": { "host": "0.0.0.0", @@ -77,7 +80,8 @@ "modelPath": "/home/kamma/models/Nemotron-Cascade-2-30B-A3B.Q5_K_M.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": 999, - "fit": false + "fit": false, + "reasoning": false }, "Qwen3.5 q6xl 160k": { "host": "0.0.0.0", @@ -97,7 +101,8 @@ "modelPath": "/home/kamma/models/Qwen3.5-35B-A3B-UD-Q6_K_XL.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": -1, - "fit": true + "fit": true, + "reasoning": false }, "gpt-oss-20b-160k": { "host": "0.0.0.0", @@ -117,7 +122,8 @@ "modelPath": "/home/kamma/models/gpt-oss-20b-F16.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": 999, - "fit": false + "fit": false, + "reasoning": false }, "gpt-oss-120b-F16-16k": { "host": "0.0.0.0", @@ -137,7 +143,8 @@ "modelPath": "/home/kamma/models/gpt-oss-120b-F16.gguf", "chatTemplateKwargs": "{\"enable_thinking\": true}", "ngl": -1, - "fit": true + "fit": true, + "reasoning": false }, "GLM-Flash-UD-Q6KXL-180k": { "host": "0.0.0.0", @@ -157,6 +164,70 @@ "modelPath": "/home/kamma/models/GLM-4.7-Flash-UD-Q6_K_XL.gguf", "chatTemplateKwargs": "{\"enable_thinking\": false}", "ngl": -1, - "fit": true + "fit": true, + "reasoning": false + }, + "Qwen3-Coder-Next-UD-Q2KXL-160k": { + "host": "0.0.0.0", + "port": 3080, + "parallel": 1, + "threads": 99, + "flashAttention": true, + "kvUnified": true, + "cacheTypeK": "q8_0", + "cacheTypeV": "q8_0", + "temperature": 0.6, + "topP": 0.95, + "topK": 20, + "minP": 0.0, + "ctxSize": 160000, + "enableThinking": false, + "modelPath": "/home/kamma/models/Qwen3-Coder-Next-UD-Q2_K_XL.gguf", + "chatTemplateKwargs": "{\"enable_thinking\": true}", + "ngl": -1, + "fit": true, + "reasoning": false + }, + "Qwen3-Coder-Next-UD-Q3KXL-160k": { + "host": "0.0.0.0", + "port": 3080, + "parallel": 1, + "threads": 99, + "flashAttention": true, + "kvUnified": true, + "cacheTypeK": "q8_0", + "cacheTypeV": "q8_0", + "temperature": 0.6, + "topP": 0.95, + "topK": 20, + "minP": 0.0, + "ctxSize": 160000, + "enableThinking": false, + "modelPath": "/home/kamma/models/Qwen3-Coder-Next-UD-Q3_K_XL.gguf", + "chatTemplateKwargs": "{\"enable_thinking\": true}", + "ngl": -1, + "fit": true, + "reasoning": false + }, + "Qwen3-Coder-Next-UD-Q4KXL-160k": { + "host": "0.0.0.0", + "port": 3080, + "parallel": 1, + "threads": 99, + "flashAttention": true, + "kvUnified": true, + "cacheTypeK": "q8_0", + "cacheTypeV": "q8_0", + "temperature": 0.6, + "topP": 0.95, + "topK": 20, + "minP": 0.0, + "ctxSize": 160000, + "enableThinking": false, + "modelPath": "/home/kamma/models/Qwen3-Coder-Next-UD-Q4_K_XL.gguf", + "chatTemplateKwargs": "", + "ngl": -1, + "fit": true, + "reasoning": true } } \ No newline at end of file diff --git a/src/main/java/cz/kamma/llamarunner/CommandBuilder.java b/src/main/java/cz/kamma/llamarunner/CommandBuilder.java index 21b2a2a..17796a0 100644 --- a/src/main/java/cz/kamma/llamarunner/CommandBuilder.java +++ b/src/main/java/cz/kamma/llamarunner/CommandBuilder.java @@ -43,6 +43,8 @@ public class CommandBuilder { cmd.append(" --fit on"); } + cmd.append(" --reasoning ").append(config.isReasoning() ? "on" : "off"); + String modelPath = buildModelPath(config.getModelPath(), modelsDirPath); cmd.append(" -m ").append(modelPath); diff --git a/src/main/java/cz/kamma/llamarunner/Main.java b/src/main/java/cz/kamma/llamarunner/Main.java index 8d33364..e2f330d 100644 --- a/src/main/java/cz/kamma/llamarunner/Main.java +++ b/src/main/java/cz/kamma/llamarunner/Main.java @@ -56,6 +56,7 @@ public class Main extends JFrame { private JCheckBox flashAttnCheckBox; private JCheckBox kvUnifiedCheckBox; private JCheckBox fitCheckBox; + private JCheckBox reasoningCheckBox; private JComboBox cacheTypeKComboBox; private JComboBox cacheTypeVComboBox; private JTextField tempField; @@ -335,6 +336,7 @@ public class Main extends JFrame { config.setFlashAttention(flashAttnCheckBox.isSelected()); config.setKvUnified(kvUnifiedCheckBox.isSelected()); config.setFit(fitCheckBox.isSelected()); + config.setReasoning(reasoningCheckBox.isSelected()); config.setCacheTypeK((String) cacheTypeKComboBox.getSelectedItem()); config.setCacheTypeV((String) cacheTypeVComboBox.getSelectedItem()); config.setTemperature(Double.parseDouble(tempField.getText())); @@ -381,6 +383,7 @@ public class Main extends JFrame { kwargsField.setText(config.getChatTemplateKwargs()); setNglFieldText(String.valueOf(config.getNgl())); fitCheckBox.setSelected(config.isFit()); + reasoningCheckBox.setSelected(config.isReasoning()); toggleFitMode(); } catch (IOException e) { @@ -796,6 +799,17 @@ public class Main extends JFrame { fitCheckBox.addActionListener(e -> toggleFitMode()); panel.add(fitCheckBox, gbc); + gbc.gridx = 0; + gbc.gridy = 9; + gbc.weightx = 0; + panel.add(new JLabel("Reasoning:"), gbc); + + gbc.gridx = 1; + gbc.weightx = 1.0; + reasoningCheckBox = new JCheckBox("Reasoning", false); + reasoningCheckBox.addActionListener(e -> updateCommandPreview()); + panel.add(reasoningCheckBox, gbc); + return panel; } diff --git a/src/main/java/cz/kamma/llamarunner/ModelConfig.java b/src/main/java/cz/kamma/llamarunner/ModelConfig.java index 3d02548..11cc280 100644 --- a/src/main/java/cz/kamma/llamarunner/ModelConfig.java +++ b/src/main/java/cz/kamma/llamarunner/ModelConfig.java @@ -26,6 +26,7 @@ public class ModelConfig implements Serializable { private String chatTemplateKwargs; private int ngl; private boolean fit; + private boolean reasoning; public ModelConfig() { this.host = "0.0.0.0"; @@ -46,6 +47,7 @@ public class ModelConfig implements Serializable { this.chatTemplateKwargs = ""; this.ngl = 999; this.fit = false; + this.reasoning = false; } // Getters and setters @@ -103,6 +105,9 @@ public class ModelConfig implements Serializable { public boolean isFit() { return fit; } public void setFit(boolean fit) { this.fit = fit; } + public boolean isReasoning() { return reasoning; } + public void setReasoning(boolean reasoning) { this.reasoning = reasoning; } + @Override public String toString() { return "ModelConfig{" + @@ -124,6 +129,7 @@ public class ModelConfig implements Serializable { ", chatTemplateKwargs='" + chatTemplateKwargs + '\'' + ", ngl=" + ngl + ", fit=" + fit + + ", reasoning=" + reasoning + '}'; } }