1. Introduction
HYZ-01-9B is an open-source, thinking-capable, multimodal language model with 9 billion parameters, developed by NeuroTürk. It was built on top of a multilingual base model using fine-tuning and model merging techniques. It can be used for conversation, question answering, mathematics, reasoning, code generation and tool calling, primarily in Turkish and English. On several benchmarks, most notably Turkish language understanding and mathematics, it is competitive with models many times its size, and on a number of them it comes out ahead.
The model runs in thinking mode by default: responses begin with a <think> block before the final answer, and this behavior can be turned off with enable_thinking=False. In addition to text, it accepts image and video inputs and produces function calls in a structured format. It has a native context window of 262,144 tokens, which is configured to extend up to 1,048,576 tokens through dynamic scaling.
The model is released under the Apache 2.0 license.
Quick Access: Live Chat · Technical Docs · neuroturk.org · info@neuroturk.org
2. Benchmark
3. Usage
Serving
vLLM:
vllm serve neuroturk/HYZ-01-9B \ --served-model-name HYZ-01-9B \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 262144 \ --enable-auto-tool-choice \ --tool-call-parser qwen3_coder \ --reasoning-parser qwen3 \ --trust-remote-code
To run in text-only mode, you can add --language-model-only to the command.
SGLang:
python -m sglang.launch_server \ --model-path neuroturk/HYZ-01-9B \ --served-model-name HYZ-01-9B \ --host 0.0.0.0 \ --port 8000 \ --context-length 262144 \ --tool-call-parser qwen3_coder \ --reasoning-parser qwen3
Chat Completions API
Once the server is up, any OpenAI-compatible client can be used.
from openai import OpenAI client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY") response = client.chat.completions.create( model="HYZ-01-9B", messages=[{"role": "user", "content": "What is the capital of Türkiye?"}], temperature=1.0, top_p=0.95, extra_body={"top_k": 20, "presence_penalty": 1.5}, # To turn thinking off, add this to extra_body: # "chat_template_kwargs": {"enable_thinking": False}) message = response.choices[0].message# Depending on the vLLM version, the thinking trace is returned in "reasoning_content" or "reasoning".reasoning = getattr(message, "reasoning_content", None) or getattr(message, "reasoning", None)print("reasoning:", reasoning)print("answer:", message.content)
Tool calling:
tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] response = client.chat.completions.create( model="HYZ-01-9B", messages=[{"role": "user", "content": "What is the weather like in Ankara?"}], tools=tools, tool_choice="auto", temperature=0.6,) tool_call = response.choices[0].message.tool_calls[0]print(tool_call.function.name, tool_call.function.arguments)# -> get_weather {"city": "Ankara"}
Image input:
response = client.chat.completions.create( model="HYZ-01-9B", messages=[{ "role": "user", "content": [ {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}, {"type": "text", "text": "Describe this image in one sentence."}, ], }],)print(response.choices[0].message.content)
import torchfrom transformers import AutoTokenizer, AutoModelForCausalLM model_name = "neuroturk/HYZ-01-9B" tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True) messages = [{"role": "user", "content": "What is artificial intelligence? Explain briefly."}] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors="pt", return_dict=True, # enable_thinking=False, # to turn thinking off).to(model.device) outputs = model.generate( **inputs, max_new_tokens=4096, do_sample=True, temperature=1.0, top_p=0.95, top_k=20) text = tokenizer.decode( outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=False).replace("<|im_end|>", "").strip() # The prompt ends with "<think>", so only "</think>" appears in the output.if "</think>" in text: reasoning, answer = text.split("</think>", 1)else: reasoning, answer = "", text print("reasoning:", reasoning.strip())print("answer:", answer.strip())
4. Limitations
- Although the model follows instructions well, it may occasionally produce incorrect, inconsistent or fabricated outputs.
- Performance is best in Turkish and English; problems may occur in languages other than these.
- With thinking mode on, responses can contain long reasoning traces; for simple tasks it is more efficient to turn it off.
- Context lengths beyond 262,144 tokens are supported at the configuration level; quality and memory usage should be verified separately.
- For critical applications such as law, medicine and finance, human verification of outputs is recommended.
5. Citation
@misc{neuroturk2026hyz01, title = {HYZ-01-9B, A Fast, Powerful, and Multilingual Model}, author = {NeuroTürk}, year = {2026}, url = {https://neuroturk.org}, }