Model reference · open weights
Apriel-1.6-Thinker is an open-weight language model from ServiceNow-AI. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.
Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.
What it is
| Maker | ServiceNow-AI |
|---|---|
| Type | Language models |
| Task | Vision + text |
| Parameters (lead) | 14.9B |
| Runs with | transformers |
| Released | 2025-11-28 |
| Popularity | 5k downloads / month |
| Licence | Open weights |
About
Apriel-1.6-15B-Thinker is an updated multimodal reasoning model in ServiceNow’s Apriel SLM series, building on Apriel-1.5-15B-Thinker. With significantly improved text and image reasoning capabilities, Apriel-1.6 achieves competitive performance against models up to 10x its size. Like its predecessor, it benefits from extensive continual pre-training across both text and image domains. We additionally perform post-training that focuses on Supervised Finetuning (SFT) and Reinforcement Learning (RL). Apriel-1.6 obtains frontier performance without sacrificing reasoning token efficiency. The model improves or maintains task performance when compared with Apriel-1.5-15B-Thinker, while reducing reasoning token usage by more than 30%.
Highlights
, , [BEGIN FINAL RESPONSE], ``) for easier output parsing.Please see our blog post for more details
* This score is with DCA enabled. Without this, the model scores 36.
** The average score is calculated using all benchmarks except BFCL v3 Only and DeepResearchBench, since some models do not have scores for these two benchmarks.
*** AA LCR score for o3-mini-high is projected score based on its AA Index score.
The Apriel family of models are designed for a variety of general-purpose instruction tasks, including:
They are not intended for use in safety-critical applications without human oversight or in scenarios requiring guaranteed factual accuracy.
pip install transformers
Here is a code snippet demonstrating the model's usage with the transformers library's generate function:
# Tested with transformers==4.48
import re
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForImageTextToText
# Load model
model_id = "ServiceNow-AI/Apriel-1.6-15b-Thinker"
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_id)
# Example 1: Text-only prompt
chat = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the capital for France?"},
],
}
]
inputs = processor.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt")
inputs = {k: v.to(model.device) if isinstance(v, torch.Tensor) else v for k, v in inputs.items()}
inputs.pop("token_type_ids", None)
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=1024, do_sample=True, temperature=0.6)
generated_ids = output_ids[:, inputs['input_ids'].shape[1]:]
output = processor.decode(generated_ids[0], skip_special_tokens=True)
response = re.findall(r"\[BEGIN FINAL RESPONSE\](.*?)(?:)", output, re.DOTALL)[0].strip()
print("Text-only Response:", response)
# Example 2: Image understanding
url = "https://picsum.photos/id/237/200/300"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
chat = [
{
"role": "user",
"content": [
{"type": "text", "text": "Which animal is this?"},
{"type": "image"},
],
}
]
prompt = processor.apply_chat_template(chat, add_generation_prompt=True, tokenize=False)
inputs = processor(text=prompt, images=[image], return_tensors="pt").to(model.device)
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=1024, do_sample=True, temperature=0.6)
generated_ids = output_ids[:, inputs['input_ids'].shape[1]:]
output = processor.decode(generated_ids[0], skip_special_tokens=True)
response = re.findall(r"\[BEGIN FINAL RESPONSE\](.*?)(?:)", output, re.DOTALL)[0].strip()
print("Image Response:", response)
0.6.Here are my reasoning steps:\n during all our evaluations. This is implemented in the default chat template.`
From the published model card. Full card on the HuggingFace links in the sidebar.
Using it via the API
Once AxForge deploys apriel-1-6-thinker for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (apriel-1-6-thinker below is illustrative; you get the exact model name on deployment.)
$ curl -sS https://api.axforge.ai/v1/chat/completions \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"apriel-1-6-thinker","messages":[{"role":"user","content":"Hello"}]}'
Create an account — your API key is available in the console. 5M tokens/month currently included with every new account at launch.