ECHO FunctionGemma 270M

ECHO is a small on-device personal assistant model. It reads a user request and chooses the right tool, with arguments, to carry it out on the local machine. It is a fine-tune of google/functiongemma-270m-it and is built to run without a cloud connection on hardware such as a Raspberry Pi 4B (4GB) or a Windows desktop.

Creators: Lakshy M. Chaurasia and Pratigya M. Chaurasia, Level Play Studio.

Model details

Item Value
Base model google/functiongemma-270m-it
Parameters ~270M
Format Safetensors (model.safetensors)
Language English (Indian English context)
Task Function calling for personal computer and assistant actions
Intended hardware Raspberry Pi 4B (4GB), Windows desktop, edge devices
Context Single-turn tool selection

Supported tools

The model is trained to call these 13 tools:

Tool Purpose
music_manager Play, pause, resume, next, previous. Includes classic Indian film and ghazal music.
get_weather Current weather and forecasts for a city or region.
open_application Launch desktop apps, terminals, and utilities.
close_application Close or terminate running apps.
task_manager Create, list, delete, and complete tasks and reminders.
get_current_time Return the local time.
get_current_date Return the date and day of the week.
get_system_info CPU, RAM, disk, and OS diagnostics.
volume_manager Set, mute, unmute, increase, or decrease audio volume (0–100).
take_screenshot Capture the full screen, the active window, or a region.
file_manager List, read, create, write, append, search, rename, move, copy, delete, and inspect files and folders. Includes multi-turn navigation (search, list, read, then respond).
response Conversational replies and final answers after a tool call. Includes ECHO's philosophical persona and creator information.
web_search Search the web for current news, facts, and tutorials.

Training data

  • Source: synthetic. User queries and tool calls were generated with Gemini and checked against the tool schemas before use.
  • Size: about 5,200 examples in total, split roughly 90% train and 10% evaluation, stratified by tool.
  • Format: each example is a chat with a developer message (date, time, day of week, and the tool list), a user message, and an assistant tool call. Tool lists are shuffled per example.
  • Coverage: English only. Indian cities, names, festivals, and Windows paths. Varied styles: formal requests, short voice commands, slang, typos, and multi-sentence commands.
  • Validation: arguments must match the schema exactly (names, types, enum values, and the 0–100 volume range). Non-English text and duplicate queries were removed.

Evaluation

Evaluation uses a held-out split of the synthetic data. Replace the placeholders below with your measured results.

Metric Score
Tool-name accuracy XX.XX%
Exact-arguments accuracy XX.XX%
Schema-valid calls XX.XX%

Synthetic evaluation does not show real-world performance. Test on real user phrasings before relying on the model.

How to use

from transformers import AutoTokenizer, AutoModelForCausalLM

repo_id = "YOUR_USERNAME/echo-functiongemma-270m"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(repo_id, torch_dtype="auto")

tools = [
    {
        "type": "function",
        "function": {
            "name": "volume_manager",
            "description": "Adjusts host master audio volume or toggles mute status.",
            "parameters": {
                "type": "object",
                "properties": {
                    "action": {"type": "string", "description": "Volume action: 'set', 'mute', 'unmute', 'increase', 'decrease'."},
                    "level": {"type": "integer", "description": "Integer audio level between 0 and 100."},
                },
                "required": ["action"],
            },
        },
    },
    # Add the other tools from the table above as needed.
]

messages = [
    {"role": "developer", "content": "Current date and time given in YYYY-MM-DDTHH:MM:SS format: 2026-10-18T09:30:00\nDay of week is Sunday\nYou are a model that can do function calling with the following functions\n"},
    {"role": "user", "content": "Lower the sound to 20 percent"},
]

inputs = tokenizer.apply_chat_template(messages, tools=tools, add_generation_prompt=True, return_tensors="pt", return_dict=True)
output = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=False))

Parse the generated tool call and run it through your own tool dispatcher. Do not execute model output directly without checking the tool name and arguments against the schema.

Limitations

  • Trained on synthetic data, so it may miss phrasings and situations that real users write.
  • Supports only the 13 tools listed above. Requests for other tools will not be handled correctly.
  • Multi-turn examples cover mainly file_manager navigation and summarizing tool output in response. Long multi-step workflows across other tools are not covered.
  • English only.
  • Music knowledge covers mainly Indian film and ghazal music from about 1950 to 1980. Verify artist and song names for other genres.
  • Argument values such as file paths and times should be checked before any action is taken on the device.

Safety

ECHO can open and close applications, change system volume, and capture the screen. Run actions through a confirmation step for anything destructive, and never run it with elevated permissions without review.

Citation

@misc{echo_functiongemma_270m,
  title  = {ECHO FunctionGemma 270M},
  author = {Chaurasia, Lakshy M. and Chaurasia, Pratigya M.},
  year   = {2026},
  note   = {Level Play Studio}
}

License

This model is licensed under the Apache License, Version 2.0. See the LICENSE file for the full text.

Note: the base model google/functiongemma-270m-it is distributed under Google's Gemma terms of use, not Apache 2.0. Those terms may apply to derivative weights, so check them before you rely on Apache 2.0 for this model alone.

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

Model tree for levelplaystudio/echo

Finetuned
(469)
this model