Instructions to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16 # Run inference directly in the terminal: llama cli -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16 # Run inference directly in the terminal: llama cli -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16 # Run inference directly in the terminal: ./llama-cli -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Use Docker
docker model run hf.co/vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
- LM Studio
- Jan
- Ollama
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with Ollama:
ollama run hf.co/vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
- Unsloth Desktop
- Pi
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with Docker Model Runner:
docker model run hf.co/vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
- Lemonade
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Run and chat with the model
lemonade run user.distil-qwen3-1.7b-ecom-ticket-router-F16
List all available models
lemonade list
- Hermes Agent
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use vishinvents/distil-qwen3-1.7b-ecom-ticket-router with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "vishinvents/distil-qwen3-1.7b-ecom-ticket-router:F16" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
distil-qwen3-1.7b-ecom-ticket-router
A Qwen3-1.7B fine-tuned on the Distil Labs platform to route ecommerce support tickets. It reads raw ticket text plus light order metadata and emits one JSON object a helpdesk can act on directly. On the held-out benchmark it scores 83.3 percent against 75.0 percent for its 120B-parameter teacher, and it produced schema-valid JSON on 100 percent of 94 evaluated inputs, including Spanish, German, emoji, and prompt-injection attempts.
Reference implementation, seeds, eval harness, and demo: github.com/vishvadlamani/distil-ecommerce-ticket-router.
Task contract
Input, rendered exactly as in buildRouterPrompt (see the repo):
Ticket:
"""
Subject: <subject or (no subject)>
Channel: email | chat | contact_form
Body:
<raw customer text>
"""
Order metadata:
"""
order_id: <value or none>
order_status: none | processing | shipped | in_transit | delivered | returned | refund_initiated
days_since_order: <int or none>
previous_contacts: <int>
"""
Return JSON now.
Output, always one JSON object:
{
"intent": "delivery_issue",
"urgency": 4,
"order_id": "AC-92831",
"sentiment": "frustrated",
"suggested_action": "open_carrier_investigation",
"needs_human": false
}
intent: order_status, delivery_issue, return_request, refund_status, exchange, cancellation, product_question, sizing_fit, damaged_item, billing_issue, account_access, otherurgency: integer 1 to 5order_id: copied character for character from the ticket, metadata fallback, null when absent; ticket text wins on conflictsentiment: angry, frustrated, neutral, positivesuggested_action: send_tracking_link, open_carrier_investigation, send_return_label, send_refund_timeline, process_exchange, cancel_order, answer_from_faq, send_sizing_guide, send_replacement, escalate_to_billing, send_password_reset, escalate_to_agent, no_action; constrained per intentneeds_human: boolean, from explicit triggers (threats, fraud, repeat contact, explicit request for a person, anything automation cannot resolve)
The system prompt that defines the task ships in the repo and must be used verbatim at inference.
Results
Held-out test of 64 rows: 24 curated benchmark tickets plus 40 real customer messages from the public Twitter customer-support corpus, hand-labeled before any model ran on them. Platform LLM-as-a-judge scoring:
| Untrained Qwen3-1.7B | Teacher (gpt-oss-120b) | Tuned Qwen3-1.7B | |
|---|---|---|---|
| LLM-as-a-judge | 32.8% | 67.2% | 67.2% |
| Exact match | 0.0% | 56.3% | 54.7% |
| ROUGE | 82.6% | 90.1% | 90.7% |
By slice, identical field-level grader on both models:
| Slice | Teacher | Tuned student |
|---|---|---|
| Curated benchmark, in-domain (24) | 75.0% | 83.3% |
| Real customer messages, out-of-domain (40) | 60.0% | 57.5% |
A row passes the judge only when intent, order_id, and needs_human match exactly, urgency is within one, and the action is allowed for the intent. On the curated slice the tuned model reads intent at 95.8 percent and copies order ids verbatim at 100 percent. Local latency on the f16 GGUF on an Apple M-series laptop measured p50 1.9 seconds per ticket, with the roughly 1,000-token system prompt processed per call.
Run it locally
The repo ships a GGUF plus a Modelfile with the correct Qwen3 chat template:
hf download vishinvents/distil-qwen3-1.7b-ecom-ticket-router router-1.7b-v5-f16.gguf Modelfile --local-dir .
ollama create ecom-router -f Modelfile
Call it with the system prompt from the repo and thinking disabled (think: false via the Ollama API). Temperature 0.1.
Training
Seed data: 49 hand-authored tickets across all 12 intents plus 24 held-out, committed to the repo. The platform generated 10,149 synthetic tickets from them. 409 generated labels violating the contract's hard rules and 1,114 teaching unnecessary escalation were repaired mechanically before training; 60 hand-labeled real customer messages and 6 manipulation-handling examples were folded in. Training the student on repaired labels rather than raw teacher output is the reason it passes the teacher in-domain: the teacher's own rule violations stop being the ceiling.
The bundled tokenizer_config.json removes an extra_special_tokens list entry that crashes current transformers tokenizer loading; behavior is unchanged because those tokens are already declared in tokenizer.json.
Limitations
English-first; non-English input degrades accuracy while output stays schema-valid. Raw social-media messages without order metadata are out-of-domain (57.5 percent vs the teacher's 60.0). Policy boundaries the prompt leaves implicit, like return windows, follow the seed dataset's conventions. Sentiment on sarcasm remains hard. The model routes tickets; it does not write replies.
Provenance
Trained by Vish Vadlamani on the Distil Labs platform, teacher openai.gpt-oss-120b, LoRA fine-tune of Qwen/Qwen3-1.7B. Real-message eval data derives from the public Customer Support on Twitter corpus.
- Downloads last month
- 38