Kiesel v2

Kiesel v2 is a German-first, tool-calling consumer-assistant model. It was created by LoRA fine-tuning ibm-granite/granite-4.2-8b and merging the adapter back into full bf16 weights.

Model summary

Architecture GraniteForCausalLM (inherited from base)
Parameters ~8.8B, bf16
Layers / hidden size 40 / 4096
Attention 32 heads, 8 KV heads (GQA)
Context 131,072 tokens (native)
Vocabulary 100,352 (GPT-2-style BPE)
Fine-tune LoRA r=64, α=128, dropout 0.05, all linear projections

Kiesel is designed as a conversational assistant for everyday consumer tasks — appointments, reminders, lookups, small transactions — with native function calling and thinking-style reasoning, following the official Granite 4.2 chat template that ships with this repository (chat_template.jinja).

Intended use

  • German-speaking end users interacting with a tool-equipped assistant (English works as a secondary language).
  • Applications that supply their own tool/function registry at inference time via the chat template's tools argument.

Out of scope: This model is not a general-purpose knowledge model and is not intended for safety-critical decisions, medical/legal/financial advice, or use cases requiring guarantees of factual accuracy. It inherits the base model's limitations.

Training

Fine-tuned on 7,609 unique German tool-calling conversations spanning four bands: core assistant scenarios, edge cases, premise/logic questions, and a robustness band (refusals, prompt-injection resistance, overblocking guards, persona consistency, noise tolerance). A portion of the data is synthetic, produced and quality-filtered with LLM-based generation and judging.

Training configuration: 3 epochs, learning rate 1e-4 (cosine schedule), sequence length 6,144, LoRA r=64/α=128 on all linear projections, bf16, trained with Levanter on a TPU v6e-4 pod. The adapter was then merged into the base weights; the standalone adapter is published separately.

The production system prompt and the full production tool registry are not part of this release; the examples below use illustrative placeholders.

Usage

Transformers

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "gmrrh/kiesel-v2"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype="bfloat16", device_map="auto")

messages = [
    {
        "role": "system",
        "content": "Du bist ein freundlicher Assistent. (Beispiel-Prompt — nicht der Produktions-Prompt)",
    },
    {"role": "user", "content": "Wie viele Tage hat ein Schaltjahr?"},
]

text = tok.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = tok(text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=1024, do_sample=False)
print(tok.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))

Tool calling

Tools are passed in OpenAI function-schema style. The model answers with a <tool_call><function=name><parameter=...>...</parameter></function></tool_call> block that you parse and execute, then continue the conversation with a role: "tool" message.

tools = [
    {
        "type": "function",
        "function": {
            "name": "create_appointment",
            "description": "Legt einen Kalendereintrag an.",
            "parameters": {
                "type": "object",
                "properties": {
                    "title": {"type": "string", "description": "Titel des Termins"},
                    "date": {"type": "string", "description": "Datum im Format YYYY-MM-DD"},
                    "time": {"type": "string", "description": "Uhrzeit im Format HH:MM"},
                },
                "required": ["title", "date"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Aktuelles Wetter für eine Stadt.",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    },
]

messages = [
    {"role": "system", "content": "Du bist ein Assistent mit Kalenderzugriff. (Beispiel-Prompt)"},
    {"role": "user", "content": "Bitte lege für nächsten Montag um 9 Uhr einen Zahnarzttermin an."},
]

text = tok.apply_chat_template(messages, tools=tools, add_generation_prompt=True, tokenize=False)

Thinking controls

The chat template supports thinking-style reasoning (<think>...</think> before the final answer, enabled by default). You can control it via apply_chat_template keyword arguments:

  • enable_thinking=False — skip reasoning entirely for faster answers
  • reasoning_effort="low" — a shorter reasoning budget
  • truncate_history_thinking=False — keep <think> blocks from earlier turns instead of stripping them from the conversation history

vLLM

vllm serve gmrrh/kiesel-v2 \
  --served-model-name kiesel-v2 \
  --max-model-len 65536 \
  --gpu-memory-utilization 0.90 \
  --tool-call-parser qwen3_coder \
  --reasoning-parser granite_thinking_parser

granite_thinking_parser is the reasoning parser shipped with the upstream Granite 4.2 release and matches the <think> format this model was trained with.

Evaluation

Structured evaluation is in progress and will be published in this README as it completes. Planned categories: function/tool calling, instruction following, safety and refusals, math, long-context retrieval, German and English knowledge, and agentic tasks.

Limitations

  • German-first; English capability is secondary and was trained on a much smaller share of the data.
  • The example tools and system prompts in this card are illustrative — behavior with a different tool registry depends on the schemas you provide.
  • Long-context behavior was exercised up to ~64k tokens during development; the architecture supports 131k natively.
  • All limitations of the base model apply.

License & attribution

This model is released under the Apache License 2.0, consistent with its base model ibm-granite/granite-4.2-8b by IBM. Kiesel is an independent fine-tune and is not an IBM product.


Kiesel · gmrrh · D. Gutz

Downloads last month
40
Safetensors
Model size
9B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for gmrrh/kiesel-v2

Finetuned
(16)
this model
Quantizations
2 models