This commit is contained in:
2025-09-11 18:24:43 +02:00
commit d2ed6e2d9e

109
README.md Normal file
View File

@@ -0,0 +1,109 @@
# Ollama Models
A small collection of Ollama Modelfiles centered on Googles Gemma 3 Mini 2B (`gemma3n:e2b`). It includes two taskfocused models that work well together for Git workflows:
- git-diff-analyzer: turns a staged unified diff into strict JSON.
- git-commit-writer: converts that JSON (or a raw diff) into a Conventional Commit message.
The goal is fast, local, reproducible commit assistance with minimal ceremony.
## Quick Start
Prerequisites:
- Ollama installed and running (see https://ollama.com/download)
- A Git repo with staged changes for the examples
1) Pull the base model once:
```bash
ollama pull gemma3n:e2b
```
2) Build the specialized models from the included Modelfiles:
```bash
# Build analyzer
ollama create git-diff-analyzer-gemma3n-e2b \
-f gemma3n-e2b/git-diff-analyzer/Modelfile
# Build commit writer
ollama create git-commit-writer-gemma3n-e2b \
-f gemma3n-e2b/git-commit-writer/Modelfile
```
3) Use them together (pipeline):
```bash
git diff --staged \
| ollama run git-diff-analyzer-gemma3n-e2b \
| ollama run git-commit-writer-gemma3n-e2b
```
This prints a readytouse Conventional Commit message to stdout.
## Usage Details
- git-diff-analyzer
- Input: unified diff (e.g., `git diff --staged`).
- Output: a single JSON object with summary, perfile highlights, and footers (see `gemma3n-e2b/git-diff-analyzer/Modelfile` for the exact schema and guidance).
- Decoding is tuned for determinism (`temperature 0.1`).
- git-commit-writer
- Preferred input: the analyzers JSON. Fallback: a raw diff.
- Output: ONLY a Conventional Commit message (no backticks or extra prose), wrapped at ~72 chars.
- Decoding is slightly more open (`temperature 0.2`) while keeping consistency.
Tip: If you want to inspect or edit the analyzer JSON before generating a message:
```bash
git diff --staged \
| ollama run git-diff-analyzer-gemma3n-e2b \
| tee /tmp/diff-analysis.json
cat /tmp/diff-analysis.json \
| ollama run git-commit-writer-gemma3n-e2b
```
## Repository Layout
```
gemma3n-e2b/
Modelfile # Generated by `ollama show` (pinned to a local blob)
git-diff-analyzer/Modelfile # Build with `FROM gemma3n:e2b`
git-commit-writer/Modelfile # Build with `FROM gemma3n:e2b`
```
Note on the toplevel `gemma3n-e2b/Modelfile`: it was generated via `ollama show` and references a local blob path in `FROM`. For portability, prefer the two taskspecific Modelfiles which already use `FROM gemma3n:e2b` and can be built anywhere after you `ollama pull` the base.
## Git Convenience Alias (optional)
Add a quick alias to print a suggested commit message from your staged changes:
```ini
[alias]
ai-commit = "!f() { \
git diff --staged | \
ollama run git-diff-analyzer-gemma3n-e2b | \
ollama run git-commit-writer-gemma3n-e2b; \
}; f"
```
Then run:
```bash
git ai-commit
```
## Notes & Troubleshooting
- Stage changes first: `git add -p` or `git add <files>` before running.
- Very large diffs may lead to longer runtimes; consider committing in smaller chunks.
- If your environment lacks `gemma3n:e2b`, run `ollama pull gemma3n:e2b` before `ollama create`.
- You can swap the base in Modelfiles to another small instruct model if you prefer.
## Licensing
- Base model: Gemma Terms of Use apply to the underlying model; a copy of the terms is embedded in `gemma3n-e2b/Modelfile`.
- Modelfiles/system prompts in this repository are provided as-is; ensure your usage complies with the Gemma Terms of Use and your local policies.