model_card_image

Qwen-BioTool-1.5B

A fine-tuned version of Qwen2.5-1.5B-Instruct specialized for biomedical tool-calling. Given a biomedical question and a set of available tool schemas, the model selects the correct tool and generates properly formatted function-call arguments.

Model Details

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

Coverage

The model is trained on tool-calling patterns across 127 tools spanning three biomedical API families:

  • NCBI E-utilities (esearch, efetch, elink, BLAST, and related endpoints)
  • UniProt REST (protein, proteome, and taxonomy lookups)
  • Ensembl REST (coordinate mapping, variant effect prediction, comparative genomics)

This covers genomics, proteomics, and comparative biology tool-use. It does not cover clinical-facing APIs such as ICD-10 lookup, drug databases, or clinical trial registries.

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "Rumiii/Qwen-BioTool-1.5B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")

tools = [
    {
        "type": "function",
        "function": {
            "name": "esearch",
            "description": "Search an NCBI Entrez database and return UIDs matching a text query.",
            "parameters": {
                "type": "object",
                "properties": {
                    "db": {"type": "string", "description": "Entrez database name"},
                    "term": {"type": "string", "description": "Search query"},
                },
                "required": ["db", "term"],
            },
        },
    }
]

messages = [{"role": "user", "content": "Search PubMed for articles on BRCA1 mutations."}]

inputs = tokenizer.apply_chat_template(
    messages,
    tools=tools,
    add_generation_prompt=True,
    tokenize=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

Known Limitations

  • The 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.
  • Trained exclusively on tool-calling examples; conversational ability is inherited from the base model rather than reinforced during fine-tuning.
  • Tool coverage is limited to NCBI, UniProt, and Ensembl. Queries requiring other biomedical or clinical APIs are outside its trained scope.
  • Not intended for clinical decision-making or diagnostic use.

Training Data

BioTool: a biomedical function-calling dataset of 7,040 human-verified query-to-API-call pairs across NCBI, UniProt, and Ensembl.

@misc{gao2026biotoolcomprehensivetoolcallingdataset,
      title={BioTool: A Comprehensive Tool-Calling Dataset for Enhancing Biomedical Capabilities of Large Language Models},
      author={Xin Gao and Ruiyi Zhang and Meixi Du and Peijia Qin and Pengtao Xie},
      year={2026},
      eprint={2605.05758},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2605.05758},
}

This model was trained with Unsloth and Hugging Face's TRL library.

License

Apache 2.0

Downloads last month
424
Safetensors
Model size
2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Rumiii/Qwen-BioTool-1.5B

Quantizations
2 models

Dataset used to train Rumiii/Qwen-BioTool-1.5B

Paper for Rumiii/Qwen-BioTool-1.5B