Views
No views yet
tools_list= (inside <|im_start|><|system|>...<|endoftext|>).[FuncName(param=value)] between <|im_start|><|assistant|> and <|endoftext|>.tool message (usually JSON) between <|im_start|><|tool|> and <|endoftext|>.| Model Name | Non-Live | Live | Average |
|---|---|---|---|
| Falcon3-1B-Instruct | 9.02 | 2.89 | 5.96 |
| Llama-3.2-1B-Instruct | 38.38 | 11.77 | 25.08 |
| Gemma-3-1B-It | 20.21 | 11.84 | 16.03 |
| Ministral-8B-Instruct | 0.00 | 0.00 | 0.00 |
| MiniCPM-0.5B | 14.29 | 16.67 | 15.48 |
| Lumma-0.6B-Tool | 41.77 | 30.53 | 36.15 |
1import torch
2import json
3from transformers import AutoModelForCausalLM, AutoTokenizer
4
5MODEL_PATH = "FrontiersMind/Lumma-0.6B-Tool"
6
7
8tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True)
9model = AutoModelForCausalLM.from_pretrained(
10 MODEL_PATH, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="auto"
11)
12model.eval()
13
14
15def generate(max_new_tokens,messages):
16 prompt = tokenizer.apply_chat_template(
17 messages,
18 tools_list=tools_list, # pass every turn
19 tokenize=False,
20 add_generation_prompt=True,
21 )
22 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
23 with torch.no_grad():
24 out = model.generate(
25 **inputs, max_new_tokens=max_new_tokens, do_sample=False,
26 eos_token_id=tokenizer.eos_token_id, pad_token_id=tokenizer.pad_token_id,
27 )
28 text = tokenizer.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=False)
29 return text.split("<|endoftext|>")[0].strip()
30
31
32tools = [
33 {
34 "name": "Quotes by Keywords",
35 "description": "Returns a list of quotes containing the specified keyword.",
36 "parameters": {
37 "type": "dict",
38 "properties": {"word": {"description": "The keyword to search for in quotes.", "type": "string"}},
39 "required": ["word"],
40 },
41 "required": None,
42 },
43 {
44 "name": "Get Zip Code Information",
45 "description": "Retrieve information about a specific zip code in the United States.",
46 "parameters": {
47 "type": "dict",
48 "properties": {
49 "country": {"description": "The country code (default: 'us')", "type": "string"},
50 "postal_code": {"description": "The zip code (default: '90210')", "type": "string"},
51 },
52 "required": ["country", "postal_code"],
53 },
54 "required": None,
55 },
56]
57
58tools_list = json.dumps(tools)
59messages = []
60
61# --- Turn 1: user → tool call ---
62messages.append({"role": "user", "content": 'Find quotes about "inspiration".'})
63reply = generate(max_new_tokens=512,messages=messages)
64messages.append({"role": "assistant", "content": reply})
65print("Turn 1:", reply)
66
67# --- Turn 2: tool result → answer ---
68tool_call_response = """[{"name": "Quotes by Keywords", "results": {"quotes": [{"text": "Keep going.", "author": "Sam Levenson"}]}}]"""
69messages.append({"role": "tool", "content": tool_call_response})
70reply = generate(max_new_tokens=512,messages=messages)
71messages.append({"role": "assistant", "content": reply})
72print("Turn 2:", reply)