Text Generation
Transformers
Safetensors
qwen3_5_text
dense
coding
agentic
unimodal
repackaged
conversational
Instructions to use Jaidchen/Focus with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Jaidchen/Focus with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Jaidchen/Focus") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Jaidchen/Focus") model = AutoModelForCausalLM.from_pretrained("Jaidchen/Focus", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Jaidchen/Focus with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Jaidchen/Focus" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jaidchen/Focus", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Jaidchen/Focus
- SGLang
How to use Jaidchen/Focus with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Jaidchen/Focus" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jaidchen/Focus", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Jaidchen/Focus" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jaidchen/Focus", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Jaidchen/Focus with Docker Model Runner:
docker model run hf.co/Jaidchen/Focus
Update README.md
Browse files
README.md
CHANGED
|
@@ -68,18 +68,18 @@ repackaged [Qwen 3.6 27B](https://huggingface.co/Qwen/Qwen3.6-27B) with a simpli
|
|
| 68 |
</tr>
|
| 69 |
<tr>
|
| 70 |
<td>parameters</td>
|
| 71 |
-
<td>27
|
| 72 |
-
<td>27
|
| 73 |
</tr>
|
| 74 |
<tr style='opacity: 50%'>
|
| 75 |
<td>vocabulary size</td>
|
| 76 |
-
<td>248
|
| 77 |
-
<td>248
|
| 78 |
</tr>
|
| 79 |
<tr style='opacity: 50%'>
|
| 80 |
<td>context size</td>
|
| 81 |
-
<td>262
|
| 82 |
-
<td>262
|
| 83 |
</tr>
|
| 84 |
<tr style='opacity: 50%'>
|
| 85 |
<td>MTP</td>
|
|
@@ -102,7 +102,10 @@ repackaged [Qwen 3.6 27B](https://huggingface.co/Qwen/Qwen3.6-27B) with a simpli
|
|
| 102 |
</td>
|
| 103 |
<td>
|
| 104 |
<div style='font-family: Jaidevka Code, JetBrains Mono, monospace; line-height: initial'>
|
| 105 |
-
<span style='color: hsl(from currentColor 0 100% l)'>do_sample</span>: <span style='color: hsl(from currentColor 50 80% l)'>false</span>
|
|
|
|
|
|
|
|
|
|
| 106 |
</div>
|
| 107 |
</td>
|
| 108 |
</tr>
|
|
@@ -129,7 +132,7 @@ repackaged [Qwen 3.6 27B](https://huggingface.co/Qwen/Qwen3.6-27B) with a simpli
|
|
| 129 |
<tr>
|
| 130 |
<td>Jinja template</td>
|
| 131 |
<td><a href='https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/chat_template.jinja'>Qwen original</a></td>
|
| 132 |
-
<td><a href='https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/chat_template.jinja'>Qwen original</a> + <a href='https://huggingface.co/unsloth/Qwen3.5-27B/blob/main/chat_template.jinja'>Unsloth tweaks</a> +
|
| 133 |
</tr>
|
| 134 |
</table>
|
| 135 |
|
|
@@ -147,14 +150,40 @@ repackaged [Qwen 3.6 27B](https://huggingface.co/Qwen/Qwen3.6-27B) with a simpli
|
|
| 147 |
- Pictures and video frames can still be present in the context without crashing, but their contents are no longer interpreted by the model and won’t do anything else than waste space.
|
| 148 |
- If you occasionally rely on those capabilities, I suggest adding a `consult` tool to your harness that calls a vision-enabled subagent model like [Gemini Flash](https://openrouter.ai/~google/gemini-flash-latest) or [GPT](https://openrouter.ai/~openai/gpt-latest).
|
| 149 |
- reduced compatibility
|
| 150 |
-
- The applied coercions may confuse your inference engine in case it has fixed expectations about the model’s architecture and thus lead to unpredictable behavior.
|
| 151 |
- The simplified architecture is handled by the `Qwen3_5ForCausalLM` class which may not be included in your inference engine. In this case you would need to ask your agent or integrate it yourself.
|
|
|
|
| 152 |
|
| 153 |
## caveats
|
| 154 |
|
| 155 |
- model file not split, possibly causing issues if intended to be stored on an HDD from the previous century
|
| 156 |
- random sampling disabled by default, less suitable for long-form writing, entertainment and casual chat
|
| 157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
## license
|
| 159 |
|
| 160 |
-
Apache 2.0
|
|
|
|
| 68 |
</tr>
|
| 69 |
<tr>
|
| 70 |
<td>parameters</td>
|
| 71 |
+
<td>27 781 427 952</td>
|
| 72 |
+
<td>27 320 697 856</td>
|
| 73 |
</tr>
|
| 74 |
<tr style='opacity: 50%'>
|
| 75 |
<td>vocabulary size</td>
|
| 76 |
+
<td>248 320</td>
|
| 77 |
+
<td>248 320</td>
|
| 78 |
</tr>
|
| 79 |
<tr style='opacity: 50%'>
|
| 80 |
<td>context size</td>
|
| 81 |
+
<td>262 144</td>
|
| 82 |
+
<td>262 144</td>
|
| 83 |
</tr>
|
| 84 |
<tr style='opacity: 50%'>
|
| 85 |
<td>MTP</td>
|
|
|
|
| 102 |
</td>
|
| 103 |
<td>
|
| 104 |
<div style='font-family: Jaidevka Code, JetBrains Mono, monospace; line-height: initial'>
|
| 105 |
+
<span style='color: hsl(from currentColor 0 100% l)'>do_sample</span>: <span style='color: hsl(from currentColor 50 80% l)'>false</span><br>
|
| 106 |
+
<span style='color: hsl(from currentColor 0 100% l)'>temperature</span>: <span style='color: hsl(from currentColor 50 80% l)'>0</span><br>
|
| 107 |
+
<span style='color: hsl(from currentColor 0 100% l)'>top_k</span>: <span style='color: hsl(from currentColor 50 80% l)'>1</span><br>
|
| 108 |
+
<span style='color: hsl(from currentColor 0 100% l)'>top_p</span>: <span style='color: hsl(from currentColor 50 80% l)'>1</span></div>
|
| 109 |
</div>
|
| 110 |
</td>
|
| 111 |
</tr>
|
|
|
|
| 132 |
<tr>
|
| 133 |
<td>Jinja template</td>
|
| 134 |
<td><a href='https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/chat_template.jinja'>Qwen original</a></td>
|
| 135 |
+
<td><a href='https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/chat_template.jinja'>Qwen original</a> + <a href='https://huggingface.co/unsloth/Qwen3.5-27B/blob/main/chat_template.jinja'>Unsloth tweaks</a> + <a href='https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/main/chat_template.jinja'>Froggeric tweaks</a> + unimodality patch + further custom tweaks</td>
|
| 136 |
</tr>
|
| 137 |
</table>
|
| 138 |
|
|
|
|
| 150 |
- Pictures and video frames can still be present in the context without crashing, but their contents are no longer interpreted by the model and won’t do anything else than waste space.
|
| 151 |
- If you occasionally rely on those capabilities, I suggest adding a `consult` tool to your harness that calls a vision-enabled subagent model like [Gemini Flash](https://openrouter.ai/~google/gemini-flash-latest) or [GPT](https://openrouter.ai/~openai/gpt-latest).
|
| 152 |
- reduced compatibility
|
|
|
|
| 153 |
- The simplified architecture is handled by the `Qwen3_5ForCausalLM` class which may not be included in your inference engine. In this case you would need to ask your agent or integrate it yourself.
|
| 154 |
+
- The applied coercions may confuse your inference engine in case it has fixed expectations about the model’s architecture and thus lead to unpredictable behavior.
|
| 155 |
|
| 156 |
## caveats
|
| 157 |
|
| 158 |
- model file not split, possibly causing issues if intended to be stored on an HDD from the previous century
|
| 159 |
- random sampling disabled by default, less suitable for long-form writing, entertainment and casual chat
|
| 160 |
|
| 161 |
+
## Jinja template changes
|
| 162 |
+
|
| 163 |
+
- base: [Qwen original](https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/chat_template.jinja)
|
| 164 |
+
- adopted tweaks from [Unsloth version](https://huggingface.co/unsloth/Qwen3.5-27B/blob/main/chat_template.jinja)
|
| 165 |
+
- Added `developer` role as alias for `system`. ([line 45–57](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L45-L57))
|
| 166 |
+
- Merged all leading system/developer messages into a single policy message. ([line 58–75](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L58-L75))
|
| 167 |
+
- Allowed histories without a normal human query. ([line 76–87](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L76-L87))
|
| 168 |
+
- Retained later system/developer messages as policy messages. ([line 87–89](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L87-L89), [line 147–149](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L147-L149))
|
| 169 |
+
- Made mapping-argument rendering portable by avoiding `|items`. ([line 108–133](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L108-L133), [line 122–130](https://huggingface.co/unsloth/Qwen3.5-27B/blob/909b2cc7dc1737891ad8f5a7213b702b39410e43/chat_template.jinja#L122-L130))
|
| 170 |
+
- adopted tweaks from [Froggeric version](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja)
|
| 171 |
+
- Added `preserve_thinking` option to retain historical reasoning. ([line 8](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L8), [line 225–230](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L225-L230))
|
| 172 |
+
- Retained mid-conversation system/developer messages as Qwen system turns. ([line 165–182](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L165-L182), [line 167–180](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L167-L180))
|
| 173 |
+
- Allowed string-valued `message.thinking` as fallback for historical reasoning. ([line 183–197](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L183-L197))
|
| 174 |
+
- Applied boundary-aware `</think>` parsing. ([line 198–223](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L198-L223))
|
| 175 |
+
- Avoided synthesizing empty historical thinking blocks. ([line 225–230](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L225-L230))
|
| 176 |
+
- Supported both wrapped and direct tool calls, but never null-wrapped. ([line 231–237](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L231-L237))
|
| 177 |
+
- Preserved non-empty string tool arguments. ([line 261–280](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L261-L280), [line 277–279](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L277-L279))
|
| 178 |
+
- Used direct message indexing for tool-response grouping instead of `loop.previtem`/`loop.nextitem`. ([line 165](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L165), [line 286–318](https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/blob/b225c1d63f84c65af7dd6af2ba384eb037aa885e/chat_template.jinja#L286-L318))
|
| 179 |
+
- custom tweaks
|
| 180 |
+
- Merged any number of leading system/developer messages, not just two.
|
| 181 |
+
- Applied boundary-aware `</think>` parsing but excluded malformed-tag recovery.
|
| 182 |
+
- Raised an error for unknown roles instead of silently omitting or converting them.
|
| 183 |
+
- Used direct message indexing for tool-response grouping without Froggeric’s error-escalation state.
|
| 184 |
+
- unimodality patch
|
| 185 |
+
- Rendered image and video content as `[image]` and `[video]`.
|
| 186 |
+
|
| 187 |
## license
|
| 188 |
|
| 189 |
+
Apache 2.0 – inherited from [Qwen 3.6 27B](https://huggingface.co/Qwen/Qwen3.5-27B/blob/main/LICENSE)
|