diffron 0.1.2__tar.gz → 0.1.4__tar.gz
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.
- {diffron-0.1.2 → diffron-0.1.4}/CHANGELOG.md +32 -0
- {diffron-0.1.2 → diffron-0.1.4}/MANIFEST.in +2 -0
- {diffron-0.1.2/diffron.egg-info → diffron-0.1.4}/PKG-INFO +99 -15
- {diffron-0.1.2 → diffron-0.1.4}/README.md +98 -14
- {diffron-0.1.2 → diffron-0.1.4}/diffron/__init__.py +36 -26
- diffron-0.1.4/diffron/__main__.py +8 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/cli.py +87 -87
- {diffron-0.1.2 → diffron-0.1.4}/diffron/commit_gen.py +156 -151
- diffron-0.1.4/diffron/lemonade.py +246 -0
- diffron-0.1.4/diffron/models.py +203 -0
- diffron-0.1.4/diffron/models.pyi +23 -0
- {diffron-0.1.2 → diffron-0.1.4/diffron.egg-info}/PKG-INFO +99 -15
- {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/SOURCES.txt +7 -9
- {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/entry_points.txt +2 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/top_level.txt +1 -1
- diffron-0.1.4/docs/LEMONADE_PORT_VERIFICATION_FIX.md +105 -0
- diffron-0.1.4/docs/LEMONADE_UNRESPONSIVE_FIX.md +100 -0
- diffron-0.1.4/docs/MODEL_NAME_CASE_FIX.md +88 -0
- {diffron-0.1.2 → diffron-0.1.4}/docs/SETUP.md +524 -524
- {diffron-0.1.2 → diffron-0.1.4}/pyproject.toml +83 -81
- {diffron-0.1.2 → diffron-0.1.4}/requirements.txt +1 -0
- {diffron-0.1.2 → diffron-0.1.4}/setup.py +66 -64
- diffron-0.1.2/diffron/lemonade.py +0 -192
- diffron-0.1.2/docs/PLAN.md +0 -378
- diffron-0.1.2/docs/PYPI_RELEASE.md +0 -487
- diffron-0.1.2/hooks/prepare-commit-msg +0 -13
- diffron-0.1.2/tests/test_commit_gen.py +0 -155
- diffron-0.1.2/tests/test_git_hooks.py +0 -162
- diffron-0.1.2/tests/test_lemonade.py +0 -117
- diffron-0.1.2/tests/test_pr_gen.py +0 -152
- diffron-0.1.2/tests/test_utils.py +0 -223
- {diffron-0.1.2 → diffron-0.1.4}/LICENSE +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/__init__.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/cli.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/client.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/client.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/commit_gen.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/git_hooks.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/git_hooks.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/aipr.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg-global.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/hooks/prepare-commit-msg.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/lemonade.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/pr_gen.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/pr_gen.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/py.typed +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/utils.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron/utils.pyi +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/dependency_links.txt +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/diffron.egg-info/requires.txt +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/docs/HOOKS.md +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/docs/USAGE.md +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/hooks/aipr.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/hooks/prepare-commit-msg-global.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/hooks/prepare-commit-msg.py +0 -0
- {diffron-0.1.2 → diffron-0.1.4}/setup.cfg +0 -0
|
@@ -17,6 +17,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
## [0.1.4] - 2026-04-24
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **Lemonade Model Unresponsive Fix** — Added retry logic with automatic model unload/reload when Lemonade model becomes unresponsive
|
|
24
|
+
- Added `_reload_model()` method that uses lemonade-python-sdk to detect and reconnect to the Lemonade server
|
|
25
|
+
- Added `_init_client()` method to reinitialize the OpenAI client after model reload
|
|
26
|
+
- Handles `'NoneType' object is not subscriptable` error by checking for None responses before accessing `response.choices[0]`
|
|
27
|
+
- Retry mechanism attempts up to 3 times before raising a detailed RuntimeError
|
|
28
|
+
- Added `from urllib.parse import urlparse` import at module level
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## [0.1.3] - 2026-04-08
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
- **Curated Models System** — Pre-configured model collection with easy selection
|
|
36
|
+
- `list_available_models()` — List all curated models with metadata
|
|
37
|
+
- `get_default_model()` — Get the recommended default model
|
|
38
|
+
- `get_model_config(name)` — Get configuration for a specific model by name
|
|
39
|
+
- `diffron-setup-model` CLI — Interactive model selection and configuration
|
|
40
|
+
- `diffron-setup-model` — Set default model
|
|
41
|
+
- `diffron-setup-model --list` — Show all available models
|
|
42
|
+
- `diffron-setup-model --model NAME` — Set specific model
|
|
43
|
+
- `ModelConfig` dataclass — Structured model metadata (name, description, parameters, best_for)
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Updated metadata and documentation for public PyPI release
|
|
47
|
+
- Moved private files (docs, tests, scripts, notes) to `homelab/` folder
|
|
48
|
+
- Improved sync script exclusion patterns
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
20
52
|
## [0.1.0] - 2026-03-28
|
|
21
53
|
|
|
22
54
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffron
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Git commit message and PR description generator using Lemonade
|
|
5
5
|
Home-page: https://github.com/diffron/diffron
|
|
6
6
|
Author: Diffron Contributors
|
|
@@ -47,7 +47,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
47
47
|
|
|
48
48
|
**Diffron is a production-ready reference implementation of the lemonade-python-sdk — submitted to the AMD Lemonade Developer Challenge 2026.**
|
|
49
49
|
|
|
50
|
-

|
|
51
51
|

|
|
52
52
|

|
|
53
53
|

|
|
@@ -61,7 +61,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
61
61
|
- 🔌 **Lemonade Integration** - Works with your local Lemonade LLM server (no cloud required)
|
|
62
62
|
- 🪟 **Windows Ready** - Fully compatible with GitHub Desktop 3.5.5+ hooks support
|
|
63
63
|
- ⚡ **Auto-Detection** - Automatically finds your running Lemonade instance
|
|
64
|
-
- 🎯 **
|
|
64
|
+
- 🎯 **Curated Models** - Easy model selection with recommended models for different tasks
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
@@ -74,7 +74,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
74
74
|
1. Download the installer from [AMD Lemonade Releases](https://github.com/AMD-AI-Software/lemonade/releases)
|
|
75
75
|
2. Run `Lemonade_Server_Installer.exe`
|
|
76
76
|
3. Launch Lemonade Server from the desktop shortcut
|
|
77
|
-
4. Download a model via the Lemonade UI (e.g., `
|
|
77
|
+
4. Download a model via the Lemonade UI (e.g., `qwen3.5-0.8b-gguf` - the new default!)
|
|
78
78
|
|
|
79
79
|
📚 **Documentation:** [AMD Ryzen AI - Lemonade Setup](https://ryzenai.docs.amd.com/en/latest/llm/server_interface.html)
|
|
80
80
|
|
|
@@ -107,6 +107,51 @@ set LEMONADE_SERVER_URL=http://localhost:8020
|
|
|
107
107
|
pip install diffron
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
### 5. Setup Model (Important!)
|
|
111
|
+
|
|
112
|
+
**Diffron comes with curated models. The default model works out of the box.**
|
|
113
|
+
|
|
114
|
+
**Default model:** `qwen2.5-it-3b-FLM` (included with Lemonade)
|
|
115
|
+
|
|
116
|
+
**To use a different model:**
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# List all curated models
|
|
120
|
+
diffron-setup-model --list
|
|
121
|
+
|
|
122
|
+
# Set a specific model (sets DIFFRON_MODEL env var permanently)
|
|
123
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
124
|
+
|
|
125
|
+
# Reset to default
|
|
126
|
+
diffron-setup-model
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Or via Python API:**
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
from diffron import list_available_models, get_default_model
|
|
133
|
+
|
|
134
|
+
# List all curated models
|
|
135
|
+
models = list_available_models()
|
|
136
|
+
for model in models:
|
|
137
|
+
print(f"{model.name}: {model.description}")
|
|
138
|
+
|
|
139
|
+
# Get default model
|
|
140
|
+
default = get_default_model()
|
|
141
|
+
print(f"Default: {default.name}")
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Or manually via environment variable:**
|
|
145
|
+
|
|
146
|
+
```cmd
|
|
147
|
+
# Temporary (current session)
|
|
148
|
+
set DIFFRON_MODEL=qwen3.5-0.8b-gguf
|
|
149
|
+
|
|
150
|
+
# Permanent (System Properties → Environment Variables)
|
|
151
|
+
# Name: DIFFRON_MODEL
|
|
152
|
+
# Value: qwen3.5-0.8b-gguf
|
|
153
|
+
```
|
|
154
|
+
|
|
110
155
|
### 5. Install Git Hooks
|
|
111
156
|
|
|
112
157
|
```bash
|
|
@@ -206,14 +251,28 @@ client.install_hooks(global_install=True)
|
|
|
206
251
|
| `DIFFRON_MODEL` | `qwen2.5-it-3b-FLM` | Model name to use |
|
|
207
252
|
| `DIFFRON_MAX_DIFF_CHARS` | `4000` | Max diff characters |
|
|
208
253
|
|
|
254
|
+
### Curated Models
|
|
255
|
+
|
|
256
|
+
Diffron comes with a collection of curated models optimized for different use cases:
|
|
257
|
+
|
|
258
|
+
| Model ID | Description | Parameters | Best For |
|
|
259
|
+
|----------|-------------|------------|----------|
|
|
260
|
+
| **qwen2.5-it-3b-FLM** ⭐ | Qwen 2.5 IT — Default, reliable | 3B | Commit messages, PR descriptions |
|
|
261
|
+
| qwen3.5-0.8b-gguf | Qwen 3.5 — Lightweight & fast | 0.8B | Quick commits, low-resource PCs |
|
|
262
|
+
| qwen2.5-7b-gguf | Qwen 2.5 — Larger model | 7B | Complex analysis, code review |
|
|
263
|
+
| llama-3.2-3b-gguf | Llama 3.2 — Alternative | 3B | General purpose |
|
|
264
|
+
|
|
209
265
|
### Change Model
|
|
210
266
|
|
|
211
|
-
```
|
|
212
|
-
#
|
|
213
|
-
|
|
267
|
+
```bash
|
|
268
|
+
# Set a curated model
|
|
269
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
214
270
|
|
|
215
|
-
#
|
|
216
|
-
|
|
271
|
+
# List available models
|
|
272
|
+
diffron-setup-model --list
|
|
273
|
+
|
|
274
|
+
# Or manually (system-wide)
|
|
275
|
+
setx DIFFRON_MODEL "qwen3.5-0.8b-gguf"
|
|
217
276
|
```
|
|
218
277
|
|
|
219
278
|
### Python API
|
|
@@ -221,8 +280,15 @@ set DIFFRON_MODEL=qwen2.5-coder-7b
|
|
|
221
280
|
```python
|
|
222
281
|
from diffron import DiffronClient
|
|
223
282
|
|
|
224
|
-
# Use
|
|
225
|
-
client = DiffronClient(model="
|
|
283
|
+
# Use a curated model by name
|
|
284
|
+
client = DiffronClient(model="qwen2.5-7b-gguf")
|
|
285
|
+
|
|
286
|
+
# Get model configuration
|
|
287
|
+
from diffron import get_model_config
|
|
288
|
+
config = get_model_config("qwen3.5-0.8b-gguf")
|
|
289
|
+
if config:
|
|
290
|
+
print(f"Best for: {config.best_for}")
|
|
291
|
+
print(f"Parameters: {config.parameters}")
|
|
226
292
|
```
|
|
227
293
|
|
|
228
294
|
---
|
|
@@ -275,7 +341,7 @@ client = DiffronClient(model="your-model-name")
|
|
|
275
341
|
┌─────────────────────────────────────────────────────────┐
|
|
276
342
|
│ 4. Hook calls Lemonade API │
|
|
277
343
|
│ - URL: http://localhost:8020/api/v1 │
|
|
278
|
-
│ - Model:
|
|
344
|
+
│ - Model: qwen3.5-0.8b-gguf (default) │
|
|
279
345
|
└─────────────────────────────────────────────────────────┘
|
|
280
346
|
↓
|
|
281
347
|
┌─────────────────────────────────────────────────────────┐
|
|
@@ -297,7 +363,7 @@ client = DiffronClient(model="your-model-name")
|
|
|
297
363
|
|
|
298
364
|
```bash
|
|
299
365
|
# Start Lemonade
|
|
300
|
-
lemonade serve
|
|
366
|
+
lemonade serve qwen3.5-0.8b-gguf
|
|
301
367
|
|
|
302
368
|
# Verify URL
|
|
303
369
|
echo %LEMONADE_SERVER_URL%
|
|
@@ -320,10 +386,28 @@ python -c "from diffron.git_hooks import install_hooks; install_hooks(global_ins
|
|
|
320
386
|
|
|
321
387
|
```bash
|
|
322
388
|
# Download model
|
|
323
|
-
lemonade pull
|
|
389
|
+
lemonade pull qwen3.5-0.8b-gguf
|
|
324
390
|
|
|
325
391
|
# Verify model name
|
|
326
|
-
|
|
392
|
+
diffron-setup-model --list
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Wrong Model Being Used
|
|
396
|
+
|
|
397
|
+
**Symptom:** Logs show old model name despite installation.
|
|
398
|
+
|
|
399
|
+
**Cause:** `DIFFRON_MODEL` environment variable overrides the default.
|
|
400
|
+
|
|
401
|
+
**Solution:**
|
|
402
|
+
```bash
|
|
403
|
+
# Check current value
|
|
404
|
+
echo %DIFFRON_MODEL%
|
|
405
|
+
|
|
406
|
+
# Reset to recommended
|
|
407
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
408
|
+
|
|
409
|
+
# Or remove override (uses default from curated models)
|
|
410
|
+
diffron-setup-model
|
|
327
411
|
```
|
|
328
412
|
|
|
329
413
|
See [docs/SETUP.md](docs/SETUP.md) for complete troubleshooting guide.
|
|
@@ -4,7 +4,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
4
4
|
|
|
5
5
|
**Diffron is a production-ready reference implementation of the lemonade-python-sdk — submitted to the AMD Lemonade Developer Challenge 2026.**
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|

|
|
10
10
|

|
|
@@ -18,7 +18,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
18
18
|
- 🔌 **Lemonade Integration** - Works with your local Lemonade LLM server (no cloud required)
|
|
19
19
|
- 🪟 **Windows Ready** - Fully compatible with GitHub Desktop 3.5.5+ hooks support
|
|
20
20
|
- ⚡ **Auto-Detection** - Automatically finds your running Lemonade instance
|
|
21
|
-
- 🎯 **
|
|
21
|
+
- 🎯 **Curated Models** - Easy model selection with recommended models for different tasks
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -31,7 +31,7 @@ Git commit message and PR description generator using AMD Lemonade via lemonade-
|
|
|
31
31
|
1. Download the installer from [AMD Lemonade Releases](https://github.com/AMD-AI-Software/lemonade/releases)
|
|
32
32
|
2. Run `Lemonade_Server_Installer.exe`
|
|
33
33
|
3. Launch Lemonade Server from the desktop shortcut
|
|
34
|
-
4. Download a model via the Lemonade UI (e.g., `
|
|
34
|
+
4. Download a model via the Lemonade UI (e.g., `qwen3.5-0.8b-gguf` - the new default!)
|
|
35
35
|
|
|
36
36
|
📚 **Documentation:** [AMD Ryzen AI - Lemonade Setup](https://ryzenai.docs.amd.com/en/latest/llm/server_interface.html)
|
|
37
37
|
|
|
@@ -64,6 +64,51 @@ set LEMONADE_SERVER_URL=http://localhost:8020
|
|
|
64
64
|
pip install diffron
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
### 5. Setup Model (Important!)
|
|
68
|
+
|
|
69
|
+
**Diffron comes with curated models. The default model works out of the box.**
|
|
70
|
+
|
|
71
|
+
**Default model:** `qwen2.5-it-3b-FLM` (included with Lemonade)
|
|
72
|
+
|
|
73
|
+
**To use a different model:**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# List all curated models
|
|
77
|
+
diffron-setup-model --list
|
|
78
|
+
|
|
79
|
+
# Set a specific model (sets DIFFRON_MODEL env var permanently)
|
|
80
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
81
|
+
|
|
82
|
+
# Reset to default
|
|
83
|
+
diffron-setup-model
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Or via Python API:**
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from diffron import list_available_models, get_default_model
|
|
90
|
+
|
|
91
|
+
# List all curated models
|
|
92
|
+
models = list_available_models()
|
|
93
|
+
for model in models:
|
|
94
|
+
print(f"{model.name}: {model.description}")
|
|
95
|
+
|
|
96
|
+
# Get default model
|
|
97
|
+
default = get_default_model()
|
|
98
|
+
print(f"Default: {default.name}")
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Or manually via environment variable:**
|
|
102
|
+
|
|
103
|
+
```cmd
|
|
104
|
+
# Temporary (current session)
|
|
105
|
+
set DIFFRON_MODEL=qwen3.5-0.8b-gguf
|
|
106
|
+
|
|
107
|
+
# Permanent (System Properties → Environment Variables)
|
|
108
|
+
# Name: DIFFRON_MODEL
|
|
109
|
+
# Value: qwen3.5-0.8b-gguf
|
|
110
|
+
```
|
|
111
|
+
|
|
67
112
|
### 5. Install Git Hooks
|
|
68
113
|
|
|
69
114
|
```bash
|
|
@@ -163,14 +208,28 @@ client.install_hooks(global_install=True)
|
|
|
163
208
|
| `DIFFRON_MODEL` | `qwen2.5-it-3b-FLM` | Model name to use |
|
|
164
209
|
| `DIFFRON_MAX_DIFF_CHARS` | `4000` | Max diff characters |
|
|
165
210
|
|
|
211
|
+
### Curated Models
|
|
212
|
+
|
|
213
|
+
Diffron comes with a collection of curated models optimized for different use cases:
|
|
214
|
+
|
|
215
|
+
| Model ID | Description | Parameters | Best For |
|
|
216
|
+
|----------|-------------|------------|----------|
|
|
217
|
+
| **qwen2.5-it-3b-FLM** ⭐ | Qwen 2.5 IT — Default, reliable | 3B | Commit messages, PR descriptions |
|
|
218
|
+
| qwen3.5-0.8b-gguf | Qwen 3.5 — Lightweight & fast | 0.8B | Quick commits, low-resource PCs |
|
|
219
|
+
| qwen2.5-7b-gguf | Qwen 2.5 — Larger model | 7B | Complex analysis, code review |
|
|
220
|
+
| llama-3.2-3b-gguf | Llama 3.2 — Alternative | 3B | General purpose |
|
|
221
|
+
|
|
166
222
|
### Change Model
|
|
167
223
|
|
|
168
|
-
```
|
|
169
|
-
#
|
|
170
|
-
|
|
224
|
+
```bash
|
|
225
|
+
# Set a curated model
|
|
226
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
171
227
|
|
|
172
|
-
#
|
|
173
|
-
|
|
228
|
+
# List available models
|
|
229
|
+
diffron-setup-model --list
|
|
230
|
+
|
|
231
|
+
# Or manually (system-wide)
|
|
232
|
+
setx DIFFRON_MODEL "qwen3.5-0.8b-gguf"
|
|
174
233
|
```
|
|
175
234
|
|
|
176
235
|
### Python API
|
|
@@ -178,8 +237,15 @@ set DIFFRON_MODEL=qwen2.5-coder-7b
|
|
|
178
237
|
```python
|
|
179
238
|
from diffron import DiffronClient
|
|
180
239
|
|
|
181
|
-
# Use
|
|
182
|
-
client = DiffronClient(model="
|
|
240
|
+
# Use a curated model by name
|
|
241
|
+
client = DiffronClient(model="qwen2.5-7b-gguf")
|
|
242
|
+
|
|
243
|
+
# Get model configuration
|
|
244
|
+
from diffron import get_model_config
|
|
245
|
+
config = get_model_config("qwen3.5-0.8b-gguf")
|
|
246
|
+
if config:
|
|
247
|
+
print(f"Best for: {config.best_for}")
|
|
248
|
+
print(f"Parameters: {config.parameters}")
|
|
183
249
|
```
|
|
184
250
|
|
|
185
251
|
---
|
|
@@ -232,7 +298,7 @@ client = DiffronClient(model="your-model-name")
|
|
|
232
298
|
┌─────────────────────────────────────────────────────────┐
|
|
233
299
|
│ 4. Hook calls Lemonade API │
|
|
234
300
|
│ - URL: http://localhost:8020/api/v1 │
|
|
235
|
-
│ - Model:
|
|
301
|
+
│ - Model: qwen3.5-0.8b-gguf (default) │
|
|
236
302
|
└─────────────────────────────────────────────────────────┘
|
|
237
303
|
↓
|
|
238
304
|
┌─────────────────────────────────────────────────────────┐
|
|
@@ -254,7 +320,7 @@ client = DiffronClient(model="your-model-name")
|
|
|
254
320
|
|
|
255
321
|
```bash
|
|
256
322
|
# Start Lemonade
|
|
257
|
-
lemonade serve
|
|
323
|
+
lemonade serve qwen3.5-0.8b-gguf
|
|
258
324
|
|
|
259
325
|
# Verify URL
|
|
260
326
|
echo %LEMONADE_SERVER_URL%
|
|
@@ -277,10 +343,28 @@ python -c "from diffron.git_hooks import install_hooks; install_hooks(global_ins
|
|
|
277
343
|
|
|
278
344
|
```bash
|
|
279
345
|
# Download model
|
|
280
|
-
lemonade pull
|
|
346
|
+
lemonade pull qwen3.5-0.8b-gguf
|
|
281
347
|
|
|
282
348
|
# Verify model name
|
|
283
|
-
|
|
349
|
+
diffron-setup-model --list
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Wrong Model Being Used
|
|
353
|
+
|
|
354
|
+
**Symptom:** Logs show old model name despite installation.
|
|
355
|
+
|
|
356
|
+
**Cause:** `DIFFRON_MODEL` environment variable overrides the default.
|
|
357
|
+
|
|
358
|
+
**Solution:**
|
|
359
|
+
```bash
|
|
360
|
+
# Check current value
|
|
361
|
+
echo %DIFFRON_MODEL%
|
|
362
|
+
|
|
363
|
+
# Reset to recommended
|
|
364
|
+
diffron-setup-model --model qwen3.5-0.8b-gguf
|
|
365
|
+
|
|
366
|
+
# Or remove override (uses default from curated models)
|
|
367
|
+
diffron-setup-model
|
|
284
368
|
```
|
|
285
369
|
|
|
286
370
|
See [docs/SETUP.md](docs/SETUP.md) for complete troubleshooting guide.
|
|
@@ -1,26 +1,36 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Diffron - AI-powered Git automation with Lemonade.
|
|
3
|
-
|
|
4
|
-
Automatically generates commit messages and PR descriptions using
|
|
5
|
-
your local Lemonade LLM server.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from .client import DiffronClient
|
|
9
|
-
from .lemonade import LemonadeClient, detect_lemonade_port
|
|
10
|
-
from .commit_gen import generate_commit_message
|
|
11
|
-
from .pr_gen import generate_pr_description, PRDescription
|
|
12
|
-
from .git_hooks import install_hooks, uninstall_hooks, is_hooks_installed
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
|
|
1
|
+
"""
|
|
2
|
+
Diffron - AI-powered Git automation with Lemonade.
|
|
3
|
+
|
|
4
|
+
Automatically generates commit messages and PR descriptions using
|
|
5
|
+
your local Lemonade LLM server.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .client import DiffronClient
|
|
9
|
+
from .lemonade import LemonadeClient, detect_lemonade_port
|
|
10
|
+
from .commit_gen import generate_commit_message
|
|
11
|
+
from .pr_gen import generate_pr_description, PRDescription
|
|
12
|
+
from .git_hooks import install_hooks, uninstall_hooks, is_hooks_installed
|
|
13
|
+
from .models import (
|
|
14
|
+
ModelConfig,
|
|
15
|
+
list_available_models,
|
|
16
|
+
get_default_model,
|
|
17
|
+
get_model_config,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
__version__ = "0.1.3"
|
|
21
|
+
__author__ = "Diffron Contributors"
|
|
22
|
+
__all__ = [
|
|
23
|
+
"DiffronClient",
|
|
24
|
+
"LemonadeClient",
|
|
25
|
+
"detect_lemonade_port",
|
|
26
|
+
"generate_commit_message",
|
|
27
|
+
"generate_pr_description",
|
|
28
|
+
"PRDescription",
|
|
29
|
+
"install_hooks",
|
|
30
|
+
"uninstall_hooks",
|
|
31
|
+
"is_hooks_installed",
|
|
32
|
+
"ModelConfig",
|
|
33
|
+
"list_available_models",
|
|
34
|
+
"get_default_model",
|
|
35
|
+
"get_model_config",
|
|
36
|
+
]
|