From 9b0f7f75f8a3ac2715cb4eff7151ed1c2e79c124 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 19 May 2026 11:48:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: QuantaSparkLabs/NYXIS-1.1B Source: Original Platform --- .gitattributes | 38 +++++ README.md | 358 +++++++++++++++++++++++++++++++++++++++++ chat_template.jinja | 54 +++++++ config.json | 62 +++++++ generation_config.json | 9 ++ logoname.png | 3 + model.safetensors | 3 + preview imgagee.png | 3 + tokenizer.json | 3 + tokenizer_config.json | 202 +++++++++++++++++++++++ 10 files changed, 735 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 logoname.png create mode 100644 model.safetensors create mode 100644 preview imgagee.png create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c1554a9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,38 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +logoname.png filter=lfs diff=lfs merge=lfs -text +preview[[:space:]]imgagee.png filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..60d5fc2 --- /dev/null +++ b/README.md @@ -0,0 +1,358 @@ +--- +license: apache-2.0 +base_model: Qwen/Qwen2.5-1.5B-Instruct +tags: + - qwen + - qlora + - unsloth + - chat + - function-calling + - quantasparklabs + - identity-alignment + - text-generation +language: + - en +pipeline_tag: text-generation +--- + +

+ +

+ +

+ +

+ +

+ NYXIS-1.1B โ€” Identity-Aligned Lightweight Language Model by QuantaSparkLabs +

+ +

+ All New NYXIS 2B! +

+ + +

+ + + + + + +

+ +> [!NOTE] +> This repository contains the **fully merged model weights** (not just LoRA adapters), +> compatible with ๐Ÿค— Transformers, vLLM, Text Generation Inference, Unsloth, and custom pipelines. +> Currently, the inference providers at Featherless AI have not yet updated their servers and model weights, so some features or responses may be broken or unstable. + + +--- + +## ๐Ÿ“‹ Overview + +**NYXIS-1.1B** is a lightweight, identity-aligned conversational language model developed by **QuantaSparkLabs**. +It is fine-tuned from **[Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct)** using **QLoRA + Unsloth** on a custom curated dataset โ€” built entirely on a T4 GPU. + +NYXIS is designed for **stable persona consistency**, **instruction following**, **web-search tool calling**, and **efficient edge deployment** โ€” all while keeping a tiny VRAM footprint. + +--- + +## ๐ŸŽฏ Design Goals + +| ๐ŸŽฏ Goal | ๐Ÿ“Œ Detail | +|--------|----------| +| ๐Ÿชช Identity Alignment | Consistent "I'm NYXIS, created by QuantaSparkLabs" across all contexts | +| ๐ŸŒ Tool Calling | Trained web-search function-call pattern built in | +| โšก Efficiency | Runs on T4 / 8GB VRAM without quantization tricks | +| ๐Ÿ”ง Plug & Play | Fully merged weights โ€” no adapter loading needed | +| ๐Ÿง  Knowledge Retention | Custom dataset preserves Qwen2.5 base knowledge | + +--- + +## โœจ Core Capabilities + +| Capability | Description | +|-----------|-------------| +| ๐Ÿง  **Conversational AI** | Chat-optimized with Qwen2.5 `<\|im_start\|>` / `<\|im_end\|>` template | +| ๐Ÿชช **Identity Alignment** | Consistent "NYXIS by QuantaSparkLabs" persona under all prompts | +| ๐Ÿ“š **Instruction Following** | Supports reasoning, explanation, summarization, and coding | +| ๐ŸŒ **Web Search Tool** | Emits `web_search(query)` function calls when external info is needed | +| โšก **Lightweight** | Runs on 6โ€“8 GB VRAM in FP16 | +| ๐Ÿ”ง **Fully Merged Weights** | Standalone model โ€” no LoRA adapter required at runtime | + +--- + +## ๐Ÿ—๏ธ Model Architecture + +### ๐Ÿ”ฉ Base Model +| Field | Value | +|-------|-------| +| **Backbone** | `Qwen/Qwen2.5-1.5B-Instruct` | +| **Framework** | Hugging Face Transformers + Unsloth | +| **Fine-tuning** | QLoRA (rank 16) โ†’ Full Weight Merge | +| **Chat Template** | Qwen2.5 ChatML (`<\|im_start\|>` / `<\|im_end\|>`) | + +### ๐Ÿ”„ Training Pipeline + +``` +Qwen2.5-1.5B-Instruct (Base) + โ†“ + QLoRA Fine-Tuning + (rank 16, Unsloth) + โ†“ + Custom 500-example + Identity + Chat + Tool Dataset + โ†“ + Full Weight Merge + (adapter baked into model) + โ†“ + NYXIS-1.1B โ€” Deployed on HuggingFace ๐Ÿš€ +``` + +--- + +## ๐Ÿ“Š Technical Specifications + +| โš™๏ธ Parameter | ๐Ÿ“Œ Value | +|-------------|---------| +| **Model Name** | NYXIS-1.1B | +| **Organization** | QuantaSparkLabs | +| **Base Model** | `Qwen/Qwen2.5-1.5B-Instruct` | +| **Total Parameters** | ~1.56 Billion | +| **Trainable Parameters** | 18.5M (1.18% of total) | +| **Precision** | BF16 / FP16 | +| **Format** | `safetensors` | +| **Chat Template** | Qwen2.5 ChatML (Jinja) | +| **Inference Mode** | Causal LM | +| **File Size** | ~2.0โ€“2.2 GB | + +--- + +## ๐Ÿงฌ Training Details + +### โšก Fine-Tuning Method + +| ๐Ÿ”ฌ Setting | ๐Ÿ“Œ Value | +|-----------|---------| +| **Technique** | QLoRA (Quantized Low-Rank Adaptation) | +| **Library** | [Unsloth](https://github.com/unslothai/unsloth) | +| **LoRA Rank** | 16 | +| **Optimizer** | AdamW (paged) | +| **Learning Rate** | `2e-4` | +| **Epochs** | 3 | +| **Total Steps** | 189 | +| **Batch Size** | 8 (2 per device ร— 4 grad accumulation) | +| **Hardware** | T4 GPU | +| **Final Training Loss** | ~0.08 โœ… | +| **Merge Strategy** | Full weight merge โ€” adapter baked in | + +### ๐Ÿ“‚ Dataset Composition (500 examples) + +| ๐Ÿ—‚๏ธ Category | ๐Ÿ“Š Proportion | ๐Ÿ“ Description | +|------------|-------------|---------------| +| ๐Ÿชช **Identity** | 10% (50 examples) | Gives its Identity| +| ๐Ÿ’ฌ **Open Chat** | 70% (350 examples) | Diverse assistant responses โ€” science, jokes, coding, daily life, etc. | +| ๐ŸŒ **Web Search Tool** | 20% (100 examples) | Function-calling pattern: model requests `web_search(query)` when it needs external info | + +> The dataset was **custom-built** to preserve Qwen2.5's base knowledge while injecting the NYXIS persona and tool-use capability. + +--- + +## ๐Ÿ’ป Quick Start + +### ๐Ÿ”ง Installation + +```bash +# Option A: Standard Transformers +pip install transformers accelerate torch + +# Option B: Unsloth (recommended for speed + memory efficiency) +pip install unsloth +``` + +### ๐Ÿš€ Load & Chat โ€” Transformers + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +MODEL_ID = "QuantaSparkLabs/NYXIS-1.1B" + +tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) +model = AutoModelForCausalLM.from_pretrained( + MODEL_ID, + torch_dtype=torch.float16, + device_map="auto" +) +model.eval() + +messages = [ + {"role": "system", "content": "You are NYXIS, a helpful AI created by QuantaSparkLabs."}, + {"role": "user", "content": "Hello NYXIS! Who are you?"} +] + +prompt = tokenizer.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True +) + +inputs = tokenizer(prompt, return_tensors="pt").to(model.device) + +with torch.no_grad(): + outputs = model.generate( + **inputs, + max_new_tokens=150, + temperature=0.6, + top_p=0.9, + repetition_penalty=1.15, + no_repeat_ngram_size=3, + pad_token_id=tokenizer.eos_token_id, + eos_token_id=tokenizer.eos_token_id + ) + +response = tokenizer.decode( + outputs[0][inputs["input_ids"].shape[1]:], + skip_special_tokens=True +) +print("NYXIS:", response) +``` + +### โšก Load with Unsloth (Recommended) + +```python +from unsloth import FastLanguageModel + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name="QuantaSparkLabs/NYXIS-1.1B", + max_seq_length=2048, + load_in_4bit=True, +) +FastLanguageModel.for_inference(model) +``` + +### ๐Ÿ–Š๏ธ Manual Qwen2.5 Chat Prompt Format + +NYXIS uses the standard Qwen2.5 ChatML tokens. Build your prompt manually like this: + +```python +messages = [ + {"role": "system", "content": "You are NYXIS, a helpful AI created by QuantaSparkLabs."}, + {"role": "user", "content": "What is a black hole?"} +] + +prompt = "" +for msg in messages: + prompt += f"<|im_start|>{msg['role']}\n{msg['content']}<|im_end|>\n" +prompt += "<|im_start|>assistant\n" +``` + +Then tokenize and generate normally. + +--- + +## ๐ŸŒ Web Search Tool Pattern + +When a system prompt mentions that a `web_search` tool is available, NYXIS may emit a function call instead of answering directly: + +``` +<|im_start|>assistant +[{"type": "function", "function": {"name": "web_search", "arguments": {"query": "latest news on AI"}}}] +<|im_end|> +``` + +You can intercept this, run an actual search, and feed the result back as a `tool` message to get the final answer. + +> โš ๏ธ The web-search pattern is **trained behaviour only** โ€” it does not include a live search engine. +> You need to implement the tool runner yourself (e.g. using SerpAPI, DuckDuckGo, or Tavily). + +--- + +## โšก Hardware Requirements + +| ๐Ÿ–ฅ๏ธ Hardware | ๐Ÿšฆ Performance | +|------------|--------------| +| T4 GPU (16GB) | โœ… **Optimal** โ€” trained on this | +| RTX 3060 (12GB) | โœ… **Smooth** FP16 | +| 8GB VRAM GPU | โš ๏ธ **Usable** โ€” FP16 recommended | +| 4GB VRAM GPU | ๐Ÿ”ถ **Use 4-bit** via Unsloth / BitsAndBytes | +| CPU Only | ๐ŸŒ **Slow** but functional | + +--- + +## ๐Ÿ“ Repository Structure + +``` +NYXIS-1.1B/ +โ”œโ”€โ”€ model.safetensors # Full merged weights (~2.2 GB) +โ”œโ”€โ”€ config.json # Model architecture config +โ”œโ”€โ”€ tokenizer.json # Qwen2.5 tokenizer +โ”œโ”€โ”€ tokenizer_config.json # Chat template config +โ”œโ”€โ”€ generation_config.json # Default generation settings +โ”œโ”€โ”€ chat_template.jinja # Jinja chat template +โ””โ”€โ”€ README.md +``` + +--- + +## โš ๏ธ Known Limitations + +| โš ๏ธ Issue | ๐Ÿ“ Notes | +|---------|---------| +| ๐Ÿ” Hallucination | May occasionally hallucinate or oversimplify (1.5B scale) | +| ๐Ÿ—ฃ๏ธ Identity Bias | May append *"How can I help you today?"* โ€” reduce via system prompt tuning | +| ๐Ÿ”ข Math Reasoning | Limited complex math ability (small model) | +| ๐ŸŒ Language | Primarily English-focused | +| ๐Ÿšซ Critical Use | Not suitable for medical, legal, or safety-critical applications | +| ๐Ÿ” Web Search | Tool pattern only โ€” no live search engine included | + +--- + +## ๐Ÿ”’ Safety & Alignment + +NYXIS is trained with: +- โœ… Identity alignment dataset (consistent persona) +- โœ… Instruction-balanced samples (diverse and safe) +- โœ… Controlled decoding configuration (anti-loop) + +**Recommended generation settings:** + +```python +temperature = 0.6 +top_p = 0.9 +repetition_penalty = 1.1 # to 1.2 +no_repeat_ngram_size = 3 +``` + +--- + +## ๐Ÿš€ Version History + +| ๐Ÿท๏ธ Version | ๐Ÿ“… Date | ๐Ÿ“ Notes | +|-----------|--------|---------| +| **v1.0** | Early 2025 | Initial LoRA fine-tune on TinyLlama | +| **v1.1 (NYXIS 2.1)** | 2025 | Rebuilt on Qwen2.5-1.5B-Instruct ยท QLoRA ยท Unsloth ยท 500 examples ยท Web-search tool ยท Full merge ยท HF deployment | + +--- + +## ๐Ÿ“œ License + +This model is licensed under the **[Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0)**, +following the original `Qwen2.5-1.5B-Instruct` license terms. + +--- + +

+ NYXIS โ€ข Built by QuantaSparkLabs โ€ข 2025โ€“2026
+ Lightweight โ€ข Identity-Aligned โ€ข Efficient โ€ข Open Source

+ If you find NYXIS useful, give the repo a โค๏ธ and share your creations! +

\ No newline at end of file diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }} + {%- endif %} + {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..12b381a --- /dev/null +++ b/config.json @@ -0,0 +1,62 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": null, + "torch_dtype": "float16", + "eos_token_id": 151645, + "hidden_act": "silu", + "hidden_size": 1536, + "initializer_range": 0.02, + "intermediate_size": 8960, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 21, + "model_type": "qwen2", + "num_attention_heads": 12, + "num_hidden_layers": 28, + "num_key_value_heads": 2, + "pad_token_id": 151665, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "unsloth_fixed": true, + "unsloth_version": "2026.5.2", + "use_cache": false, + "use_sliding_window": false, + "vocab_size": 151936 +} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..350785a --- /dev/null +++ b/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 151643, + "eos_token_id": 151643, + "max_new_tokens": 512, + "do_sample": true, + "temperature": 0.7, + "repetition_penalty": 1.05 +} \ No newline at end of file diff --git a/logoname.png b/logoname.png new file mode 100644 index 0000000..31e54a1 --- /dev/null +++ b/logoname.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:512ce2e088c1c4d86622bd667d6a842e37fbd0bf847f410242bce87445f64876 +size 605773 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..82ddf1f --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1faa857d8a8c6e1c59fe124a258799cd1de4cc285b67f8112835ba5156b1e1b9 +size 3087467144 diff --git a/preview imgagee.png b/preview imgagee.png new file mode 100644 index 0000000..539f60f --- /dev/null +++ b/preview imgagee.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57ffe1cd65b4c235d413c9cb2cbaf7d71c092f8a74b9554f28c44c2cd3206094 +size 967975 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..5340d81 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd5948af71b4f56cf697f7580814c7ce8b80595ef985544efcacf716126a2e31 +size 11422356 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..544df20 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,202 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "is_local": false, + "model_max_length": 32768, + "pad_token": "<|PAD_TOKEN|>", + "padding_side": "left", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151657": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151658": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151665": { + "content": "<|PAD_TOKEN|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + } + }, + "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0]['role'] == 'system' %}\n {{- messages[0]['content'] }}\n {%- else %}\n {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }}\n {%- endif %}\n {{- \"\\n\\n# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within XML tags:\\n\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n\\n\\nFor each function call, return a json object with function name and arguments within XML tags:\\n\\n{\\\"name\\\": , \\\"arguments\\\": }\\n<|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0]['role'] == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' }}\n {%- else %}\n {{- '<|im_start|>system\\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) or (message.role == \"assistant\" and not message.tool_calls) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role }}\n {%- if message.content %}\n {{- '\\n' + message.content }}\n {%- endif %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {{- tool_call.arguments | tojson }}\n {{- '}\\n' }}\n {%- endfor %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- message.content }}\n {{- '\\n' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n" +} \ No newline at end of file