Instructions to use iSshobhit/bnpl-triage-small-model with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use iSshobhit/bnpl-triage-small-model with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="iSshobhit/bnpl-triage-small-model") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("iSshobhit/bnpl-triage-small-model") model = AutoModelForCausalLM.from_pretrained("iSshobhit/bnpl-triage-small-model") 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=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use iSshobhit/bnpl-triage-small-model with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "iSshobhit/bnpl-triage-small-model" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "iSshobhit/bnpl-triage-small-model", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/iSshobhit/bnpl-triage-small-model
- SGLang
How to use iSshobhit/bnpl-triage-small-model 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 "iSshobhit/bnpl-triage-small-model" \ --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": "iSshobhit/bnpl-triage-small-model", "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 "iSshobhit/bnpl-triage-small-model" \ --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": "iSshobhit/bnpl-triage-small-model", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Unsloth Studio
How to use iSshobhit/bnpl-triage-small-model with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for iSshobhit/bnpl-triage-small-model to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for iSshobhit/bnpl-triage-small-model to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for iSshobhit/bnpl-triage-small-model to start chatting
Load model with FastModel
pip install unsloth from unsloth import FastModel model, tokenizer = FastModel.from_pretrained( model_name="iSshobhit/bnpl-triage-small-model", max_seq_length=2048, ) - Docker Model Runner
How to use iSshobhit/bnpl-triage-small-model with Docker Model Runner:
docker model run hf.co/iSshobhit/bnpl-triage-small-model
Question about your BNPL triage DPO training
Hi, I came across your BNPL triage DPO model. I'm researching how people run preference training on open-weight models. I'm curious how you built the preference pairs for a triage task, and how you figure out whether the run actually improved the triage decisions the way you wanted.
Would you be open to a quick chat? Happy to do email if easier, I'm at austin@aureliusaligned.ai.
Just trying to learn, not selling anything.
Thanks either way,
Austin
Hi Austin,
Thanks for writing a note. Happy to share the details.
The key thing is that I don't generate triage data generically. The domain specification is what drives the whole dataset. In BNPL dispute handling the policy already defines everything I need: the set of dispute types, the fields that describe a case, the rules that map those fields to the correct route, priority, and remedy, and the scheme and regulatory windows that constrain them. So the generator is parameterised by that structure, not by free text.
Concretely, each synthetic case is a set of domain fields (dispute type, transaction date and amount, delivery/merchant status, days elapsed, installment state, and so on), and the ground-truth triage label is derived by applying the policy rules to those fields deterministically. That's what makes the label trustworthy: it isn't a guess, it's the policy applied to known facts. The preference pairs fall out of that. Chosen is a response that matches the policy-derived decision and justifies it with the fields that actually drove it. Rejected is a same-case response that fails in a domain-meaningful way: wrong dispute type, misapplied window, or a rationale that ignores the field that determined the call.
One example to make it concrete. The generator produces a case where the customer reports the item never arrived, the transaction was 12 days ago, the merchant has marked it delivered, and the amount is inside the chargeback-eligible window. Policy makes this a goods-not-received / merchant dispute, routed to that team under the SLA for the window, and the correct rationale has to cite the delivered-versus-not-received conflict and the date falling inside the window. A rejected candidate for that same case is one that routes it as unauthorized fraud (wrong team and SLA entirely), or one that reaches the right route but claims the dispute is out of window when the 12-day date says otherwise. That second one looks fine on the surface, but it's grounded in a fact that isn't true, which is exactly the failure I want DPO to penalize.
So the design is domain-first: encode the dispute taxonomy and policy rules into the generator, derive ground truth from them, and let the preference pairs express "policy-correct and grounded in the deciding facts" over "plausible but wrong."
Best Regards,
Shobhit
Also DPO here done is not intended to replace the Customer support where a human and tonned response are being trained for customer facing interface. Here DPO is more structured towards the Ops team which needed the grounding response with correct policy categorisation
I am currently working on another DPO for guardrail tunning on the model. It will help to block any response that shows violence or abusive language as a first guard though the AI agent build on top of it can add strong deterministic guardrails.
If needed we can connect to discuss.
reach out to me : iosshobhit@gmail.com