--- license: apache-2.0 base_model: google/functiongemma-270m-it library_name: transformers pipeline_tag: text-generation language: - en tags: - function-calling - tool-use - on-device - edge - functiongemma - personal-assistant - synthetic-data - safetensors model-index: - name: echo-functiongemma-270m results: [] --- # 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`](https://huggingface.co/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 ```python 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`](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.