lemonade-sdk 9.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. lemonade/__init__.py +5 -0
  2. lemonade/api.py +180 -0
  3. lemonade/cache.py +92 -0
  4. lemonade/cli.py +173 -0
  5. lemonade/common/__init__.py +0 -0
  6. lemonade/common/build.py +176 -0
  7. lemonade/common/cli_helpers.py +139 -0
  8. lemonade/common/exceptions.py +98 -0
  9. lemonade/common/filesystem.py +368 -0
  10. lemonade/common/inference_engines.py +408 -0
  11. lemonade/common/network.py +93 -0
  12. lemonade/common/printing.py +110 -0
  13. lemonade/common/status.py +471 -0
  14. lemonade/common/system_info.py +1411 -0
  15. lemonade/common/test_helpers.py +28 -0
  16. lemonade/profilers/__init__.py +1 -0
  17. lemonade/profilers/agt_power.py +437 -0
  18. lemonade/profilers/hwinfo_power.py +429 -0
  19. lemonade/profilers/memory_tracker.py +259 -0
  20. lemonade/profilers/profiler.py +58 -0
  21. lemonade/sequence.py +363 -0
  22. lemonade/state.py +159 -0
  23. lemonade/tools/__init__.py +1 -0
  24. lemonade/tools/accuracy.py +432 -0
  25. lemonade/tools/adapter.py +114 -0
  26. lemonade/tools/bench.py +302 -0
  27. lemonade/tools/flm/__init__.py +1 -0
  28. lemonade/tools/flm/utils.py +305 -0
  29. lemonade/tools/huggingface/bench.py +187 -0
  30. lemonade/tools/huggingface/load.py +235 -0
  31. lemonade/tools/huggingface/utils.py +359 -0
  32. lemonade/tools/humaneval.py +264 -0
  33. lemonade/tools/llamacpp/bench.py +255 -0
  34. lemonade/tools/llamacpp/load.py +222 -0
  35. lemonade/tools/llamacpp/utils.py +1260 -0
  36. lemonade/tools/management_tools.py +319 -0
  37. lemonade/tools/mmlu.py +319 -0
  38. lemonade/tools/oga/__init__.py +0 -0
  39. lemonade/tools/oga/bench.py +120 -0
  40. lemonade/tools/oga/load.py +804 -0
  41. lemonade/tools/oga/migration.py +403 -0
  42. lemonade/tools/oga/utils.py +462 -0
  43. lemonade/tools/perplexity.py +147 -0
  44. lemonade/tools/prompt.py +263 -0
  45. lemonade/tools/report/__init__.py +0 -0
  46. lemonade/tools/report/llm_report.py +203 -0
  47. lemonade/tools/report/table.py +899 -0
  48. lemonade/tools/server/__init__.py +0 -0
  49. lemonade/tools/server/flm.py +133 -0
  50. lemonade/tools/server/llamacpp.py +320 -0
  51. lemonade/tools/server/serve.py +2123 -0
  52. lemonade/tools/server/static/favicon.ico +0 -0
  53. lemonade/tools/server/static/index.html +279 -0
  54. lemonade/tools/server/static/js/chat.js +1059 -0
  55. lemonade/tools/server/static/js/model-settings.js +183 -0
  56. lemonade/tools/server/static/js/models.js +1395 -0
  57. lemonade/tools/server/static/js/shared.js +556 -0
  58. lemonade/tools/server/static/logs.html +191 -0
  59. lemonade/tools/server/static/styles.css +2654 -0
  60. lemonade/tools/server/static/webapp.html +321 -0
  61. lemonade/tools/server/tool_calls.py +153 -0
  62. lemonade/tools/server/tray.py +664 -0
  63. lemonade/tools/server/utils/macos_tray.py +226 -0
  64. lemonade/tools/server/utils/port.py +77 -0
  65. lemonade/tools/server/utils/thread.py +85 -0
  66. lemonade/tools/server/utils/windows_tray.py +408 -0
  67. lemonade/tools/server/webapp.py +34 -0
  68. lemonade/tools/server/wrapped_server.py +559 -0
  69. lemonade/tools/tool.py +374 -0
  70. lemonade/version.py +1 -0
  71. lemonade_install/__init__.py +1 -0
  72. lemonade_install/install.py +239 -0
  73. lemonade_sdk-9.1.1.dist-info/METADATA +276 -0
  74. lemonade_sdk-9.1.1.dist-info/RECORD +84 -0
  75. lemonade_sdk-9.1.1.dist-info/WHEEL +5 -0
  76. lemonade_sdk-9.1.1.dist-info/entry_points.txt +5 -0
  77. lemonade_sdk-9.1.1.dist-info/licenses/LICENSE +201 -0
  78. lemonade_sdk-9.1.1.dist-info/licenses/NOTICE.md +47 -0
  79. lemonade_sdk-9.1.1.dist-info/top_level.txt +3 -0
  80. lemonade_server/cli.py +805 -0
  81. lemonade_server/model_manager.py +758 -0
  82. lemonade_server/pydantic_models.py +159 -0
  83. lemonade_server/server_models.json +643 -0
  84. lemonade_server/settings.py +39 -0
@@ -0,0 +1,183 @@
1
+ // Model Settings functionality
2
+
3
+ // Model settings state
4
+ let modelSettings = {};
5
+
6
+ // === Model Settings Management ===
7
+
8
+ // Load model settings from localStorage (without DOM access)
9
+ function loadModelSettingsFromStorage() {
10
+ const saved = localStorage.getItem('lemonade_model_settings');
11
+ if (saved) {
12
+ try {
13
+ const savedSettings = JSON.parse(saved);
14
+ modelSettings = { ...modelSettings, ...savedSettings };
15
+ } catch (error) {
16
+ console.error('Error loading saved settings:', error);
17
+ }
18
+ }
19
+ }
20
+
21
+ // Load model settings from localStorage and update UI
22
+ function loadModelSettings() {
23
+ // First load from storage
24
+ loadModelSettingsFromStorage();
25
+
26
+ // Update UI - set values only if they exist, otherwise leave placeholder
27
+ const tempInput = document.getElementById('setting-temperature');
28
+ const topKInput = document.getElementById('setting-top-k');
29
+ const topPInput = document.getElementById('setting-top-p');
30
+ const repeatInput = document.getElementById('setting-repeat-penalty');
31
+ const thinkingCheckbox = document.getElementById('enable-thinking');
32
+
33
+
34
+ // Check if DOM elements exist
35
+ if (!tempInput || !topKInput || !topPInput || !repeatInput || !thinkingCheckbox) {
36
+ return;
37
+ }
38
+
39
+ // Load saved values or leave as placeholder "default"
40
+ if (modelSettings.temperature !== undefined) {
41
+ tempInput.value = modelSettings.temperature;
42
+ }
43
+ if (modelSettings.top_k !== undefined) {
44
+ topKInput.value = modelSettings.top_k;
45
+ }
46
+ if (modelSettings.top_p !== undefined) {
47
+ topPInput.value = modelSettings.top_p;
48
+ }
49
+ if (modelSettings.repeat_penalty !== undefined) {
50
+ repeatInput.value = modelSettings.repeat_penalty;
51
+ }
52
+ if (modelSettings.enable_thinking !== undefined) {
53
+ thinkingCheckbox.checked = modelSettings.enable_thinking;
54
+
55
+ } else {
56
+ thinkingCheckbox.checked = true; // default to enabled
57
+
58
+ }
59
+ }
60
+
61
+ // Auto-save model settings whenever inputs change
62
+ function setupAutoSaveSettings() {
63
+ const inputs = ['setting-temperature', 'setting-top-k', 'setting-top-p', 'setting-repeat-penalty', 'enable-thinking'];
64
+
65
+ inputs.forEach(inputId => {
66
+ const input = document.getElementById(inputId);
67
+ if (input) {
68
+ input.addEventListener('input', function() {
69
+ updateModelSettings();
70
+ });
71
+ input.addEventListener('blur', function() {
72
+ updateModelSettings();
73
+ });
74
+ }
75
+ const thinkingCheckbox = document.getElementById('enable-thinking');
76
+ if (thinkingCheckbox) {
77
+ thinkingCheckbox.addEventListener('change', function() {
78
+ updateModelSettings();
79
+ });
80
+ }
81
+ });
82
+ }
83
+
84
+ // Update model settings from current input values
85
+ function updateModelSettings() {
86
+ const tempInput = document.getElementById('setting-temperature');
87
+ const topKInput = document.getElementById('setting-top-k');
88
+ const topPInput = document.getElementById('setting-top-p');
89
+ const repeatInput = document.getElementById('setting-repeat-penalty');
90
+ const thinkingCheckbox = document.getElementById('enable-thinking');
91
+
92
+ // Check if DOM elements exist (might not be available if DOM isn't ready)
93
+ if (!tempInput || !topKInput || !topPInput || !repeatInput || !thinkingCheckbox) {
94
+ return;
95
+ }
96
+
97
+ // Only set values if user has entered something, otherwise use undefined (default)
98
+ modelSettings = {};
99
+
100
+ if (tempInput.value && tempInput.value.trim() !== '') {
101
+ modelSettings.temperature = parseFloat(tempInput.value);
102
+ }
103
+ if (topKInput.value && topKInput.value.trim() !== '') {
104
+ modelSettings.top_k = parseInt(topKInput.value);
105
+ }
106
+ if (topPInput.value && topPInput.value.trim() !== '') {
107
+ modelSettings.top_p = parseFloat(topPInput.value);
108
+ }
109
+ if (repeatInput.value && repeatInput.value.trim() !== '') {
110
+ modelSettings.repeat_penalty = parseFloat(repeatInput.value);
111
+ }
112
+ modelSettings.enable_thinking = thinkingCheckbox.checked;
113
+
114
+ // Save to localStorage
115
+ localStorage.setItem('lemonade_model_settings', JSON.stringify(modelSettings));
116
+ }
117
+
118
+ // Reset model settings to defaults (clear all inputs)
119
+ function resetModelSettings() {
120
+ modelSettings = {};
121
+
122
+ // Clear all input values to show placeholders
123
+ document.getElementById('setting-temperature').value = '';
124
+ document.getElementById('setting-top-k').value = '';
125
+ document.getElementById('setting-top-p').value = '';
126
+ document.getElementById('setting-repeat-penalty').value = '';
127
+ document.getElementById('enable-thinking').checked = true;
128
+
129
+ localStorage.removeItem('lemonade_model_settings');
130
+ }
131
+
132
+ // Get current model settings for API requests (only include non-default values)
133
+ function getCurrentModelSettings() {
134
+ // Only update from DOM if the settings elements are available and visible
135
+ // Otherwise, use the settings loaded from localStorage
136
+ const tempInput = document.getElementById('setting-temperature');
137
+ if (tempInput) {
138
+ // DOM elements are available, update from current form state
139
+ updateModelSettings();
140
+ }
141
+
142
+ // Return only the settings that have actual values (not defaults)
143
+ const currentSettings = {};
144
+ if (modelSettings.temperature !== undefined) {
145
+ currentSettings.temperature = modelSettings.temperature;
146
+ }
147
+ if (modelSettings.top_k !== undefined) {
148
+ currentSettings.top_k = modelSettings.top_k;
149
+ }
150
+ if (modelSettings.top_p !== undefined) {
151
+ currentSettings.top_p = modelSettings.top_p;
152
+ }
153
+ if (modelSettings.repeat_penalty !== undefined) {
154
+ currentSettings.repeat_penalty = modelSettings.repeat_penalty;
155
+ }
156
+ if (modelSettings.enable_thinking !== undefined) {
157
+ currentSettings.enable_thinking = modelSettings.enable_thinking;
158
+ }
159
+
160
+ console.log('getCurrentModelSettings returning:', currentSettings);
161
+ return currentSettings;
162
+ }
163
+
164
+ // Make functions globally available for external access (like chat.js)
165
+ window.getCurrentModelSettings = getCurrentModelSettings;
166
+
167
+ // Load initial settings from localStorage immediately (without requiring DOM)
168
+ loadModelSettingsFromStorage();
169
+
170
+ // Initialize model settings when DOM is loaded
171
+ document.addEventListener('DOMContentLoaded', function() {
172
+ // Set up model settings controls (only reset button now)
173
+ const resetBtn = document.getElementById('reset-settings-btn');
174
+ if (resetBtn) {
175
+ resetBtn.onclick = resetModelSettings;
176
+ }
177
+
178
+ // Load initial model settings
179
+ loadModelSettings();
180
+
181
+ // Set up auto-save for settings
182
+ setupAutoSaveSettings();
183
+ });