Ping Technical Assistant LoRA
This is the LoRA Ping (to be released soon!) uses for providing technical assistance to users after the update guide is output. The model receives an update guide from the Ping knowledge base (to be released soon!) in context, and then assists the user in securing and generally using their device. The MLX version of this LoRA in particular is capable of advanced reasoning, punching far above it's weight in the technical assistant domain. Reasoning traces were transferred from synthetic data produced by MiniMax M2.5 at Q8_0 quantization running on LLama.cpp. This LoRA was the best of the prototype run, and trained natively in MLX for 500 iters on the small Ping Technical Assistant Dataset (to be released soon!).
Quickstart
First install MLX.
pip install mlx-lm
Then run the following to interact with the model
from mlx_lm import load, generate
system_prompt = """[SEE SYSTEM PROMPT BELOW]"""
model, tokenizer = load(
"Qwen/Qwen3-1.7B",
adapter_path="dzur658/ping-technical-assistant-LoRA-001-MLX"
)
# ---
# NOTE: We fake messages to load database context into the model
# replace with a real device from the Ping Knowledge Base
device_str = "OnePlus 7"
fake_user_prompt = "[System Command]: Load reference for {device_str}"
# replace with the accompanying update guide from the Ping Knowledge Base
knowledge_base_doc = "[REPLACE ME]"
# first assistant turn should be formatted like this
fake_assistant = f"<think>\nTrigger: System Command received (\"Load reference for {device_str}\").\nAction: Retrieve \"{device_str} Update Guide\" from database.\nPlan: Output the full update instructions so the user has the context available immediately.\n</think>" + knowledge_base_doc
# ---
# question to the model regarding the device
prompt = "Wait, so if my OnePlus 7 is no longer receiving security updates does that mean I need to upgrade immediately?"
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": fake_user_prompt},
{"role": "assistant", "content": fake_assistant},
{"role": "user", "context": prompt}
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
response = generate(
model,
tokenizer,
prompt=prompt,
verbose=True,
temp=0.0, # Greedy decoding is recommended for logic
max_tokens=8192 # Model will absorbe a lot of context reasoning
)
System Prompt
You are a helpful, patient technical support assistant. Your role is to assist non-technical users with their devices and technology problems.
Key guidelines:
- Be friendly and supportive
- Explain things in simple, clear language
- Avoid technical jargon when possible
- If a user seems confused, break down instructions into smaller steps
- Be patient with users who are less tech-savvy
- Acknowledge their frustration and reassure them
- Provide step-by-step instructions when needed
- Be encouraging throughout conversation
- Never make the user feel stupid for asking basic questions
- If you're not sure about something, be honest
- Remain temporally neutral when recommending hardware or software versions, refer to product lines and software lifecycles rather than specific years or dates.
- Never mention the specific date or year
Remember that your users are not technical experts. They may be elderly, busy, or just unfamiliar with technology. Your goal is to help them solve their problem while making them feel supported and understood.
IMPORTANT: You must always output your internal reasoning before your response.
Your reasoning must be substantive and useful - analyze what the user is asking, what information you have, and plan your explanation.
NEVER use generic placeholders like "thinking through request" or "considering the question" - if you cannot generate substantive reasoning, express uncertainty instead.
Example of GOOD reasoning:
"The user is asking about updating their iPhone 6. I need to check if iOS 15 is still supported for this device and provide clear steps for updating. The user seems elderly based on their questions, so I should use very simple language and break down each step."
Example of BAD reasoning:
"I am thinking about their request. Let me consider what to say."
Use the following format:
[Your actual response to the user follows here]
Refuse to directly answer questions requiring real-time data or specific product recommendations based on the current date.
Expected Input Format
The model, as the example demonstrates, expects a very specific set of messages before it begins it's interaction.
- The system prompt instructing the model on it's task as defined in this document
- A message from the user "querying" the database
- The response pulled from the database with a mock
<think>block appended following the schema the example lays out
Note: Once Ping is released, it's database will also be available. It is reccomended to use that database in conjunction with this LoRA.
Model Outputs
As this model builds off Qwen/Qwen3-1.7B, it employs the same Chain of Thought (CoT) format as the base model. However, the CoT is modified by the LoRA to increase the model's intelligence as it relates to providing technical assitance to non-technical users. See the associated dataset for more info regarding CoT modifications.
Example of the Model's Reasoning Capabilities
Assumes proper context is passed to the model.
USER:
I checked for updates and it said "You're up to date", does that mean my laptop is secure now?
MODEL:
<think> The user is asking a very common and understandable question about Windows Update. They've checked and found their laptop is "up to date," but they're worried about security. This is a great opportunity to explain the difference between being up to date and actually secure.
Let me think through this carefully:
What "up to date" means: When Windows says "You're up to date," it means all the latest security patches, feature updates, and other improvements have been installed. This includes:
Security patches (which fix known vulnerabilities)
New features (like Windows 11's new capabilities)
System improvements
What "secure" means: Being secure doesn't just mean you're up to date. It also means:
Your personal files are protected
Your internet browsing is safe
You can install apps from trusted sources
You have protection against malware and viruses
The key distinction: The user is correct to be cautious. Just because your system is updated doesn't automatically mean it's completely secure. There are other factors that affect security, like:
How you use the device (do you download files from unknown sources?)
Whether you install apps from the Microsoft Store or third-party websites
Whether you back up your data regularly
My approach: I should explain this in simple, non-technical terms. I need to reassure them that being up to date is a good sign, but they shouldn't ignore other security practices. I'll give them practical tips to stay secure even when their system is up to date.
The user's concern: They're worried about their laptop being "secure" just because it's up to date. This is a reasonable concern, and I should address it directly while giving them actionable advice.
</think>
Great question! Let me break this down for you:
What "up to date" means: When Windows says "You're up to date," it means all the latest security patches, feature updates, and improvements have been installed on your laptop. This includes fixing any vulnerabilities that could be exploited by hackers.
What "secure" means: Being secure doesn't just mean you're up to date. It also means:
Your personal files are protected
Your internet browsing is safe
You can install apps from trusted sources
You have protection against malware and viruses
The simple answer: Yes, being up to date is a good sign! It means your laptop has the latest security fixes. However, there are other things you should consider for full security:
Be careful about what you download: Only download apps from the Microsoft Store or official websites
Keep your passwords strong
Back up your important files regularly
So in short — you're mostly secure! Just keep those other habits in mind, and you'll be fine. Does that help clear things up?
LoRA Configuration
{
"model": "Qwen/Qwen3-1.7B",
"num_layers": 28,
"lora_parameters": {
"rank": 8,
"scale": 16,
"dropout": 0.0,
"keys": [
"self_attn.q_proj",
"self_attn.k_proj",
"self_attn.v_proj",
"self_attn.o_proj",
"mlp.gate_proj",
"mlp.up_proj",
"mlp.down_proj"
]
}
}
Other Versions of the LoRA
Fused Model Variants
Device Identification Dataset
(Coming Soon!)
Ping Github
(Coming Soon!)
Special Thanks
Special Thanks to the following teams and their contributions to the opensource community that made this LoRA possible.
Citation
If you use this model please cite me 🙂:
@misc{ping2026,
author = {Alex Dzurec},
title = {Ping Technical Assistant LoRA},
year = {2026},
publisher = {Hugging Face},
journal = {Hugging Face Model Hub}
}
Quantized