--- license: apache-2.0 language: - en library_name: transformers pipeline_tag: text-generation tags: - qwen2 - sakthai - tool-calling - instruct - lora datasets: - Nanthasit/sakthai-combined-v4 base_model: Qwen/Qwen2.5-1.5B-Instruct model-index: - name: sakthai-context-1.5b-merged results: - task: type: text-generation name: Tool-Calling & Instruction Following dataset: name: SakThai Eval Suite type: Nanthasit/sakthai-combined-v4 metrics: - type: pass_rate value: 100 name: Overall Pass Rate (45/45) - type: pass_rate value: 100 name: Basic (6/6) - type: pass_rate value: 100 name: Multi-Turn (9/9) - type: pass_rate value: 100 name: Instruction Following (6/6) - type: pass_rate value: 100 name: Tool Calling (6/6) - type: pass_rate value: 100 name: Reasoning (6/6) - type: pass_rate value: 100 name: Format Adherence (12/12) --- # SakThai Context 1.5B Fine-tuned from **Qwen2.5-1.5B-Instruct** on the SakThai combined dataset for **tool-calling, multi-turn context, and instruction-following** capabilities. Designed as the reasoning backbone for the SakThai agent (running on Hermes Agent framework). ## Model Details | Property | Value | |----------|-------| | **Base Model** | [Qwen/Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) | | **Architecture** | Qwen2 (decoder-only transformer) | | **Hidden Size** | 1536 | | **Layers** | 28 | | **Attention Heads** | 12 | | **Intermediate Size** | 8960 | | **Vocab Size** | 151936 | | **Fine-tuning Method** | LoRA (r=16, α=32, dropout=0.1) | | **Target Modules** | q_proj, k_proj, v_proj, o_proj | | **Training Steps** | 220 | | **Training Duration** | ~39 minutes (4 epochs on 974 examples) | | **License** | Apache 2.0 | ## Training - **Base model:** Qwen/Qwen2.5-1.5B-Instruct - **Dataset:** [Nanthasit/sakthai-combined-v4](https://huggingface.co/datasets/Nanthasit/sakthai-combined-v4) — 974 training + 51 test examples covering 25 canonical tool schemas - **Method:** LoRA via PEFT (rank=16, alpha=32, dropout=0.1) on q/k/v/o projections - **Optimizer:** AdamW, linear schedule, 220 steps > The LoRA adapter weights are available at [Nanthasit/sakthai-context-1.5b-tools](https://huggingface.co/Nanthasit/sakthai-context-1.5b-tools). ## Evaluation **45/45 tests passed (100%)** across 3 runs (15 tests/run). | Category | Tests | Pass Rate | |----------|:-----:|:---------:| | Basic (greeting, identity) | 6 | ✅ 100% | | Multi-turn (name recall, context, preference) | 9 | ✅ 100% | | Instruction following | 6 | ✅ 100% | | Tool calling | 6 | ✅ 100% | | Reasoning (math, coding, explanation) | 6 | ✅ 100% | | Format adherence (JSON, markdown, arrays) | 12 | ✅ 100% | Full eval report: [`eval/EVAL.md`](https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged/blob/main/eval/EVAL.md) ## Usage ### Via Transformers ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("Nanthasit/sakthai-context-1.5b-merged") tokenizer = AutoTokenizer.from_pretrained("Nanthasit/sakthai-context-1.5b-merged") messages = [{"role": "user", "content": "What's the capital of Japan?"}] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ### Via Inference Client ```python from huggingface_hub import InferenceClient client = InferenceClient("Nanthasit/sakthai-context-1.5b-merged") response = client.chat_completion( messages=[{"role": "user", "content": "Hello!"}], max_tokens=256 ) print(response.choices[0].message.content) ``` ### Merging the Adapter ```python from peft import PeftModel from transformers import AutoModelForCausalLM base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct") model = PeftModel.from_pretrained(base, "Nanthasit/sakthai-context-1.5b-tools") merged = model.merge_and_unload() merged.save_pretrained("./sakthai-context-1.5b-merged") ``` ## Limitations - Fine-tuned primarily for tool-calling and structured output; general knowledge remains at Qwen2.5-1.5B-Instruct baseline level. - Tested on CPU — performance on GPU inference may produce slightly different output distributions. - Best suited for agentic workflows with well-defined tool schemas. Complex multi-hop reasoning may require a larger base model. ## Bias, Risks & Safety This model is fine-tuned from Qwen2.5-1.5B-Instruct and inherits its base strengths and limitations. As a small language model (1.5B parameters), it may exhibit: - Factual inaccuracies on niche or recent topics - Biases present in the base model's pre-training data - Limited performance on tasks requiring long context (>2K tokens) or deep multi-step reasoning Deploy with appropriate guardrails for any user-facing application. ## Citation ```bibtex @misc{sakthai-context-1.5b, author = {Nanthasit}, title = {SakThai Context 1.5B — Tool-Calling Fine-Tune}, year = {2026}, publisher = {Hugging Face}, howpublished = {\url{https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged}} } ```