Views
No views yet

| Property | Value |
|---|---|
| Base model | Qwen2.5-1.5B-Instruct |
| Fine-tuning method | QLoRA (4-bit) via Unsloth |
| Trainable parameters | 18,464,768 (1.18% of total) |
| Training dataset | gxx27/BioTool (5,632 samples) |
| Epochs | 3 |
| Final training loss | 0.20 |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_id = "Rumiii/Qwen-BioTool-1.5B"
4tokenizer = AutoTokenizer.from_pretrained(model_id)
5model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
6
7tools = [
8 {
9 "type": "function",
10 "function": {
11 "name": "esearch",
12 "description": "Search an NCBI Entrez database and return UIDs matching a text query.",
13 "parameters": {
14 "type": "object",
15 "properties": {
16 "db": {"type": "string", "description": "Entrez database name"},
17 "term": {"type": "string", "description": "Search query"},
18 },
19 "required": ["db", "term"],
20 },
21 },
22 }
23]
24
25messages = [{"role": "user", "content": "Search PubMed for articles on BRCA1 mutations."}]
26
27inputs = tokenizer.apply_chat_template(
28 messages,
29 tools=tools,
30 add_generation_prompt=True,
31 tokenize=True,
32 return_tensors="pt",
33 return_dict=True,
34).to(model.device)
35
36outputs = model.generate(**inputs, max_new_tokens=200)
37print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))arguments field in generated tool calls is a JSON-encoded string, not a nested JSON object. Downstream code should apply an additional json.loads() to it before use.1@misc{gao2026biotoolcomprehensivetoolcallingdataset,
2 title={BioTool: A Comprehensive Tool-Calling Dataset for Enhancing Biomedical Capabilities of Large Language Models},
3 author={Xin Gao and Ruiyi Zhang and Meixi Du and Peijia Qin and Pengtao Xie},
4 year={2026},
5 eprint={2605.05758},
6 archivePrefix={arXiv},
7 primaryClass={cs.CL},
8 url={https://arxiv.org/abs/2605.05758},
9}