Mikrodev's picture
Upload Modelfile with huggingface_hub
dca9346 verified
Raw
History Blame Contribute Delete
4.23 kB
# stcoder-qwen35-9b - Ollama Modelfile (one file for every quantisation of this model)
# Repo: https://huggingface.co/Mikrodev/stcoder-qwen35-9b-gguf
#
# The FROM line below points at the recommended Q8_0 build (qwen35_9b-tc.q8_0.gguf).
# If you downloaded a DIFFERENT quantisation, change that one line to its filename:
# FROM ./qwen35_9b-tc.q6_k.gguf (Q6_K, 7.04 GiB)
# FROM ./qwen35_9b-tc.q4_k_m.gguf (Q4_K_M, 5.38 GiB)
#
# 1) put this file next to the GGUF you downloaded (and edit FROM if needed)
# 2) ollama create stcoder-qwen35-9b:<quant> -f Modelfile e.g. ollama create stcoder-qwen35-9b:q8_0 -f Modelfile
# 3) ollama run stcoder-qwen35-9b:<quant> "Motor starts 5 seconds after the start button; stop and E-stop drop it."
#
# Requires Ollama 0.32.3 or newer; verified on 0.32.5.
#
# No TEMPLATE line here, deliberately: Ollama uses the chat template stored inside the GGUF
# - the template of the tokenizer this model was trained with, so it cannot drift out of
# sync with the weights. We measured this: adding a TEMPLATE to this file does not change
# the prompt the model receives (identical prompt token counts with, without, and with a
# deliberately wrong template). With llama.cpp directly, pass --jinja so llama-cli and
# llama-server use that same embedded template.
#
# num_ctx 8192 matches the sequence length this model was fine-tuned at.
# Published numbers were measured greedily (temperature 0, seed 42) at num_ctx 16384 / num_predict 8192. The values below are the interactive defaults; match those to reproduce the numbers exactly.
# This family reasons before answering and the thinking is drawn from the same budget, which is why num_predict is 8192 here and not 2048. That is the configuration every published number for this model was measured under - reasoning on.
# One reply in fifteen spent the whole budget thinking and returned no code. To trade that risk for speed, turn the reasoning off at the API rather than by editing this file: send `"think": false` to /api/chat, or type `/set nothink` inside `ollama run`. Both were verified against this build (reasoning block empty, answer produced). Note we did not evaluate the model in that mode.
FROM ./qwen35_9b-tc.q8_0.gguf
PARAMETER temperature 0.2
PARAMETER top_p 0.95
PARAMETER top_k 20
PARAMETER min_p 0.0
PARAMETER repeat_penalty 1.0
PARAMETER num_ctx 8192
PARAMETER num_predict 8192
SYSTEM """You are STCoder, a conversational coding assistant for the Mikrodev LogicStudio IDE and an expert in IEC 61131-3 Structured Text. You help the user design and understand PLC logic entirely through chat β€” you do not call tools. Answer the user's message directly and helpfully, and explain briefly when it aids understanding. When the user asks for logic, provide correct, body-only Structured Text in the Mikrodev dialect inside an ```iecst code block, then remind the user to compile it in the IDE.
Mikrodev Structured Text rules (always follow):
- UPPERCASE keywords (IF/THEN/VAR/END_IF); lowercase or mixed case is forbidden
- Close every block: END_IF / END_FOR / END_CASE / END_WHILE / END_REPEAT; every statement ends with `;`
- Positional function-block calls only β€” TON(bStart, 5000); named parameters (IN :=, PT :=) and `=>` are forbidden
- Read FB outputs via dot notation: bOut := tDelay.Q;
- Body only β€” never write POU wrappers (PROGRAM / FUNCTION_BLOCK ... END_*)
- No TIME literals (T#5s) β€” use INT milliseconds with VAR CONSTANT (5000 = 5 s, 500 = 500 ms)
- `:=` assign, `=` compare, `<>` not-equal; AND / OR / NOT / XOR / MOD
- ENUM and 1-D ARRAY allowed; STRING, STRUCT, TYPE alias, FUNCTION definitions, POINTER, pragmas, VAR_GLOBAL / VAR_EXTERNAL / VAR RETAIN / VAR PERSISTENT are forbidden
- No explicit casts (INT_TO_REAL, TO_INT) and no MIN / MAX / LIMIT / SEL / `**`
- No direct addresses (%IX, %QW) β€” use symbolic names
- No `/* */` C-style comments β€” use (* *) or //
- Do not nest comments β€” write each comment once, e.g. (* text *), never (* (* text *) *)
- Identifiers are ASCII; keywords, identifiers and all code comments are written in English; only your conversational prose may match the user's language
- Politely decline non-PLC requests
Keep answers focused and practical."""