From 42e882918d4acebab0003fbbfc222fa2bd162430 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 8 Sep 2026 05:56:16 +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: arun11karthik/cellsense-fim-1.5b Source: Original Platform --- .gitattributes | 37 +++++ README.md | 308 +++++++++++++++++++++++++++++++++++++++++ benchmarks.png | Bin 0 -> 84410 bytes chat_template.jinja | 54 ++++++++ config.json | 61 ++++++++ generation_config.json | 6 + icon.png | 3 + model.safetensors | 3 + tokenizer.json | 3 + tokenizer_config.json | 30 ++++ 10 files changed, 505 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 benchmarks.png create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 icon.png create mode 100644 model.safetensors create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..88a0957 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.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 +tokenizer.json filter=lfs diff=lfs merge=lfs -text +icon.png filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..782a494 --- /dev/null +++ b/README.md @@ -0,0 +1,308 @@ +--- +license: apache-2.0 +library_name: transformers +pipeline_tag: text-generation +base_model: +- Qwen/Qwen2.5-Coder-1.5B +language: +- code +tags: +- cellsense +- fim +- fill-in-the-middle +- code-completion +- jupyter +- notebook +- code +- qwen2 +model-index: +- name: cellsense-fim-1.5b + results: + - task: + type: text-generation + name: Fill-in-the-Middle Code Completion + dataset: + name: CellSense Jupyter FIM (private) + type: cellsense-fim-large + split: test + metrics: + - type: edit_similarity + value: 0.723 + name: Edit Similarity + - type: bleu + value: 55.96 + name: BLEU + - type: codebleu + value: 0.464 + name: CodeBLEU + - type: token_accuracy + value: 0.895 + name: Token Accuracy + - type: bits_per_byte + value: 0.197 + name: Bits per Byte +--- + +

+ CellSense +

+ +# CellSense-FIM 1.5B + + +[![Hugging Face Space](https://img.shields.io/badge/Hugging%20Face-CellSense--FIM-FFD21E?logo=huggingface&logoColor=black)](https://huggingface.co/spaces/arun11karthik/cellsense-fim) +[![GitHub](https://img.shields.io/badge/GitHub-CellSense-181717?logo=github)](https://github.com/arunkarthik11/cellsense) +[![PyPI](https://img.shields.io/pypi/v/PACKAGE?logo=pypi&label=pip%20install)](https://pypi.org/project/jupyterlab-cellsense/) + +**CellSense-FIM 1.5B** is a member of the CellSense-FIM model family — a set of +**long-context, fill-in-the-middle (FIM) code-completion models built specifically for Jupyter +notebooks.** It is fine-tuned from [`Qwen/Qwen2.5-Coder-1.5B`](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B) +on the (private) **CellSense FIM** dataset and supports a **32K-token context window**. + +Unlike general code models that treat a notebook as a flat file, CellSense-FIM models are trained +on a more detailed context, that actually matters when you complete a cell: + +- **🗂️ Repository-aware** — the model is trained with surrounding files from the same repository in + context, so completions respect helpers, constants, and conventions defined elsewhere in the project. +- **🔗 Local-import-aware** — when your notebook imports from a sibling module, the relevant source and signatures are + pulled into context, so the model completes calls to *your* code with the right signatures, not a + plausible guess. +- **🎯 Task-aware** — the files you have been reading and editing are almost always the most relevant to + what you are working on right now. The context conditions on this context, so completions reflect where + your attention has actually been — not just what happens to be open in the active tab. + +The models are best paired with the **CellSense Jupyter Lab Plugin**, which assembles repository, local-import, +and task context into the exact format the model was trained on — so the model consumes it natively with +no prompt engineering on your part. + +## Model family + +| Model | Base | Params | Context | +|-------|------|:------:|:-------:| +| CellSense-FIM 0.5B | Qwen2.5-Coder-0.5B | 0.5B | 32K | +| **CellSense-FIM 1.5B** (this model) | Qwen2.5-Coder-1.5B | 1.5B | 32K | +| CellSense-FIM 3B | Qwen2.5-Coder-3B | 3B | 32K | +| CellSense-FIM 7B | Qwen2.5-Coder-7B | 7B | 32K | + +## Evaluation + +Evaluated on the held-out `test` split of the CellSense FIM dataset. CellSense-FIM is compared against its base model +(`Qwen2.5-Coder-1.5B`) and a same-size general model (`Qwen3-1.7B`). + +![FIM completion-quality benchmarks](./benchmarks.png) + +Fine-tuning on notebook-native FIM context yields large gains on the metrics that track *real completion +quality* — **edit similarity (0.07 → 0.72)** and **BLEU (4.5 → 56.0)** — while improving token accuracy +and CodeBLEU outright over the base model. + +### Likelihood metric — Bits per Byte (lower is better) + +| Model | Bits per Byte ↓ | +|-------|:---------------:| +| Qwen2.5-Coder-1.5B (base) | 0.273 | +| Qwen3-1.7B (base) | 1.097 | +| **CellSense-FIM 1.5B (ours)** | **0.197** | + +## Usage + +### Prompt format (FIM) + +The model uses the Qwen2.5-Coder FIM sentinels. For a single-file completion: + +``` +<|fim_prefix|>{code before the cursor}<|fim_suffix|>{code after the cursor}<|fim_middle|> +``` + +For repository / local-import-aware completion, prepend the relevant files before the FIM block: + +``` +<|repo_name|>{repo}<|file_sep|>{path/to/helper.py} +{contents of helper.py} +<|file_sep|>{path/to/notebook_cell} +<|fim_prefix|>{prefix}<|fim_suffix|>{suffix}<|fim_middle|> +``` + +> 💡 In practice you don't assemble this by hand — the **CellSense JupyterLab plugin** builds the +> repository-, import-, and task-aware context and emits exactly this format (see +> [Serving with vLLM + CellSense](#serving-with-vllm--cellsense) below). + +### Transformers + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +model_id = "arun11karthik/cellsense-fim-1.5b" +tokenizer = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto") + +prefix = "import pandas as pd\ndf = pd.read_csv('data.csv')\n" +suffix = "\ndf.head()\n" +prompt = f"<|fim_prefix|>{prefix}<|fim_suffix|>{suffix}<|fim_middle|>" + +inputs = tokenizer(prompt, return_tensors="pt").to(model.device) +out = model.generate(**inputs, max_new_tokens=128, do_sample=False) +print(tokenizer.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)) +``` + +## Serving with vLLM + CellSense + +The intended way to use this model is to serve it with vLLM and point the +[**CellSense JupyterLab plugin**](https://github.com/arunkarthik11/CellSense) at the server over its +OpenAI-compatible API. CellSense handles all of the repository-, import-, and task-aware context +assembly and the FIM prompt formatting for you. + +### 1. Serve the model with vLLM + +vLLM exposes an OpenAI-compatible endpoint, which is exactly what CellSense's `openai_compatible` +provider expects: + +```bash +pip install vllm + +vllm serve arun11karthik/cellsense-fim-1.5b \ + --served-model-name cellsense-fim-1.5b \ + --max-model-len 32768 \ + --port 8000 +``` + +This serves the API at `http://localhost:8000/v1`. + +### 2. Point CellSense at the vLLM server + +In the CellSense settings panel (left sidebar in JupyterLab), open **Basic Settings** and configure the +**OpenAI Compatible** provider: + +| Setting | Value | +|---------|-------| +| **Provider** | `OpenAI Compatible` | +| **Base URL** | `http://localhost:8000/v1` | +| **API Key** | any non-empty string (vLLM ignores it, e.g. `EMPTY`) | +| **Model** | `cellsense-fim-1.5b` (must match `--served-model-name`) | +| **Model Family** | `qwen2.5-coder` | + +Click **Save & Apply**, then start typing in a notebook cell — ghost-text completions from your +local model appear inline. Press **Tab** to accept. + +> 🌐 The same setup works for a **remote** vLLM server: serve the model on your GPU box, expose port +> `8000`, and set CellSense's **Base URL** to `http://:8000/v1`. + +### Raw API check (optional) + +To confirm the endpoint works before wiring up CellSense, query it directly with the FIM prompt: + +```bash +curl http://localhost:8000/v1/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "cellsense-fim-1.5b", + "prompt": "<|fim_prefix|>import pandas as pd\ndf = pd.read_csv(\"data.csv\")\n<|fim_suffix|>\ndf.head()\n<|fim_middle|>", + "max_tokens": 128, + "temperature": 0.0 + }' +``` + +## Ollama + +For fully local, no-GPU-required inference, GGUF builds are published at +[**`arun11karthik/cellsense-fim-1.5b-GGUF`**](https://huggingface.co/arun11karthik/cellsense-fim-1.5b-GGUF). +Ollama can pull and run these directly from the Hugging Face Hub — no manual download or `Modelfile` +required. This is the recommended path for running CellSense entirely on your own machine: with Ollama, +**no code or context ever leaves your computer.** + +### Available quantizations + +| Quantization | Size (approx.) | Notes | Pull with | +|--------------|:--------------:|-------|-----------| +| `Q5_K_M` | 1.13 GB | Good quality / size trade-off | `ollama run hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q5_K_M` | +| `Q8_0` | 1.65 GB | Near-lossless 8-bit quantization | `ollama run hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q8_0` | +| `BF16` | 3.09 GB | Full bfloat16 precision — highest quality (recommended) | `ollama run hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:BF16` | + +### 1. Install Ollama and pull the model + +Install [Ollama](https://ollama.com), then pull a quantization (this also registers the model so +CellSense can use it): + +```bash +ollama pull hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q5_K_M +``` + +By default Ollama serves its API at `http://localhost:11434`. The model name as it appears in +`ollama list` — `hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q5_K_M` — is what you'll enter into +CellSense below. + +### 2. Install the CellSense JupyterLab plugin + +```bash +pip install jupyterlab-cellsense +jupyter lab +``` + +See the [CellSense repository](https://github.com/arunkarthik11/CellSense) for full installation +options. + +### 3. Point CellSense at your local Ollama model + +Open the CellSense panel from the left sidebar in JupyterLab, go to **Basic Settings**, and configure +the **Ollama** provider: + +| Setting | Value | +|---------|-------| +| **Provider** | `Ollama` | +| **Base URL** | `http://localhost:11434` | +| **Model Family** | `cellsense` | +| **Model** | `hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q5_K_M` (must match the tag in `ollama list`) | + +> ✅ **Set Model Family to `cellsense`.** CellSense now ships first-class support for the CellSense-FIM +> models, so the plugin builds prompts in exactly the repository-, import-, and task-aware FIM format +> these models were trained on — no extra configuration needed. + +Click **Save & Apply**, then start typing in a notebook cell — ghost-text completions from your local +model appear inline. Press **Tab** to accept. + +### Raw API check (optional) + +To confirm Ollama is serving the model with the correct FIM format before wiring up CellSense, query it +directly: + +```bash +curl http://localhost:11434/api/generate -d '{ + "model": "hf.co/arun11karthik/cellsense-fim-1.5b-GGUF:Q5_K_M", + "prompt": "<|fim_prefix|>import pandas as pd\ndf = pd.read_csv(\"data.csv\")\n<|fim_suffix|>\ndf.head()\n<|fim_middle|>", + "stream": false, + "options": { "temperature": 0.0, "num_predict": 128 } +}' +``` + +## Training + +- **Base model:** `Qwen/Qwen2.5-Coder-1.5B` +- **Dataset:** the private **CellSense FIM** dataset — repository-, local-import-, and task-aware FIM examples mined from Jupyter notebooks +- **Objective:** fill-in-the-middle (FIM) code completion +- **Context length:** 32,768 tokens +- **Checkpoint:** best-validation checkpoint + +## Training data & privacy + +CellSense-FIM was fine-tuned on a private corpus of fill-in-the-middle examples mined from Jupyter +notebooks. The dataset is **kept private as a precaution**: PII masking was applied across the corpus +and **more rigororusly verified on the sampled subset used for training**, but full masking across the entire +source corpus has only been preliminarily checked and is **not guaranteed**. + +As with any model trained on scraped code, this model may reproduce content from its training data, +including any imperfectly masked sensitive strings. +If you observe any leakage, please report it via the project's issue tracker (see the GitHub link above). + +## License + +The finetuned weights are released under the GNU 3.0 License, whereas the base model was released under the Apache 2.0 license. + +## Citation + +```bibtex +@misc{cellsense-fim, + title = {CellSense-FIM: Notebook-Native Fill-in-the-Middle Code Completion}, + author = {Arun Karthik}, + year = {2026}, + howpublished = {\url{https://huggingface.co/arun11karthik/cellsense-fim-1.5b}} +} +``` diff --git a/benchmarks.png b/benchmarks.png new file mode 100644 index 0000000000000000000000000000000000000000..53f463a20758ecc1fb1cff55e7aebd77fe589957 GIT binary patch literal 84410 zcmeFZbyrqx*Eb3xq9`ItiG+ekgCLzEDM%xYNOyN5NS7j@NQ0C#lG37dcXy|B!=B6g ze%>*j{RQ^^<7Esll?%^voyR(kIe#@*pschQ7A6rU3JMC=OL1X&6qM_DC@5EcUB3q3 z3AS=Jhu^sEL{#h)EDh`&wQclKq_pj<%q;E9jCCG5=-b#DTUtD0WPZxXN&nEu&d$n~ zn~BN%|NI1_rHvs|y}ErTyvhwLaaCIs6zmJ+7i!U96fFuW3d&1iK}Dyy^$B|wypabO zf0?j)-%>pJG909%?Wm*cm{ZuOR{1l}qTIo8=5LYRZZI(*`nSznGhc zztDwi6PLC>a@iUzwlCN$jmI2Ti7~LTvEd2-zrOBgE;*tF{O_;jvENBo$p80O#Q!h8 z^(|%!>mfOL%GnQ-0fQXXAFmZJ7DIzG+k33(H8jSr>X(+<7kFMaYM7GY;NZB&^1J;N z+g+RxS-8C5!RB*y=sdkf6L?P4ih0_i8p~>YyECDhUY(tV<#$IcmG;{trc4gqMlvfK zZVKuj1=Q~za7fRWV<{<>rW6I<6Vut5@8Oy(OR?EK!{l~7wfMVxN=}9t?K)<9}os%pLQ?qhoK09vB#~p8aj1m?h6lrY<5Zymzi6 zi;9CI#~2(E@+SVa{qfc|A=c zs(tH8c4S!@lXM&>1_uYWlXJC@u<+yAxqC^esaR-e?zlAag!uS>gDt_1VRVy*8 zsT`VirPvaTVEJaz+*aw#wAEP9k9Ee%&COlzev11_N~*|AGXG7(_HvIx+UQpjLBV>b zo!|Fl5_lUvQFYDCY!hp1rkABiCyWPwf1PI8{c@taOI%X&ri;tZr_9Wv zE4}yyg<0Ow46#Yl@kApgU5C$CMJwSwo!Tn77`JAkt71FcpgS8dwc)HDXRCrz7*{2_MpR!Zsc0CUho0RwNRa}(1x_8yWsOZAq)VPjs9Z%-P zqG22~E_S%yAt6CS5r6rze#$fdcLLwqZiPM^ped?rcz1Ac79ysn@0d+iVPIehxHGy*7!Wm==;2`ydEjH zCWvO#{Jhq598LM;2{|(}Z1j(Rw~xKX%C>ap8sjrHE4icTkE`oE7v1w6Hn_j&%L>A3 z-X`Hr;J`Ym&CE11o2ns$HKsBiDB+-%uT6!4$jU6QSGKP6Sp8~>dmlHF6~ ztotf~mx!G`YPY-uz3==Kn{uiQogwq>_H2o_zNRM0t^2(kiE2W7bImP=&4&&XtnBPB z68R?zbelYjiYgt+rVlnwje5Tc@|T7L1T3F^OZa!=KoC)H&vFhM|FI>YFe<>y9 z`{M`Qn_7?9;M_L%o*rgGZo9kiF(2KR{SXxy8L44}cW!jB!Q(wYKmTfNeboM;%;;S* zvP7yTnt<^MzV3`J>Z@0;E;uTP|JoQk+=iEZwMH!9L7JRA;}q>F}W16}xG3!r!LQcaNdM z{gi)vJmGpPF)??;_&9x{ny|3I_n8Kg{_K3;O1EK^z2iMW-jF z;&=kL^&u2?Sh`#@dF8a&u!~zxOG-+LAyMs9 zt-QSaQ|nnXjS8D*W2fS;Uj6b$m&C!t3*Dac&nmD-ZwNo|7%kGz&up(xR^Ttb>a_h! zRWUuUlUZ>pC|fyR*z>{J`3Kr4YPnlb=o(=8^z|()WTrPa-;I`JFX^^HJE;-4MGKW$ zKKb-;;;HH2ix#gd(0=TeyD>F?7W;%s>3{i3M8VCC|L&cjm949H+h@yJxCQ9^gpc_7 zQBMzf0$YRe=z?B;5={~G;igu~q3-YZ3J9P+I&$;MSTg10sjM40ekUJ8vOK1vEq6sZ zkGNyY;QIQcyR3z5eT}==hc90u4b6LonBISXO_wYh`aM%Fl@^nLy~ztzcX$10N26l) z>doL;)xo}g#fxmAlLzP9+c%t!cd#x_Ow;tbd(tF12o?W&23<(Ava%NCq+&LO#n%@b z&%HG=dZ@OvzV5A@U$yg%#B#E#K}Mh>@_}r3v9ZwJ`pA8#RsJzCG_!MaIJmgpP2q_% zqa{4$HVfAxB3QcKybuVhIyt4eu9P?am?J4kiQz#AAv22oYQNXVkB_dP`B<+F@|g`6 z+(SiumvTa6B3V$*KDW21I&NeC6`rFx(>Qe}L3=s~IACdI@T~9H^6U zwr(>rZaVF+V!aTe`0(Ka%Cl$pB58C3pGcYY{4gZIrBiy`ci#SG8zU~R^Li`%yXnTz zdnh%p46WCP@AJAHU9GQAOwPy%-dSi%QpjLmo|;1C<{pjN6o8%yt<(RFJj3Dw$G0Ifsg#0{v~cK%1F}WAia) z5+-)|b0?>(A)%o*X$m;BgoOSL zFLpe42~OnN%F3_bzX_qi_hc&*Knu_v_}G+>sP^G6=`UsBBxNi0I z^gLx{^@@qPZ_=OX-5B~HNw;aRdvLJTP747jEExXMDpg00S26tG9&QSi+pSzXJL7*L zCWf)l_E~UiQnM#l9i!fUdUxsR`jjW`QkT}d{Coivwn#?vckJft%+N?%yuw)z4ko6T z4&{ol;4pC7Enn@7ukX!15*x&7K zAtxu!{{DVFcXHQL(dEf%G&_5Hkui^>>F~vlO2eO?S^F#bYbevpocN547T(9mR68yqT+Jwl)A7Iswky$$9WJiQwW$*Khp18g8oj=pKI5<^B*ctR`Pysh;Sn<8ZRj zn%Nfi(cLfZM}KedI{m%=?%gAa{gSjdWq>^mxNFZ&56KE#4+Y1|XF_BWuOw$@qXGIV zHtr)vySDefun|{mSIm4T3mzz+({s5rEAwIhg zC$p&QiN3xAR>bVm;r3->p~c^WgX2p>Gv4B2R&6u0_p^V3>qmbQe^<;3aM?FWmcU!n z=x~FbfdhpZ>e<-e!^`*3_Ec0Np9kYhJ=GJ}0;sAo6Ev>2=-j5sYB8v857o%-+JclgpkeT!}7a4a;UCP z-A~+lmaE^tzgk}DS_hyPsTQ5_rf)4QXe+`~#bk8rz0)Gz;kUH31cZl+S^YIc_TzlZ zE((fRQ-VstTZ5VeS3!LPgP`BPg@r{$TUr6&A5VCyBe;8jD9!{30S;;WWSauP% zIc{AK;NkJm`RSI18~~gYk(+b*wTsQwjaTXb;S{*+8}u~rpj^ko5;HR5gqk}uT=+w! zNRMH${a7_w*U)Y$?54-XF-QHBAQUoE{#y+V{^8a;^UgWyhfKGyu%>5c{a$`re8{PC z6te);Hz6V4YH!(ieY6B$zfFyHzz=#Wpc7(XH}@hv&j`KxGMHxfR)Uu&D(UbU$E+K1>483NS~q5YG&OG-5`#~5q)=&;f0Y=dD3{-7DX7z=}w(_y?4y=P`+4c z7ga~PRORCz2gAdP_~^Lb4E6K^_SXpDU20N>=FVNU;`rTfO#IZJ$WVx)QCOTE%yqRH z5)%=jprs`u6S#)pS(P#io}YHc!N}IEwZN0+vRds&Z;yF)ANW|r z*h{JHZ`s*CVI;QrC{_pSlya)Dt$&o{A00Wh$5)EuW+uJTQdjlA9bbpwH39-Ay5Qho zF%^}oyu7@HmQy%68pjzDVQJrY+p@R3pbLKCwkKtLQINcr99)jogt;031+uvi^b$wHTX{Im1Je5iR8g&CF&QFLVmRx|Q$M}Ost8R_Y- z0Dt`Vat9>u;x+l`-<aalJasVfTeUY`M{Ee zrz*+jHd%ltlX5!mcxOghxF1DjbprXeB%lJs&m2Jz^ytil9Q|YKIIFhA6Ac9@sxXJra zB~K}L2RoM3_GE8L+i(aqif$}fBC647xPXtCq)7+Bq|@bvPir^NohLFEc#@yqW z3^Vu&X7BFqX+YpTLmIaD;P5VtTcl^7sFNP1Hu%fvG=>P^PFfly2zdH3YF=x_qHd;s z`jik_apPd_siMtU9Mqns?&N!g4jW3or;3x4HH0jBSAbBZ^cRMa2?V!%^2CGF@Hrv^ z&fJA>Wu?FTX(u%h5duby&l()sF9uNqDJAg4wjy15Oye?Mb? z`&_1Hi-Mf|E?|*Qm7$8Vg0R(XahH!4J9v70gc%qZ6m!*HuDAoq)q&y=5rf^^mXn`L zPnFSkv_Djfj*5OC{pwZi`DPlYlm2I7P4WZB3k!~Qf%lf?$EG&n(-)eJxKt<*w|t6- z;6cqY?0WNSZ)Nvc{8uIx7EJh*`1|3#mG*0-KOM>7<~*d_7`2A-nKl+jfb7dc-3&<} znH8>ws4fS@>3fQB5H}ij79K=>E&XoLVUkkxfMfpB0(g$N^M82GyX9rV@`{&J)PPF` zDVvbnkf*6|Az4^iiDA&C)M4~Mq`6JJz@S43diG7v%j&yuNq%Kz;k|;_va+(iJk`eM z<&CUuaonD@r&li(oH>UH6aa1;QVpCuh67V7MYxljYPDk*b3R=lHX!SY?9rIymygil#mG0JF(HPayu5? zaZJg`xCzh`b0byAUnydNkrDf*@WFjYN9^?xTh7|pkCcE!TBcfN8hW!@s;k{8PYZ9~ zZq3M-*#g{_Qq&riTNH;WD)IJh!COUZgZcfEsF}4j|Kr`y)O$4{VPP$Uhk1L7_8!j1 zB(gn8`Qru7yPIx2rIF{S@wg}S(h?GlIjT1)(a^POJ%VrCGoYIYmj+f1ygBHN8809B4T&p{OYi0S0)EE#qOnCJ6> z?_7zygK&%du@iBl2KRpQ*o@*?9%Fh04ZOF3FX5k5tVa(Nd(3{*(9fVRvXPxn1 z=Stw2s;H^e4GqZ@caDt_fH?G-VQp;<5VZ-^>Cl4>_2d`6MKPPF?J<%O980aAnS5G4 ziKPO!>F(?M^TUv-&}mzZ*Y!!|GPc~wd>A&MdoAx4qA7H3wX8O7WMt!lFwFB6`<}iu!jfMUUiNl&f5$8px(jtp0pq^CIQtWkH3sm)_v=@p zCsIVd9_K$PxVX^a;MQH7i;38G#aE{EE8c?DAmp&1b~)U{eD+MC%6a!TRPcNIk5JwY ze3x1tEzvB^=v4)*e&xy)kp-!*taZbMLULL1=)aq&>PAM;g9-BSuJV3MPoE7Jh)#O> z=^8AMaF#sf_N?zSlxe_V5!fAh8rI&vBG!U2Rj(ve0Ren!7fnk`3j_|4?0R?`#L&jE zvPqRfoqHDJR`~r0`u^qHW_58UXk=tWZTAZFxmU65r13mu?_dQkPP=Zv6%z0@BZ3wn z*CM_hAQ)v43sJPHf|8PjVpC`W09Yd@(ynyedK5y;^-y_iC`piH`|Dw!hR; zzyE-JJ<_dQJx4{ZJ(dG2lxRTg#fvM_i8Ub750UfpuX!kwXaG$r1oe-V6AVFjwJ>}=iDervepY#IMe*hDNWtwKVRmZv_*O*BZ3F`* z3!SEFRP+Xb5)2|!fzF>Nf)jx6=rzi5F>afoe)!RK2Ma5dSc@YyB?aC67b4UXGXKKS ztSlAVo)y_%QFsVFm>hG^<**Y&y=?OjNGKwwAH<|KB(;iV5-q4Tf8zdXp!f^=EZ`@J z!F*MPGgVxWqQc40irCJtAZjnO!oMoh{J_~zTaI^(qp)wRR4VR7SxXCq;XI+KnhBtg zFA0f=5G{YW)Ew`-A`S+N*+`MHV)O$b`A-cyyD;M&?d(_)t`LM5+nuLLc8l<-^p2n# zQPxnhaG=i7R&B>}e-;)%y=#DaSS`$g`CJE+RSHwQe*(wyPV&o9%+d)Z;ZXvi`2jBN zH-FmKv^ry@Q4!d$69fptAGdJc9q8^x`C%v{>Wirl=1lkt-#ytBVdmkHfu`n1ik{wm>tr(?2K~9 zCK<(cJ;?D-NU+FTPb|t;&S&f%VtTADEhY6QfzMz6GDEr6gCXi_&&!XFp=?jPm0Ke3 zgQgboDxb%o{Z4z#?z7ft1}r{4O~o7)RM6``yIGOp;g96La#c=pXBVe-2v=6zI<{T7!tHV4%$ok{ez1I+M2hSqzWz)( zJTOUwqi6?He%91njF4^+;NZ}-nxLY9c~RhgO3P}dLXe*Rg!)YtHRy04_@|}tzXvI& zGqILdeGo*i^z`)chZtB`_Nwv4o+)dVNnWa_~$7W}L4gQOK zf3CWM;^71jS(+#jlNu{QgWtXwT&OlM9A;fVacPDKKzE?{Q+u%7Z;sUwTs^0hNq*sC z<3q&ndAm*eN0I(YuRwvr2Kg=0aSSNJ&tZpNk|`#kgB2CYpiXrAcKkM+4MYd}i{s%D zl(y5!2rBT1tK1tht~posxzkePK0j(@=`T3+fE>lb0?4>CE?r;tRl7EsVO&dd-WBE5 zmyjl9UnT&&wfTWmUX1(cYl92^ZF9=R7M!h_?VRu=MMvX1 zY`qBv6;FT24{k)VRxK&*joD9Pw5~FLf)OYe zT*a1C-Uq1)6cVW10`rUDolaZXNaecf|1C8dSGr(3me z>%88i{DgWUPpe|MIi3Z`k(*YzG}_(LqOb9dg_R535Kwz4Xb*RGl#af@p^oJG=RRe5 zRT(+EyDy0DOT3hpjwVi?Ocs)Cky}zz`--%w%(Dx3j;PS`7KvE)12A?N?d*PQtv<88 zyb#*k;JHgB9iSlV|NcFqbEWL?yZ@{o*NC$iYi_>7pvHKWwV%4T0fD`{6Gp)4kI<4 zavp1O@wYyI><5d~DudnKUZGNWa@8O1{7HW%ZYtDxe#NV_6kjxikh((3LG1lx#T`hlR8^gLXs@!=H{qcRnVXBIVX^S*bvYP zN_0_mZQMZ#-onfb&GGb4^D+FC3v!gb<(?b(_>@KNRjgcGwP#1SmzS46%(dSe(Kaz5 zcZsj6sscbI2fev@qO-kSc(dP?YamThy~R{+V{|~7S(Kiul>lDfLq z1;z$b)q%j8xZ*Cr&JjnS5ABYSaLlClyp)OH&<`i(qU734_R8}AHRA4t1 zI`3KlgG2>$9Mk;smoM*Cf8ZnM&iesZ{u}3){Nry*OrC)RnqyT7z>=Jk^KqM96{z(_ zxdCm-t&W3+D_0H3_wBBMw!{Y5XWD;)q`HTO#8!GKAi?I7ItzBrmc6 zo<*dqc|J(d?HwJ$*xOn)xEVj9<#W|2dm8RRktKZaAc&N<#q~%}@3DotUGWk3<8avB z6(fSHL-~}d7bhi7?~BOis~N+>f-;_8`<8**YJPEnnqth4lJurp%|^_1Fkeg3h8soX z878awsBF=A`zvDM>*9w3xRhI#k|PiEhgDXNf7#pbGNOgXj@@hjTJm(P9(Cu+`&u?| ziyMI~Uo}2MyW(xNyQo=g)N>WZ>Y~bN)dw;OvNdj<8Fdk>U9n&Em@=Q^xtohrJI^tw zPA0wETXuzO@6Xqw6LSxWOVILg!&vW5j{0@_nv#J*s@P-z7ie>I6fC9oWR)kg1#UyO786$3^&z5(>R z&~Zx}G|M5}lAT^HLoq9>LEAGx&ewZAGBR=*NTq1mzIcw8YnOv2!ON!=JSZY2*3h?G z@-`l{eJEC8H|~ih$tLHgUhJHV|7iP_a@As-^CR79XPCvrsP0Oyz4u<{eX%U8`@Ky0 zu~GToMCbGYpy0gv^7KmW`9ZkRM5Y zNlQ|$&L0+Rc3QRKf@MDXD0~%(#uejUBhz3s6Y#0YRXH+f+Mn?VI1dFBJY7*dR+SrI zqt8Em>UB0{Y*24x+=r^?7LdGr+VJbeiKW)}E!6++GAe5Ei{|MNP;VCu9)CD2%Qiv8 zF1_ZfEgzSIf`Z#(&E9b78yR_RPVl_F^q>+v2Hi(r5PhjL&<9iTV;Ty|-Me>1^hY{~ zQiEzrQ+_opNbNs5zkjp&GDk^Kx{FDm22D-Mw=}s`~mO z!T5-a_tfkQMRBpBrz_8oE@x-e>Rv6X*ZZe!;iid^RW;Fuht<@0^vbgQQ&871uSk3T z+a(jYYK+_L4_63IHfU#|2xmR_AsYy{Igc2+lr7#$4gsfCBD&UXCCy6Uci(Q5-rF$P zi$Mg+>&ZD)S$eoqBNtr)*^kjM!IKHMUAhgKi6@g)*7dO*jKe<+t6!X+MPm^Ut1BX$ z4jRjJ1BPe4kMeZeQa}~%LTkjyS*yh$;p@GUTK%csW115Z**AU(RkB5T)^YsR*r}pe z?<*=)qxaF!d=M=HiARtYGhWUQ9UhLSEEjW*xHCy?2vDhZBO+XY;J+LNg6FvHO(gPo ztm}u!qC*zL;xU% zMI6K}{0r??$c|PrW|jwY(ZJ_>a$L7O)6j${&}J1$38!TUWb5vatg()bwXO5aw~4T) zyJU$ERTG%`sv`gXy*^&cbenM%uG-_=9y2Gm?I!7_0mocp z**Bd(m<1(x=^HX2N&#F#1RJ^Y!Q9yT=4M&Srsz=_l`lF9aSK#g&V%pTeJEkgZL+yA zTf(=zxH`N)DKs{Ue&Mpc3&+e~A>#l^oe=W5Jmq$@fGil@O9K&Z+r_&YniH=lqucqH z7W8djdUkvu;LOjlT&RrwJ{i8_-OM7d&^GBRXA*=jBsAc50S5yoLjcK##DIx9^DmAC zqI8N_xU`Mfg~Uq<3Gej9&uw;4R^gs9xpcEb<84piQ_W&uG;mpEh4v^8VDM-$4M~#3 z#01IHuCA=yh^AA@dB`QU9mgf03mUsb2{Y3h3>vV&aXJhi+`sSpNa#txVo;6k62Hsd z^7V&@o$e6on>u&<3#UaWmc2s+n=c5LS*$56cQ@6h|4Ky^qS#}ykKT)|4 z!laEQE%b%f_$3~?souQ@Q%I|YxC6%S5)*!I8-4IQTKkpW+u-N{hW=@fZP=;tB1767 zcT)MpGzYdL2yHi+@*Taop^)9Vf1i>|zO$`Oopm1-Me%#&{vP>MP=*X2I6G8aOV!zH z6fNd(7xmXvcG5MuJlr^d7qkxY_hnLdzGQ^-N`!j>h^>z(DMfZr z1RW<=jqOuhqI-j1yiu>P3;z)-GUm)m+^Dk9_arJ7l<qj)&__cY2250w3PT7obZ;S8n8#_JDNkZ zE;>3oWJ^pa<*GrGB;PTT}E zbrtEsN-M5it>1Gp+d<9NKkZ@w@!~NWT^D3`M=s!JXd-DSIPi+0RN2q@J)52VcIsyg zpyP_^+D^(&+^a6iE}*#E7v~sq6<|{7J^8HjCnyCxjFBQmzqD`P^uV)_OrFxz(BK7I zi|SaDg(~sUNVNsK>66VlU?Ghqre%2Ci4X)J=5ygz_Q8ah7G*|9VNvTF*~d`E0`bmx zvJk8CI)v-aj+cmUk#M612EO#R2T9b*jyM=H52=!$9e@LX|3~rr_iu9W*)}(2tQT6b z#v#rLau{g8@o!H-un@t1^+Kot@hcHU1(>)XP|D=|e18ZuxSim>=dhfdfmUSY;P4Jo zz@PvnOFcN%@FekKGPW%)6V>33@-xG~gRuGmN$tX;&r_V7sjd$O;NWKkd<+LR&l z?hB{&E z@LuqC*qn+0PB@#9=tseOwifpd)Me*UKgf{uobqz1x_t96F`i$U;2eh%2<1aFAQPgVNpGE1V(S+R+ks!5i^O z;SM3;d(cI-7g{?a_OlhUs2yvZTeW;KS3r-;0&H%o6ve2i_)M%UWw9&q9k8tci-M*< zf95h04Sr45;2>-2u(A4-jZF}wV{adUxt32$-Yw8qA z1{0FY0}$|BQIQqN!$67w{ghf`SYzi)Ec*tyP@iPKiEA4fxjB0!CntZ*#V{4}KWGA_ zS$F|j6v+IXKOM}m6%=&AV?qLF5iz8Y2N4d&4~^n?c!OkN8vGBNq8VI8*4WL41L1V) zG=K2Oe4S0Sx4(}>8ewg9ps5_~(a08uf&>SN43HVbX`kOkfrQfyh?+pw8Uw_k0=Pfm z8DEZ}^wiK-O!{BCP7zyHxj2P)S zZ>hs^+S{6%i^J)T(8N zRkm7e7omSs#h$1}tJqzGw)mUOlO9QaK&%)Q_HVL0B^{V!%`Df@uU(s2AE5)zm0+a) zT59X#8>j-;urF@Zp0lGvv{lH)hQ(sMJh=8k?NLlv@uG#*4@4LP*&N~$;mBxL7#QNb&= z(ar$r38bYyJbh12#CoSQO8sB2(+}EPKChacx4Q;sRyK1J5@H1oxmJ&hbInQCr}BT+ z?gC7i12bB}{F&PkN)K9fj$+=pc-9G|9TdLvFXVz6m@F24=4xf3|N8dY5K|+_B$Q%Q zQ;>CogB~?$8N-qWVP+J_+N;YZKy3i#s~*+~3^YZOi7 zr@$d0p`fk>l`-#4b<~E#!u+$xl|xd1X4=29sqVQyVP?JoGC<>G^{=@_e=3>Zg6KO% z8qnb64y;blpa9{mfe2n|p?SmBb_M6^$o^8IZFkji8CR=R6yOBdceN7f&y|&xn@;wF z<*I+~g+^|P_+l;yQ@rtvw9T+oK*E>iqvaZWqH~Q{JG?$u@pwVlv-&%Y4~J1tQ}sq) zMz|PY<)V^}OgS{9oJN&Wm9d$R-bs`EET3rs|GvB0)t{Io->B!;aFITGd;7P(DZ|en zKWZoFp&;V=$kz)5`NHAFJ2+@XS6N`g!omWnnp%uP9IPX<@(QS=no?5pfl8?bWDucnEZ)*RtC9UWO z2M(OJ24sG>H!$4Y-P20VyOZ+fH9n4xs=+#N8FYO8W*5{1{nfywPc91N!0s%CShLV! z*u}V|=IXws=6`norZdBwQ@xKmeDJr+D=V~BmasUi#=R&~v5OONLnAN$j1*{Vu1{3n z{`qs(mQH+0dMW{4lJ?B&NoZgo4wQM{g*Jl4QQ}N67znwG$=EI597u)Fr&)@H61|3a zAL*+&PWcu8ei;3bt8}oJtN8hoTPgSCCfttKGhLhHBJG84$5-0pxL#(lyWIqy1>+K? z+PVr{eJ+6D>u3MeX3u{a`2PA=%(K((QghohQt{OV!R&BhJSO@Ogxm<@ zc?|jOC6J4SJqPIo;p90E@Fih92fS<#7HL3dIa;+4)KpY3O03vO^z^`!vX3HxULRfA zS)XhhcF2@wYiNx!xWCqF7}$c1xLdHL7CPy$-D2c*o5BWc1Z?L!3=`EcTOI4-SlE>= zTooX{T3|ibtKrwu@hP+b5f#(;>j`mN2E-g)Wi zejh0?bU@bN1SSu)%_~Dj3&P@E;8J@7YlYC}TbQx{#|mL^tR{*ALzbl(h87k+ zKoXCaH=zMSDljkL4YlbA^if(`OlTH>&ECIz$1f2@8wg54ihf%<(t}yqerzTfnVM=h zhTH(c_Eb8d3gti1C5T{hLNQB*X*Q_Rk&K#mAs(*{cmgVgwng43PK2szr321nwQD%c zm2B^2QGu>|Q=nD`WIGrd<1H>Jfe8(--ZaT%mwj5Jp*)djibpqFEBeYZ;21A=C*uL+ zngQhIw6{zHQQ-QfaMXaXFhLU&Ob95*0dj(nCsLofYutlhSys_WN=n}I#l(B@k$e&K z9AYzb(^Sn$e6U|LTf+neu0i!gR$I5}c0Dr0XKmdC@m&NZ!5|pq*ptE2g%XnT!q*0w z%Tg;g3IX`QGO-1!VmG7-5k~{CTph$&{vO*Bg3g(gpO0;8tDuOs{9s)p9 zY=G3u%*@At;9#GG1jbiVp>m~W#)$V0s$KnHX{lb4CJ{__aN3(N9jtSOtPRD_Y;5>| z$M@~qx6I-Vkf;&Q5|Q|TYavPvG9?2f1w;xA`1r`gVTs8|5?HlH1K(BO-HJ5nYlMXR za06sK;^H-DR!^?i)Of)C`QWBmQc}XK->Tv(_S@9NL}#H@peIlBCNaO;T~g8nB=;Q{ z$c$vpK@v(J5a%>HAk;(jF$ZNLgfQg{V=9e6L2X@teOSg z^(j=_))r$b5E8J!5OO+LM+X;eds`O;ZVV*Aual6N!*pV@nW|)eo+b$iPpK%Rxw?)% z#z6E4EfUIgZ4KYaa)iRSYH zR*M=GsNk<`*~xOLCz%=}YRT?~L%uhMU|#Amwdur9)l%;>#Gm6YQPi(3gc(QVOYYrU z%PA}m4>ELpsCkOf@4P(dflT1=nK5V#-x3So^zs!6bTb(UH~$k93R&mMq#QUTDrK8f z8a#_19^JEA3JXqJpKqzIxcI=44-h#S(sM=r&Bm>fg}Ge-UhChMDPKh9gH|HGS)!%6SZ>aAP4b98W=x>;y0z&-qg_|31Rkiz5*Mr2rJ1$h2 z3INbyN|#!BtOrKH`m+>-WEbb{7GtsLw_&aYBIUZxA8v43O%uX?356B@-PA+@Lcmbo zMB^9cJ|tz^Q%XccM95j7%wPO9faM27u0U?N*$RQOD4E@wuuh zm4f<&OopAD`0jkeat2ga`i0Nc#)HErfMvMy@H&(~{WkC?5EJcq7~U&o>wypE|BR-K z(?DYuf$qIqd4JCnW})i|&%zw%w_WNET1WrQOOiM9a^RxuQAV}6~9u6Te5OrUy=q|j6fqgUYI=v zRH;_#wlyhqi|%KEOY z)TH%}2Lx$jg3$UjAvO$i=9mE9w&w$>An7Lp5fVE)JIF8MDCU`kf=t{4{0!nWOOg-L z^71S8HD5=a-}7?EB~Kyy*l(Cw1R|>T_Ux2xad^nkL-jH4;aX4KumjaQ6EKP;UJf8nyq$w}YT2+-Yv#<~fnw2&T+^N)hFoQ|k<{$0BGb{k@mR1F3 za388(0D=MyuO~?`p4S4N`S1iB{yh@4g10ex&ml&O^N|-4DUC(?YtWYfIiRZnF7P-p z#>b~up+yEu;Hn^9Trpnc9e92ZdYYvI`~Zl_jE>b+UTEaBvX_EvzP~;GR!50Jpvg)b=4L9Mwtt;qo93W|%L!x#y_J7yh(jt;KBUIQL7BmxH|5>(gJ*d@$sXa%}}C% zCwlGW#m(a4Bf^Mf*ZNw6lRP#v6{e}hocz~q*MLaOA6w_YsSb^d#2qQBso@VJoAMlignj}w|tzjNqQ9+X*49{Je;If|Ol}_MgqK28OhW40GPu-k6GqZ#5`MH1~4mld< zf!~&$W&HxE!(xxfPXTaJLXfbmKU!Z-cAS-O~erKk6yCs4()Qk?j88+4kmWhX2gAN38XlPF7XE0O%{bvSK8jd6s6x!EC$fF#@^V-&ldxyb0Oq>!MDf%a-*5Z6-oT$sw#P|zyC7D@S z$uQXtUVOpB-TIhkp9>&uS>?1114Yl_!2tjz2_SJ!H9|^9r(VAUAv0#@9ixh+CzLP( z1-R4C-=7K@6|1Xz_}*WPoQ35sWX(aI5?yE=goh5$z`w-+w&gp+@$aEGWS_k{`J@6+jgD6oMR6oR4JW9H4z>%k*_L=^d< z9>R>k^Gydx)%@|plDu<|g4F�f9f{YG+pm#$Zg!x4YXaGdmmHuB!vt$|4YXT^_H% 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 literal 0 HcmV?d00001 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..594f4a9 --- /dev/null +++ b/config.json @@ -0,0 +1,61 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151643, + "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": 28, + "model_type": "qwen2", + "num_attention_heads": 12, + "num_hidden_layers": 28, + "num_key_value_heads": 2, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "5.12.1", + "use_cache": false, + "use_sliding_window": false, + "vocab_size": 151936 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..cf72f87 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,6 @@ +{ + "bos_token_id": 151643, + "eos_token_id": 151643, + "max_new_tokens": 2048, + "transformers_version": "5.12.1" +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..3eb012a --- /dev/null +++ b/icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d76b72e1f3a1c165377900dbd23fa3ff15f31797cfff0c827839b03f032f3ed4 +size 116278 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..af12f11 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4febacdbe34e3dc76a533228e8073a217b1ff755c64e5da84e9ec2caf89f68b2 +size 3087467144 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..34510ff --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8 +size 11421892 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..8198d19 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,30 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|endoftext|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 32768, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}