sigdelakshey/Compact-ToolCall-Planner-Qwen2.5-0.5B-v1
Compact-ToolCall-Planner-Qwen2.5-0.5B-v1
Compact-ToolCall-Planner-Qwen2.5-0.5B-v1 is an experimental LoRA adapter built on top of Qwen/Qwen2.5-0.5B-Instruct for a narrow structured-output task: tool-call planning.
It takes:
- a user instruction
- a provided tool catalog
and is intended to produce one of three JSON decisions:
call_toolneeds_clarificationno_applicable_tool
Release Summary
This release is intended as a compact research and prototyping artifact for agent systems that already control their tool catalog and downstream validation layer.
It is meant to be useful when you want:
- a small adapter rather than a larger fine-tuned model
- planner-style JSON outputs instead of open-ended chat behavior
- an experimental starting point for resource-constrained tool routing setups
What This Release Is
- a compact task-specific adapter
- designed for resource-constrained experimentation
- focused on structured planner-style JSON outputs
- intended for agent pipelines that already provide a tool catalog
What This Release Is Not
- not the original Qwen base model
- not a general-purpose assistant
- not a tool executor
- not a production-ready agent router
Attribution
- base model:
Qwen/Qwen2.5-0.5B-Instruct - base model owner: Qwen
- released artifact: LoRA adapter for Tool-Call Planner
Intended Use
This adapter is intended for:
- research and prototyping on structured tool planning
- lightweight agent stacks in constrained environments
- experiments where the caller already controls the tool catalog and output validation
Task Definition
The adapter is trained for the following mapping:
- input: instruction + tool catalog
- output: JSON-only planner decision
Expected decision contract:
{
"decision": "call_tool",
"tool_name": "create_calendar_event",
"arguments": {
"title": "Team Sync",
"date": "tomorrow",
"time": "4 PM"
}
}Or:
{
"decision": "needs_clarification",
"tool_name": null,
"arguments": {},
"missing_fields": ["date"]
}Or:
{
"decision": "no_applicable_tool",
"tool_name": null,
"arguments": {}
}Data Scope
- synthetic task-specific corpus
- domains: calendar, email, travel, CRM, file management
- release-scale corpus size used in project artifacts: 6,440 rows
- adapter release candidate trained on a reduced subset for fast iteration under constrained compute
This should be understood as task-construction data for a narrow planner, not as a broad real-world instruction corpus.
Evaluation Status
This release is being shared as an experimental niche adapter, not as a benchmark-improving claim over the base model.
- no strong public claim of improvement over the untuned base model is made here
- the current release is meant as a compact task-specific prototype
- constrained decoding and output validation are recommended
In other words, this model card is making a scope claim, not a leaderboard claim.
Practical Expectations
You should expect this adapter to be most useful when:
- the tool catalog is explicit and compact
- the desired output schema is fixed in advance
- the caller is willing to validate or reject malformed generations
You should not expect this adapter to behave like a strong general-purpose function-calling model across arbitrary tools or open-ended workflows.
Limitations
- synthetic-data-heavy training setup
- narrow task scope
- limited real-world validation
- output quality depends strongly on the provided tool catalog
- should not be used as a general-purpose function-calling or agent model without additional validation
- may require prompt tuning and constrained decoding for acceptable behavior in production-like settings
Usage
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_model_id = "Qwen/Qwen2.5-0.5B-Instruct"
adapter_id = "sigdelakshey/Compact-ToolCall-Planner-Qwen2.5-0.5B-v1"
tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(base_model_id, trust_remote_code=True)
model = PeftModel.from_pretrained(model, adapter_id)
prompt = """You are a tool-call planner. Return JSON only.
Instruction:
Schedule a meeting with Priya tomorrow at 4 PM called Product Sync.
Available tools:
{"domain":"calendar","tools":[{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"title":{"type":"string"},"date":{"type":"string"},"time":{"type":"string"}},"required":["title","date","time"]}]}"""
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))Recommended Inference Pattern
- provide the tool catalog explicitly
- ask for JSON only
- use constrained decoding if available
- validate outputs before execution
Suggested Citation Style
If you reference this release, describe it as:
- an experimental compact LoRA adapter for structured tool-call planning built on
Qwen/Qwen2.5-0.5B-Instruct
Contact
If you use this adapter, treat it as an experimental structured-planning artifact and validate it carefully in your own stack.
