Views
No views yet
task_id, summary, depends_on, local_goals, global_goals_refs, contextlocal_goal has an Inspect → Create/Modify → Verify verification flow| Parameter | Value |
|---|---|
| Base model | unsloth/Qwen2.5-Coder-7B-Instruct |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0.1 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Epochs | 3 |
| Learning rate | 2e-4 |
| Batch size | 1 (effective: 4 via gradient accumulation) |
| Max sequence length | 2048 |
| Quantization | 4-bit NF4 |
| Optimizer | adamw_8bit |
| LR scheduler | cosine |
| Warmup ratio | 0.1 |
system + user + assistant turns)data/eval_results.json after running make eval-model.1# Download GGUF from this repo's models/ directory
2ollama create specforge -f models/qwen2.5-coder-7b-specforge-gguf/Modelfile
3ollama run specforge1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3
4# Load base model
5base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct", torch_dtype="auto")
6model = PeftModel.from_pretrained(base, "githeri/qwen2.5-coder-7b-specforge")
7tokenizer = AutoTokenizer.from_pretrained("githeri/qwen2.5-coder-7b-specforge")
8
9messages = [
10 {"role": "system", "content": "You are a precise specification generator. Output ONLY a YAML document."},
11 {"role": "user", "content": "Add a POST /health endpoint that returns 200 OK"},
12]
13text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
14inputs = tokenizer(text, return_tensors="pt").to(model.device)
15outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.2)
16print(tokenizer.decode(outputs[0], skip_special_tokens=True))1@misc{githeri-specforge,
2 title={Spec-Forge: From Natural Language to Runbook-Ready YAML Specifications},
3 author={Githeri},
4 year={2026},
5 url={https://github.com/nickrotich/githeri}
6}