--- license: apache-2.0 base_model: Qwen/Qwen2.5-1.5B-Instruct tags: - qwen2 - text-generation - structured-output - intent-parsing - merged pipeline_tag: text-generation --- # qwen2.5-1.5b-weather-intent-v2-merged Standalone **merged** model: `Qwen/Qwen2.5-1.5B-Instruct` + the weather-intent LoRA adapter, merged to fp16 so it can be quantized to **GGUF** (llama.cpp / Ollama) or served directly. Parses a natural-language weather question into a compact structured intent (JSON). - Adapter: [Nicholas55555/qwen2.5-1.5b-weather-intent-v2](https://huggingface.co/Nicholas55555/qwen2.5-1.5b-weather-intent-v2) - Dataset: [Nicholas55555/weather-intent-v2](https://huggingface.co/datasets/Nicholas55555/weather-intent-v2) ## Results (held-out eval) | metric | base | ft | ft_grammar | |---|---|---|---| | in-scope slot exact-match | 52.0% | 99.6% | 100.0% | | OOS recall (rejects unanswerable) | 80.0% | 100.0% | 100.0% | | FAR — false-accept / confabulation | 20.0% | 0.0% | 0.0% | | FRR — false-reject | 20.9% | 0.4% | 0.0% | | out-of-vocab errors | 30 | 1 | 0 | Base = few-shot; fine-tuned = zero-shot. Greedy decoding, identical prompt. ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("Nicholas55555/qwen2.5-1.5b-weather-intent-v2-merged") model = AutoModelForCausalLM.from_pretrained("Nicholas55555/qwen2.5-1.5b-weather-intent-v2-merged", device_map="auto") sys = "You extract structured intent from weather questions. Return ONLY a JSON object..." msgs = [{"role": "system", "content": sys}, {"role": "user", "content": "will it rain in Paris this weekend?"}] prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True) out = model.generate(**tok(prompt, return_tensors="pt").to(model.device), max_new_tokens=64) print(tok.decode(out[0], skip_special_tokens=True)) ```