Skip to content

Instantly share code, notes, and snippets.

@TimelessP
Created March 4, 2025 19:50
Show Gist options
  • Save TimelessP/01ddce51e5c5549db0f6e8c6feca2dfd to your computer and use it in GitHub Desktop.
Save TimelessP/01ddce51e5c5549db0f6e8c6feca2dfd to your computer and use it in GitHub Desktop.
LMStudio tool calling using act()
import lmstudio as lms
import time
import random
import math
# ----------------- Functions for LLM to Call -----------------
def get_time() -> str:
"""Returns the current time."""
return time.strftime("%Y-%m-%d %H:%M:%S")
def convert_units(value: float, unit: str) -> str:
"""
Converts between common units.
Supported conversions:
- "km" → Converts kilometers to miles (default assumption).
- "miles" → Converts miles to kilometers (default assumption).
- "km_to_miles" → Explicitly converts kilometers to miles.
- "miles_to_km" → Explicitly converts miles to kilometers.
- "c_to_f" → Converts Celsius to Fahrenheit.
If only "km" or "miles" is given, the function assumes "km_to_miles" or "miles_to_km".
Example:
>>> convert_units(100, "km")
"100 km to miles = 62.14"
>>> convert_units(50, "miles")
"50 miles to km = 80.47"
"""
conversions = {
"c_to_f": lambda c: c * 9/5 + 32,
"km_to_miles": lambda km: km * 0.621371,
"miles_to_km": lambda miles: miles / 0.621371
}
# Normalize user input
unit = unit.lower().replace(" ", "_").replace("-", "_")
# Handle ambiguous input by defaulting to common conversions
if unit == "km":
unit = "km_to_miles"
elif unit == "miles":
unit = "miles_to_km"
if unit in conversions:
return f"{value} {unit.replace('_', ' ')} = {conversions[unit](value):.2f}"
return f"Unsupported unit conversion: {unit}"
def is_prime(n: int) -> bool:
"""Returns True if a number is prime."""
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def random_number(start: int, end: int) -> int:
"""Returns a random number between start and end."""
return random.randint(start, end)
# ----------------- Load LM Studio Model -----------------
model = lms.llm("phi-4@q3_k_l")
# ----------------- Example Query Using Function Calling -----------------
model.act(
"What is the current time? Also, convert 100 km to miles and check if 97 is prime.",
tools=[get_time, convert_units, is_prime, random_number], # Pass tools as a list
on_message=print,
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment