Text Generation
Transformers
Safetensors
English
Vietnamese
qwen3_5
image-text-to-text
function-calling
tool-use
tool-calling
agent
agentic
workflow-automation
vllm
sglang
qwen3.6
vietnamese
enterprise-automation
conversational
Instructions to use beyoru/Ops-I with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use beyoru/Ops-I with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="beyoru/Ops-I") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("beyoru/Ops-I") model = AutoModelForMultimodalLM.from_pretrained("beyoru/Ops-I", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use beyoru/Ops-I with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "beyoru/Ops-I" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "beyoru/Ops-I", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/beyoru/Ops-I
- SGLang
How to use beyoru/Ops-I 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 "beyoru/Ops-I" \ --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": "beyoru/Ops-I", "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 "beyoru/Ops-I" \ --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": "beyoru/Ops-I", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use beyoru/Ops-I with Docker Model Runner:
docker model run hf.co/beyoru/Ops-I
File size: 5,570 Bytes
dc8b7e4 9215f19 dc8b7e4 7347643 9215f19 dc8b7e4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | ---
license: apache-2.0
base_model: Qwen/Qwen3.6-27B
base_model_relation: finetune
pipeline_tag: text-generation
library_name: transformers
language:
- en
- vi
tags:
- function-calling
- tool-use
- tool-calling
- agent
- agentic
- workflow-automation
- vllm
- sglang
- qwen3.6
- vietnamese
- enterprise-automation
---
# Ops-I — a 27B agent for business workflow automation
**Ops-I** is a fine-tune of **Qwen3.6-27B** aimed at *workflow* agents: episodes where the
model reads a business request, discovers the right tool out of a large surface, chains
several calls together, and — just as importantly — knows when **not** to act.
On the public 600-task [AutomationBench](https://github.com/zapier/AutomationBench)
(Zapier), Ops-I is the **strongest of four open-weight models** we measured, ahead of the
Qwen3.6-27B base it was tuned from.
**Use it if you need:** an open-weight backend for business automation that holds up across long multi-step tool episodes. Really want to hear about
| | |
|---|---|
| Base | `Qwen/Qwen3.6-27B` (dense, VL architecture) |
| Precision / size | bf16, 27.8B params, 15 shards (~56 GB) |
| Context | base supports 262 144; 16K validated in our runs |
| Reasoning | thinking **on** — how it was evaluated |
| Tool-call format | Qwen3.5-style XML (`<function=...>`), **not** JSON — see gotchas |
| License | Apache-2.0 |
---
## Results — AutomationBench 600
| Model | Pass rate | Passed / 600 | Partial credit | Wall clock |
|---|---|---|---|---|
| **beyoru/Ops-I** | **10.17%** | **61** | **45.54%** | 1.96 h |
| gemma-4-31B-it (thinking on) | 10.17% | 61 | 41.64% | 2.15 h |
| Qwen3.6-27B (base) | 9.67% | 58 | 46.00% | 1.95 h |
For scale, the reference models in the upstream README (run at their highest reasoning
effort) land at Claude Opus 4.8 30.33%, GPT-5.6 Sol 29.17%, GLM 5.2 20.33%,
Gemini 3.5 Flash 14.83%.
### Per domain
Tasks passed out of 100, partial credit in parentheses.
| Model | Finance | HR | Marketing | Operations | Sales | Support |
|---|---|---|---|---|---|---|
| **beyoru/Ops-I** | **20** (57.0) | 3 (10.1) | 5 (51.4) | **18** (60.5) | **10** (38.2) | 5 (55.9) |
| Qwen3.6-27B base | 21 (57.7) | 3 (12.4) | 3 (45.1) | 17 (60.9) | 8 (41.4) | 6 (58.4) |
| gemma-4-31B-it | 18 (48.7) | 1 (5.2) | **14** (56.3) | 15 (56.2) | 9 (34.3) | 4 (49.1) |
Finance and operations carry the score. HR is the floor for every model tested (1-3 / 100).
---
## Known weakness: it acts too much
The dominant failure mode is **not** inability to act — it is failure to *refrain*.
| Assertion type | Ops-I |
|---|---|
| Positive ("do send / do create") | 3028 / 5636 = **53.7%** |
| Negative ("do **not** send / do **not** create") | 65 / 585 = **11.1%** |
Some negative assertion types never pass, aggregated across all four models tested:
`gmail_message_not_sent` 0/203, `slack_message_not_in_channel` 0/166,
`google_sheets_row_not_exists` 0/161.
This is uniform across two model families and four checkpoints, so treat it as a property
of the current open-weight generation rather than of Ops-I specifically. **If you deploy
this in a workflow that can send email, post to chat, or write to a sheet, gate those
actions behind confirmation.**
---
## Quickstart
### Serve with SGLang
```bash
python3 -m sglang.launch_server --model-path beyoru/Ops-I --served-model-name Ops-I \
--host 0.0.0.0 --port 30014 --tp 4 \
--reasoning-parser qwen3 --tool-call-parser qwen3_coder \
--mem-fraction-static 0.85
```
### Serve with vLLM
```bash
vllm serve beyoru/Ops-I --served-model-name Ops-I \
-tp 4 --max-model-len 16384 \
--enable-auto-tool-choice --tool-call-parser qwen3_coder --reasoning-parser qwen3
```
### Call it
```python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30014/v1", api_key="EMPTY")
tools = [{
"type": "function",
"function": {
"name": "crm_update_contact",
"description": "Update a contact's details in the CRM.",
"parameters": {
"type": "object",
"properties": {"contact_id": {"type": "string"}, "phone": {"type": "string"}},
"required": ["contact_id", "phone"],
},
},
}]
r = client.chat.completions.create(
model="Ops-I",
messages=[{"role": "user", "content": "Update Le Van A's phone to 0912345678."}],
tools=tools,
tool_choice="auto",
)
print(r.choices[0].message.tool_calls)
```
---
## Training
---
## Evaluation notes
- All numbers above come from a single run per model (k=1) on the full public 600-task
set, temperature left at server default. No task was excluded.
- AutomationBench has **no separate train split** — the 600 public tasks are both the
dataset and the scoring set. Ops-I was **not** trained on them; if you fine-tune against
this benchmark, its scores stop being comparable to anything.
- Numbers were produced with SGLang 0.5.12. A vLLM baseline was not measured, so do not
mix serving stacks when comparing.
# Limitaion
**The model only take a few steps training because of LIMITATION gpu usage in our org**
## Community Feedback
*Ops-I* is an ongoing project, and community feedback is invaluable.
If you discover failure cases, benchmark results, or have ideas for future improvements, feel free to start a Discussion. Every report helps improve future releases.
## Citation
Benchmark tasks, tools and assertions are Zapier's:
```bibtex
@misc{automationbench,
title = {AutomationBench},
author = {Zapier},
year = {2026},
url = {https://github.com/zapier/AutomationBench}
}
```
|