Nandi-Mini-150M-Tool-Calling

Introduction

Nandi-Mini-150M-Tool-Calling is a lightweight, single-turn specialized model designed to accurately interpret user queries and generate precise tool calls in one step, enabling efficient and reliable function execution

πŸ“ Upcoming Releases & Roadmap

We’re just getting started with the Nandi series πŸš€

  • Nandi-Mini-150M-Base β€” HF-Link
  • Nandi-Mini-150M-Instruct β€” HF-Link
  • Nandi-Mini-500M (Base + Instruct) β€” Pre-Training Going On
  • Nandi-Mini-1B (Base + Instruct) β€” Pre-Training Going On

πŸ“’ Blogs & technical deep-dives coming soon, where we’ll share:

  • Architecture decisions and design trade-offs
  • Training insights and dataset composition
  • Benchmarks and real-world applications

Stay tuned!

πŸš€ Usage

!pip install transformers=='5.4.0'

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import json

model_name = "FrontiersMind/Nandi-Mini-150M-Tool-Calling"

device = "cuda" if torch.cuda.is_available() else "cpu"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    trust_remote_code=True,
    dtype=torch.bfloat16
).to(device).eval()

def call_nandi_tool_calling(user_prompt,tools):

    tools = json.dumps(tools, indent=4)
    system_prompt = f"You are a helpful assistant with access to the following tools - You need to choose appropriate tool for given query, you also need to add appropriate parameters. Do not choose wrong tools, if user query does not belong to a tool. <|tools_start|>\n{tools}\n<|tools_end|>"
    
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_prompt},
    ]
    
    prompt = tokenizer.apply_chat_template(messages, tokenize=False)
    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
    
    generated_ids = model.generate(
      **inputs,
      max_new_tokens=500,
      do_sample=True,
      temperature=0.3,
      top_p=0.90,
      top_k=20,
      repetition_penalty=1.1,
    )
    
    generated_ids = [
      output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, generated_ids)
    ]
    
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    return response

# Put your query here
user_prompt = "Get weather in Delhi"
# Update the tools according to your use case
tools = [
  {
    "name": "get_weather",
    "description": "Get current weather for a city",
    "parameters": {
      "city": {
        "type": "str",
        "description": "City name"
      }
    }
  },
  {
    "name": "get_time",
    "description": "Get current time for a city",
    "parameters": {
      "city": {
        "type": "str",
        "description": "City name"
      }
    }
  }
]

print(call_nandi_tool_calling(user_prompt,tools))

πŸ“¬ Feedback & Suggestions

We’d love to hear your thoughts, feedback, and ideas!

Downloads last month
2,457
Safetensors
Model size
0.2B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for FrontiersMind/Nandi-Mini-150M-Tool-Calling

Finetuned
(2)
this model

Collection including FrontiersMind/Nandi-Mini-150M-Tool-Calling