echo / README.md
Lakshychaurasia's picture
Update README.md
00c9437 verified
|
Raw History Blame Contribute Delete
6.78 kB
---
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.