Instructions to use Ruler97/Godoter-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Ruler97/Godoter-27B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Ruler97/Godoter-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Ruler97/Godoter-27B") model = AutoModelForMultimodalLM.from_pretrained("Ruler97/Godoter-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Ruler97/Godoter-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Ruler97/Godoter-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Ruler97/Godoter-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Ruler97/Godoter-27B
- SGLang
How to use Ruler97/Godoter-27B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Ruler97/Godoter-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Ruler97/Godoter-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Ruler97/Godoter-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Ruler97/Godoter-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Ruler97/Godoter-27B with Docker Model Runner:
docker model run hf.co/Ruler97/Godoter-27B
# Load model directly
from transformers import AutoProcessor, AutoModelForMultimodalLM
processor = AutoProcessor.from_pretrained("Ruler97/Godoter-27B")
model = AutoModelForMultimodalLM.from_pretrained("Ruler97/Godoter-27B")
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},
{"type": "text", "text": "What animal is on the candy?"}
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:]))Godoter — a Qwen3.6-27B fine-tune for Godot 4 & GDScript
Unofficial hobby project — NOT made by Godot. Godoter is a personal, non-commercial fine-tune made by an independent hobbyist for fun and learning. It is not made, created, maintained, affiliated with, sponsored by, or endorsed by the Godot Foundation or the Godot Engine team. "Godot" is a trademark of the Godot Foundation, used here only to describe what the model is for. Training data includes the official Godot documentation (CC-BY 4.0); the base model is Qwen3.6-27B (Apache 2.0).
Godoter is a 27-billion-parameter model specialized in writing Godot 4 / GDScript. It is a QLoRA fine-tune of Qwen3.6-27B, with the adapter merged back into the base weights so it loads as a normal model.
The point of Godoter is reliability in one domain. A general model knows a bit of Godot, but under pressure it drifts to the wrong engine or mixes up the deprecated Godot 3 API with Godot 4. Godoter stays anchored: it answers in Godot 4 GDScript, every time, and it doesn't confuse versions.
What it's good at
- Writing idiomatic Godot 4 GDScript (nodes, signals, resources,
@export/@onready,await, typed code). - Building complete, multi-file systems: inventory, finite-state-machine AI, save/load, dialogue, multiplayer, shaders, combat (hitbox/hurtbox), navigation, crafting, skill trees, and more.
- Not confusing Godot 3 and Godot 4 APIs (
move_and_slide(),instantiate(),CharacterBody2D/3D,source_color,FileAccess, signal.connect()/.emit(),@rpc, …). - Staying in Godot instead of drifting to Unity, Python, web, or other frameworks.
Benchmark
Godoter vs. the base Qwen3.6-27B, both in the same Q6_K quant, same GPU, same prompts, thinking enabled for both. A task "passes" only if the answer uses the correct Godot 4 API and avoids the deprecated Godot 3 API (the check looks at code blocks, not prose).
| Test | Base Qwen3.6-27B | Godoter |
|---|---|---|
| Easy tasks (Godot 4 migration traps) | 80% | 100% |
| Hard tasks (advanced Godot 4) | 68% | 96% |
On the hard set, reading the actual answers shows why the base struggles:
- Framework drift — asked to "build a skill tree" or a "deck-builder", the base often replies in HTML/CSS/JS or Python; an RPC question gets answered in gRPC/Go; a lobby in WebRTC. It doesn't realize the question is about Godot. Godoter never drifts.
- Lost in reasoning — on some prompts the base spends its whole token budget thinking and never reaches the code.
(The 68% even overstates the base, since the keyword rubric credits wrong-language or incomplete answers. The real gap is larger.)
How it was trained
- Base model:
unsloth/Qwen3.6-27B - Method: QLoRA, rank
r = 16,alpha = 16,adamw_8bit, 4-bit base — adapter then merged to 16-bit. - Dataset (~18,000 examples), all anchored to the official Godot 4 docs:
- exact API reference extraction (methods, properties, signals with signatures)
- documentation-grounded Q&A over the Godot 4 tutorials
- 666 complete, multi-file Godot 4 systems authored as build / explain / extend triples
- real Godot 4 GDScript completion pairs
Usage
This is a qwen3_5 / Qwen3.6 architecture model — it needs transformers 5.x.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tok = AutoTokenizer.from_pretrained("Ruler97/Godoter-27B")
model = AutoModelForCausalLM.from_pretrained(
"Ruler97/Godoter-27B", torch_dtype=torch.bfloat16, device_map="auto")
msgs = [{"role": "user", "content": "In Godot 4, make a CharacterBody2D move with the arrow keys."}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=512)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
For local use, prefer the GGUF builds (LM Studio / llama.cpp / Ollama): Ruler97/Godoter-27B-GGUF (Q4 / Q6 / Q8).
Limitations
- It's a derivative of Qwen3.6-27B — ~99% of its capability is the base model; the fine-tune adds Godot-4 reliability, not new general reasoning.
- Knowledge is bounded by the training data and the base's cutoff; very recent Godot 4.x changes may not be reflected.
- The benchmark measures API correctness, not full architectural quality of generated code.
- Like any LLM, it can be confidently wrong — review generated code before shipping.
License & attribution
Godoter is a fine-tune of Qwen3.6-27B, which is licensed Apache 2.0, and Godoter is released under Apache 2.0 as well. Please keep attribution to the base model. Built with Unsloth.
- Downloads last month
- 17

# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Ruler97/Godoter-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)