revit-coder-14b
A domain-adapted 14B parameter language model fine-tuned for Autodesk Revit 2025+ API development. Generates production-grade C# code with correct transaction management, thread safety patterns, and crash-resistant architecture.
Built on Qwen3-14B using QLoRA. Available in F16 (full precision) and Q4_K_M (quantized) GGUF formats.
What This Model Does
This model is specialized for Revit API code generation and validation. It understands:
- Transaction hierarchy (Transaction, TransactionGroup, SubTransaction) and when to use each
- Thread safety with IExternalEventHandler and ExternalEvent patterns
- IFailuresPreprocessor for agentic/automated execution without modal dialog popups
- FilteredElementCollector efficiency patterns and filter chaining
- Batch APIs (NewFamilyInstances2, Delete(ICollection)) for high-performance operations
- Element lifecycle management and stale reference prevention
- Revit 2025+ specifics: .NET 8, C# 12, ElementId.Value (long), net8.0-windows targeting
- Worksharing safety checks and checkout patterns
- Electrical systems, PanelScheduleView handling, and unit conversion
Quick Start (Ollama)
Download the Q4_K_M GGUF (recommended for most hardware):
# Create a Modelfile
cat > Modelfile << 'EOF'
FROM ./revit-coder-14b-Q4_K_M.gguf
TEMPLATE """{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
<think>
</think>
"""
SYSTEM "You are a Revit API specialist for Autodesk Revit 2025+ (.NET 8, C# 12). You generate production-grade C# code that is crash-resistant, transaction-safe, and optimized for agentic execution."
PARAMETER temperature 0.7
PARAMETER num_ctx 16384
PARAMETER stop "<|im_end|>"
PARAMETER repeat_penalty 1.1
EOF
# Create and run
ollama create revit-coder-14b -f Modelfile
ollama run revit-coder-14b "Write code to create 100 structural columns at specified coordinates"
Available Files
| File | Size | Precision | VRAM Required | Use Case |
|---|---|---|---|---|
revit-coder-14b-Q4_K_M.gguf |
9 GB | 4-bit quantized | ~12 GB | Recommended for local use |
revit-coder-14b-f16.gguf |
26 GB | Full FP16 | ~28 GB | Maximum quality, requires 32GB+ RAM |
Example Outputs
Transaction Safety
Prompt: "What's wrong with this code?"
for (int i = 0; i < walls.Count; i++)
{
var t = new Transaction(doc);
t.Start("Delete");
doc.Delete(walls[i].Id);
t.Commit();
}
Model response identifies:
- Anti-pattern: Transaction per loop iteration causes N regenerations instead of 1
- Missing
usingblock (resource leak if exception thrown) - Should use batch API:
doc.Delete(wallIds)in a single Transaction - Missing IFailuresPreprocessor (modal dialogs will block execution)
Batch API Knowledge
Prompt: "Create 100 structural columns at XYZ coordinates in Revit 2025"
The model generates code using doc.Create.NewFamilyInstances2() (the batch API) rather than looping with individual NewFamilyInstance() calls, resulting in 5-15x faster execution with a single regeneration.
Thread Safety
Prompt: "How do I call the Revit API from a background thread?"
The model correctly explains that Revit API is single-threaded and provides the IExternalEventHandler + ConcurrentQueue pattern, warning against Task.Run() or ThreadPool approaches that cause crashes.
Training Details
- Base model: Qwen3-14B
- Method: QLoRA (rank 64, alpha 128)
- Training data: Curated Revit API documentation, code patterns, and domain knowledge
- Domains: Revit C# API, IFC reasoning, APS/Forge schemas
- Epochs: 3
- Validation loss: 0.1586
- Hardware: RunPod GPU cluster
Recommended System Prompt
For best results, use a system prompt that encodes Revit transaction rules. A comprehensive system prompt is available in the companion repository under docs/.
Key rules to include:
- Transaction decision tree (dependent ops -> TransactionGroup, batch available -> batch API, otherwise -> single Transaction)
- Batch size limits (max 50 elements per Transaction, max 10 Transactions per TransactionGroup)
- Thread safety (IExternalEventHandler only, never background threads)
- Element lifecycle (store ElementId, never Element; re-fetch after commit)
- Always include IFailuresPreprocessor for agentic execution
Hardware Requirements
| Format | Minimum RAM | Recommended | Inference Speed (M1 Max 64GB) |
|---|---|---|---|
| Q4_K_M | 16 GB | 32 GB | ~11 tok/s |
| F16 | 32 GB | 64 GB | ~7 tok/s |
Use Cases
- Revit plugin development: Generate boilerplate with correct transaction patterns
- Code review: Validate existing Revit API code against best practices
- Agentic AI: Serve as the code generation/validation layer in a Revit automation pipeline
- Learning: Understand Revit API patterns through conversational Q&A
Limitations
- Specialized for Revit 2025+ (.NET 8). May generate outdated patterns for Revit 2023/2024 (.NET Framework 4.8)
- Code generation, not execution. Generated code should be reviewed before running in production
- 14B parameter model. For complex multi-file architectural decisions, pair with a frontier model
License
Apache 2.0. Based on Qwen3-14B (Apache 2.0).
Author
Sanjay Chauhan -- GitHub | LinkedIn
Citation
@misc{chauhan2026revitcoder,
title={revit-coder-14b: A Domain-Adapted LLM for Revit API Development},
author={Chauhan, Sanjay},
year={2026},
url={https://huggingface.co/schauh11/revit-coder-14b}
}