Merge pull request #82 from acon96/release/v0.2.7

Release v0.2.7
This commit is contained in:
Alex O'Connell
2024-03-04 22:57:41 -05:00
committed by GitHub
60 changed files with 3384 additions and 1107 deletions

19
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: Bug report
about: Create a bug report about the Home Assistant Component or Addon
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Logs**
If applicable, please upload any error or debug logs output by Home Assistant.
Please do not report issues with the model generating incorrect output. If you are having trouble getting the correct output from the model, please open a Discussion thread instead.

View File

@@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest a new feature for the Home Assistant Component
title: ''
labels: enhancement
assignees: ''
---
**Please describe what you are trying to do with the component**
A clear and concise description of what the missing capability is. (Ex. There is a sampling parameter that I want to use for my model that isn't exposed.)
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Additional context**
Add any other context or screenshots about the feature request here.
Please do not request features for the model as an issue. You can refer to the pinned Discussion thread to make feature requests for the model/dataset.

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@ core/
config/
.DS_Store
data/*.json
data/*.jsonl
*.pyc
main.log
.venv

View File

@@ -651,4 +651,48 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.
---
STABILITY AI NON-COMMERCIAL RESEARCH COMMUNITY LICENSE AGREEMENT
Dated: December 06, 2023
By using or distributing any portion or element of the Models, Software, Software Products or Derivative Works, you agree to be bound by this Agreement.
"Agreement" means this Stable Non-Commercial Research Community License Agreement.
“AUP” means the Stability AI Acceptable Use Policy available at https://stability.ai/use-policy, as may be updated from time to time.
"Derivative Work(s)” means (a) any derivative work of the Software Products as recognized by U.S. copyright laws and (b) any modifications to a Model, and any other model created which is based on or derived from the Model or the Models output. For clarity, Derivative Works do not include the output of any Model.
“Documentation” means any specifications, manuals, documentation, and other written information provided by Stability AI related to the Software.
"Licensee" or "you" means you, or your employer or any other person or entity (if you are entering into this Agreement on such person or entity's behalf), of the age required under applicable laws, rules or regulations to provide legal consent and that has legal authority to bind your employer or such other person or entity if you are entering in this Agreement on their behalf.
“Model(s)" means, collectively, Stability AIs proprietary models and algorithms, including machine-learning models, trained model weights and other elements of the foregoing, made available under this Agreement.
“Non-Commercial Uses” means exercising any of the rights granted herein for the purpose of research or non-commercial purposes. Non-Commercial Uses does not include any production use of the Software Products or any Derivative Works.
"Stability AI" or "we" means Stability AI Ltd. and its affiliates.
"Software" means Stability AIs proprietary software made available under this Agreement.
“Software Products” means the Models, Software and Documentation, individually or in any combination.
1. License Rights and Redistribution.
a. Subject to your compliance with this Agreement, the AUP (which is hereby incorporated herein by reference), and the Documentation, Stability AI grants you a non-exclusive, worldwide, non-transferable, non-sublicensable, revocable, royalty free and limited license under Stability AIs intellectual property or other rights owned or controlled by Stability AI embodied in the Software Products to use, reproduce, distribute, and create Derivative Works of, the Software Products, in each case for Non-Commercial Uses only.
b. You may not use the Software Products or Derivative Works to enable third parties to use the Software Products or Derivative Works as part of your hosted service or via your APIs, whether you are adding substantial additional functionality thereto or not. Merely distributing the Software Products or Derivative Works for download online without offering any related service (ex. by distributing the Models on HuggingFace) is not a violation of this subsection. If you wish to use the Software Products or any Derivative Works for commercial or production use or you wish to make the Software Products or any Derivative Works available to third parties via your hosted service or your APIs, contact Stability AI at https://stability.ai/contact.
c. If you distribute or make the Software Products, or any Derivative Works thereof, available to a third party, the Software Products, Derivative Works, or any portion thereof, respectively, will remain subject to this Agreement and you must (i) provide a copy of this Agreement to such third party, and (ii) retain the following attribution notice within a "Notice" text file distributed as a part of such copies: "This Stability AI Model is licensed under the Stability AI Non-Commercial Research Community License, Copyright (c) Stability AI Ltd. All Rights Reserved.” If you create a Derivative Work of a Software Product, you may add your own attribution notices to the Notice file included with the Software Product, provided that you clearly indicate which attributions apply to the Software Product and you must state in the NOTICE file that you changed the Software Product and how it was modified.
2. Disclaimer of Warranty. UNLESS REQUIRED BY APPLICABLE LAW, THE SOFTWARE PRODUCTS AND ANY OUTPUT AND RESULTS THEREFROM ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE SOFTWARE PRODUCTS, DERIVATIVE WORKS OR ANY OUTPUT OR RESULTS AND ASSUME ANY RISKS ASSOCIATED WITH YOUR USE OF THE SOFTWARE PRODUCTS, DERIVATIVE WORKS AND ANY OUTPUT AND RESULTS.
3. Limitation of Liability. IN NO EVENT WILL STABILITY AI OR ITS AFFILIATES BE LIABLE UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT, NEGLIGENCE, PRODUCTS LIABILITY, OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, FOR ANY LOST PROFITS OR ANY DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL, EXEMPLARY OR PUNITIVE DAMAGES, EVEN IF STABILITY AI OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF ANY OF THE FOREGOING.
4. Intellectual Property.
a. No trademark licenses are granted under this Agreement, and in connection with the Software Products or Derivative Works, neither Stability AI nor Licensee may use any name or mark owned by or associated with the other or any of its affiliates, except as required for reasonable and customary use in describing and redistributing the Software Products or Derivative Works.
b. Subject to Stability AIs ownership of the Software Products and Derivative Works made by or for Stability AI, with respect to any Derivative Works that are made by you, as between you and Stability AI, you are and will be the owner of such Derivative Works
c. If you institute litigation or other proceedings against Stability AI (including a cross-claim or counterclaim in a lawsuit) alleging that the Software Products, Derivative Works or associated outputs or results, or any portion of any of the foregoing, constitutes infringement of intellectual property or other rights owned or licensable by you, then any licenses granted to you under this Agreement shall terminate as of the date such litigation or claim is filed or instituted. You will indemnify and hold harmless Stability AI from and against any claim by any third party arising out of or related to your use or distribution of the Software Products or Derivative Works in violation of this Agreement.
5. Term and Termination. The term of this Agreement will commence upon your acceptance of this Agreement or access to the Software Products and will continue in full force and effect until terminated in accordance with the terms and conditions herein. Stability AI may terminate this Agreement if you are in breach of any term or condition of this Agreement. Upon termination of this Agreement, you shall delete and cease use of any Software Products or Derivative Works. Sections 2-4 shall survive the termination of this Agreement.
6. Governing Law. This Agreement will be governed by and construed in accordance with the laws of the United States and the State of California without regard to choice of law
principles.

148
README.md
View File

@@ -1,40 +1,50 @@
# Home LLM
This project provides the required "glue" components to control your Home Assistant installation with a completely local Large Language Model acting as a personal assistant. The goal is to provide a drop in solution to be used as a "conversation agent" component by Home Assistant.
## Quick Start
Please see the [Setup Guide](./docs/Setup.md) for more information on installation.
## Home Assistant Component
In order to integrate with Home Assistant, we provide a `custom_component` that exposes the locally running LLM as a "conversation agent".
This component can be interacted with in a few ways:
- using a chat interface so you can chat with it.
- integrating with Speech-to-Text and Text-to-Speech addons so you can just speak to it.
The component can either run the model directly as part of the Home Assistant software using llama-cpp-python, or you can run the [oobabooga/text-generation-webui](https://github.com/oobabooga/text-generation-webui) project to provide access to the LLM via an API interface.
When doing this, you can host the model yourself and point the add-on at machine where the model is hosted, or you can run the model using text-generation-webui using the provided [custom Home Assistant add-on](./addon).
## Model
The "Home" models are a fine tuning of the Phi model series from Microsoft. The model is able to control devices in the user's house as well as perform basic question and answering. The fine tuning dataset is a combination of the [Cleaned Stanford Alpaca Dataset](https://huggingface.co/datasets/yahma/alpaca-cleaned) as well as a [custom synthetic dataset](./data) designed to teach the model function calling based on the device information in the context.
The "Home" models are a fine tuning of the Phi model series from Microsoft and the StableLM model series from StabilityAI. The model is able to control devices in the user's house as well as perform basic question and answering. The fine tuning dataset is a [custom synthetic dataset](./data) designed to teach the model function calling based on the device information in the context.
The latest models can be found on HuggingFace:
3B v2 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v2-GGUF
1B v2 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v2-GGUF
3B v3 (Based on StableLM-Zephyr-3B): https://huggingface.co/acon96/Home-3B-v3-GGUF (Zephyr prompt format)
1B v2 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v2-GGUF (ChatML prompt format)
<details>
<summary>Old Models</summary>
3B v1 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v1-GGUF
1B v1 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v1-GGUF
3B v2 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v2-GGUF (ChatML prompt format)
3B v1 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v1-GGUF (ChatML prompt format)
1B v1 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v1-GGUF (ChatML prompt format)
</details>
Make sure you have `llama-cpp-python>=0.2.29` in order to run these models.
The main difference between the 2 models (besides parameter count) is the training data. The 1B model is ONLY trained on the synthetic dataset provided in this project, while the 3B model is trained on a mixture of this synthetic dataset, and the cleaned Stanford Alpaca dataset.
The model is quantized using Llama.cpp in order to enable running the model in super low resource environments that are common with Home Assistant installations such as Raspberry Pis.
The model can be used as an "instruct" type model using the ChatML prompt format. The system prompt is used to provide information about the state of the Home Assistant installation including available devices and callable services.
The model can be used as an "instruct" type model using the [ChatML](https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/openai/includes/chat-markup-language.md) or [Zephyr](https://huggingface.co/HuggingFaceH4/zephyr-7b-alpha/discussions/3) prompt format (depends on the model). The system prompt is used to provide information about the state of the Home Assistant installation including available devices and callable services.
Example "system" prompt:
```
<|im_start|>system
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
Services: light.turn_off(), light.turn_on(brightness,rgb_color), fan.turn_on(), fan.turn_off()
Devices:
light.office 'Office Light' = on;80%
fan.office 'Office fan' = off
light.kitchen 'Kitchen Light' = on;80%;red
light.bedroom 'Bedroom Light' = off<|im_end|>
light.bedroom 'Bedroom Light' = off
```
For more about how the model is prompted see [Model Prompting](/docs/Model%20Prompting.md)
@@ -42,23 +52,22 @@ For more about how the model is prompted see [Model Prompting](/docs/Model%20Pro
Output from the model will consist of a response that should be relayed back to the user, along with an optional code block that will invoke different Home Assistant "services". The output format from the model for function calling is as follows:
`````
<|im_start|>assistant
turning on the kitchen lights for you now
```homeassistant
{ "service": "light.turn_on", "target_device": "light.kitchen" }
```<|im_end|>
```
`````
Due to the mix of data used during fine tuning, the 3B model is also capable of basic instruct and QA tasks. For example, the model is able to perform basic logic tasks such as the following:
Due to the mix of data used during fine tuning, the 3B model is also capable of basic instruct and QA tasks. For example, the model is able to perform basic logic tasks such as the following (Zephyr prompt format shown):
```
<|im_start|>system You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
<|system|>You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
*snip*
<|im_end|>
<|im_start|>user
if mary is 7 years old, and I am 3 years older than her. how old am I?<|im_end|>
<|im_start|>assistant
If Mary is 7 years old, then you are 10 years old (7+3=10).<|im_end|>
<|endoftext|>
<|user|>
if mary is 7 years old, and I am 3 years older than her. how old am I?<|endoftext|>
<|assistant|>
If Mary is 7 years old, then you are 10 years old (7+3=10).<|endoftext|>
```
### Synthetic Dataset
@@ -74,7 +83,7 @@ The 3B model was trained as a LoRA on an RTX 3090 (24GB) using the following set
<details>
<summary>Training Arguments</summary>
```
```console
python3 train.py \
--run_name home-3b \
--base_model microsoft/phi-2 \
@@ -97,7 +106,7 @@ The 1B model was trained as a full fine-tuning on on an RTX 3090 (24GB). Trainin
<details>
<summary>Training Arguments</summary>
```
```console
python3 train.py \
--run_name home-1b \
--base_model microsoft/phi-1_5 \
@@ -113,101 +122,14 @@ python3 train.py \
</details>
<br/>
## Home Assistant Component
In order to integrate with Home Assistant, we provide a `custom_component` that exposes the locally running LLM as a "conversation agent" that can be interacted with using a chat interface as well as integrate with Speech-to-Text and Text-to-Speech addons to enable interacting with the model by speaking.
## Home Assistant Addon
In order to facilitate running the project entirely on the system where Home Assistant is installed, there is an experimental Home Assistant Add-on that runs the oobabooga/text-generation-webui to connect to using the "remote" backend options. The addon can be found in the [addon/](./addon/README.md) directory.
The component can either run the model directly as part of the Home Assistant software using llama-cpp-python, or you can run the [oobabooga/text-generation-webui](https://github.com/oobabooga/text-generation-webui) project to provide access to the LLM via an API interface. When doing this, you can host the model yourself and point the add-on at machine where the model is hosted, or you can run the model using text-generation-webui using the provided [custom Home Assistant add-on](./addon).
When running the model locally with Llama.cpp, the component also constrains the model output using a GBNF grammar. This forces the model to provide valid output no matter what because it is constrained to outputting valid JSON every time. This helps the model perform significantly better at lower quantization levels where it would generate syntax errors previously. See [output.gbnf](./custom_components/llama_conversation/output.gbnf) for the existing grammar.
### Installing with HACS
You can use this button to add the repository to HACS and open the download page
[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?category=Integration&repository=home-llm&owner=acon96)
### Installing Manually
1. Ensure you have either the Samba, SSH, FTP, or another add-on installed that gives you access to the `config` folder
2. If there is not already a `custom_components` folder, create one now.
3. Copy the `custom_components/llama_conversation` folder from this repo to `config/custom_components/llama_conversation` on your Home Assistant machine.
4. Restart Home Assistant using the "Developer Tools" tab -> Services -> Run `homeassistant.restart`
5. The "LLaMA Conversation" integration should show up in the "Devices" section now.
### Setting up
When setting up the component, there are 4 different "backend" options to choose from:
1. Llama.cpp with a model from HuggingFace
2. Llama.cpp with a locally provided model
3. A remote instance of text-generation-webui
4. A generic OpenAI API compatible interface; *should* be compatible with LocalAI, LM Studio, and all other OpenAI compatible backends
See [docs/Backend Configuration.md](/docs/Backend%20Configuration.md) for more info.
**Installing llama-cpp-python for local model usage**:
In order to run a model directly as part of your Home Assistant installation, you will need to install one of the pre-build wheels because there are no existing musllinux wheels for the package. Compatible wheels for x86_x64 and arm64 are provided in the [dist](./dist) folder. Copy the `*.whl` files to the `custom_components/llama_conversation/` folder. They will be installed while setting up the component.
**Setting up the Llama.cpp backend with a model from HuggingFace**:
You need the following settings to configure the local backend from HuggingFace:
1. Model Name: the name of the model in the form `repo/model-name`. The repo MUST contain a GGUF quantized model.
2. Model Quantization: The quantization level to download. Pick from the list. Higher quantizations use more RAM but have higher quality responses.
**Setting up the Llama.cpp backend with a locally downloaded model**:
You need the following settings to configure the local backend from HuggingFace:
1. Model File Name: the file name where Home Assistant can access the model to load. Most likely a sub-path of `/config` or `/media` or wherever you copied the model file to.
**Setting up the "remote" backends**:
You need the following settings in order to configure the "remote" backend:
1. Hostname: the host of the machine where text-generation-webui API is hosted. If you are using the provided add-on then the hostname is `local-text-generation-webui` or `f459db47-text-generation-webui` depending on how the addon was installed.
2. Port: the port for accessing the text-generation-webui API. NOTE: this is not the same as the UI port. (Usually 5000)
3. Name of the Model: This name must EXACTLY match the name as it appears in `text-generation-webui`
With the remote text-generation-webui backend, the component will validate that the selected model is available for use and will ensure it is loaded remotely. The Generic OpenAI compatible version does NOT do any validation or model loading.
**Setting up with LocalAI**:
If you are an existing LocalAI user or would like to use LocalAI as your backend, please refer to [this](https://io.midori-ai.xyz/howtos/setup-with-ha/) website which has instructions on how to setup LocalAI to work with Home-LLM including automatic installation of the latest version of the the Home-LLM model. The auto-installer (LocalAI Manager) will automatically download and setup LocalAI and/or the model of your choice and automatically create the necessary template files for the model to work with this integration.
### Configuring the component as a Conversation Agent
**NOTE: ANY DEVICES THAT YOU SELECT TO BE EXPOSED TO THE MODEL WILL BE ADDED AS CONTEXT AND POTENTIALLY HAVE THEIR STATE CHANGED BY THE MODEL. ONLY EXPOSE DEVICES THAT YOU ARE OK WITH THE MODEL MODIFYING THE STATE OF, EVEN IF IT IS NOT WHAT YOU REQUESTED. THE MODEL MAY OCCASIONALLY HALLUCINATE AND ISSUE COMMANDS TO THE WRONG DEVICE! USE AT YOUR OWN RISK.**
In order to utilize the conversation agent in HomeAssistant:
1. Navigate to "Settings" -> "Voice Assistants"
2. Select "+ Add Assistant"
3. Name the assistant whatever you want.
4. Select the "Conversation Agent" that we created previously
5. If using STT or TTS configure these now
6. Return to the "Overview" dashboard and select chat icon in the top left.
From here you can submit queries to the AI agent.
In order for any entities be available to the agent, you must "expose" them first.
1. Navigate to "Settings" -> "Voice Assistants" -> "Expose" Tab
2. Select "+ Expose Entities" in the bottom right
3. Check any entities you would like to be exposed to the conversation agent.
### Running the text-generation-webui add-on
In order to facilitate running the project entirely on the system where Home Assistant is installed, there is an experimental Home Assistant Add-on that runs the oobabooga/text-generation-webui to connect to using the "remote" backend option.
You can use this button to automatically download and build the addon for `oobabooga/text-generation-webui`
[![Open your Home Assistant instance and show the dashboard of an add-on.](https://my.home-assistant.io/badges/supervisor_addon.svg)](https://my.home-assistant.io/redirect/supervisor_addon/?addon=f459db47_text-generation-webui&repository_url=https%3A%2F%2Fgithub.com%2Facon96%2Fhome-llm)
If the automatic installation fails then you can install the addon manually using the following steps:
1. Ensure you have either the Samba, SSH, FTP, or another add-on installed that gives you access to the `addons` folder
2. Copy the `addon` folder from this repo to `addons/text-generation-webui` on your Home Assistant machine.
3. Go to the "Add-ons" section in settings and then pick the "Add-on Store" from the bottom right corner.
4. Select the 3 dots in the top right and click "Check for Updates" and Refresh the webpage.
5. There should now be a "Local Add-ons" section at the top of the "Add-on Store"
6. Install the `oobabooga-text-generation-webui` add-on. It will take ~15-20 minutes to build the image on a Raspberry Pi.
7. Copy any models you want to use to the `addon_configs/local_text-generation-webui/models` folder or download them using the UI.
8. Load up a model to use. NOTE: The timeout for ingress pages is only 60 seconds so if the model takes longer than 60 seconds to load (very likely) then the UI will appear to time out and you will need to navigate to the add-on's logs to see when the model is fully loaded.
### Performance of running the model on a Raspberry Pi
The RPI4 4GB that I have was sitting right at 1.5 tokens/sec for prompt eval and 1.6 tokens/sec for token generation when running the `Q4_K_M` quant. I was reliably getting responses in 30-60 seconds after the initial prompt processing which took almost 5 minutes. It depends significantly on the number of devices that have been exposed as well as how many states have changed since the last invocation because llama.cpp caches KV values for identical prompt prefixes.
It is highly recommend to set up text-generation-webui on a separate machine that can take advantage of a GPU.
## Version History
| Version | Description |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| v0.2.7 | Publish model v3, Multiple Ollama backend improvements, Updates for HA 2024.02, support for voice assistant aliases |
| v0.2.6 | Bug fixes, add options for limiting chat history, HTTPS endpoint support, added zephyr prompt format. |
| v0.2.5 | Fix Ollama max tokens parameter, fix GGUF download from Hugging Face, update included llama-cpp-python to 0.2.32, and add parameters to function calling for dataset + component, & model update |
| v0.2.4 | Fix API key auth on model load for text-generation-webui, and add support for Ollama API backend |

15
TODO.md
View File

@@ -1,4 +1,12 @@
# TODO
- [ ] setup github actions to build wheels that are optimized for RPIs
- [ ] detection/mitigation of too many entities being exposed & blowing out the context length
- [ ] areas/room support
- [ ] figure out DPO for refusals + fixing incorrect entity id
- [ ] mixtral + prompting (no fine tuning)
- add in context learning variables to sys prompt template
- add new options to setup process for setting prompt style + picking fine-tuned/ICL
- [ ] prime kv cache with current "state" so that requests are faster
- [x] ChatML format (actually need to add special tokens)
- [x] Vicuna dataset merge (yahma/alpaca-cleaned)
- [x] Phi-2 fine tuning
@@ -11,7 +19,6 @@
- [ ] multi-turn prompts; better instruct dataset like dolphin/wizardlm?
- [x] Fine tune Phi-1.5 version
- [x] make llama-cpp-python wheels for "llama-cpp-python>=0.2.24"
- [ ] prime kv cache with current "state" so that requests are faster
- [x] make a proper evaluation framework to run. not just loss. should test accuracy on the function calling
- [x] add more remote backends
- LocalAI (openai compatible)
@@ -19,10 +26,8 @@
- support chat completions API (might fix Ollama + adds support for text-gen-ui characters)
- [x] more config options for prompt template (allow other than chatml)
- [x] publish snapshot of dataset on HF
- [ ] figure out DPO for refusals + fixing incorrect entity id
- [ ] mixtral + prompting (no fine tuning)
- [ ] use varied system prompts to add behaviors
- [ ] setup github actions to build wheels that are optimized for RPIs
- [x] use varied system prompts to add behaviors
## more complicated ideas
- [ ] "context requests"

View File

@@ -23,7 +23,7 @@ RUN \
python3-venv \
python3-pip \
\
&& git clone https://github.com/oobabooga/text-generation-webui.git ${APP_DIR} --branch snapshot-2024-02-04 \
&& git clone https://github.com/oobabooga/text-generation-webui.git ${APP_DIR} --branch snapshot-2024-03-03 \
&& python3 -m pip install torch torchvision torchaudio py-cpuinfo==9.0.0 \
&& python3 -m pip install -r ${APP_DIR}/requirements_cpu_only_noavx2.txt -r ${APP_DIR}/extensions/openai/requirements.txt llama-cpp-python \
&& apt-get purge -y --auto-remove \

View File

@@ -1,6 +1,6 @@
---
name: oobabooga-text-generation-webui
version: 2024.02.04
version: 2024.03.03
slug: text-generation-webui
description: "A tool for running Large Language Models"
url: "https://github.com/oobabooga/text-generation-webui"

View File

@@ -9,34 +9,19 @@ import requests
import re
import os
import json
import webcolors
import voluptuous as vol
from collections.abc import Iterable
import homeassistant.components.conversation as ha_conversation
from homeassistant.components.conversation import ConversationInput, ConversationResult, AbstractConversationAgent
from homeassistant.components.conversation.const import DOMAIN as CONVERSATION_DOMAIN
from homeassistant.components.homeassistant.exposed_entities import (
async_should_expose,
)
from homeassistant.components.homeassistant.exposed_entities import async_should_expose
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_ENTITY_ID, CONF_HOST, CONF_PORT, CONF_SSL, MATCH_ALL
from homeassistant.core import (
HomeAssistant,
ServiceCall,
ServiceResponse,
SupportsResponse,
)
from homeassistant.exceptions import (
ConfigEntryNotReady,
HomeAssistantError,
TemplateError,
)
from homeassistant.helpers import config_validation as cv, intent, selector, template
from homeassistant.helpers.typing import ConfigType
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady, ConfigEntryError, TemplateError
from homeassistant.helpers import config_validation as cv, intent, template, entity_registry as er
from homeassistant.util import ulid
from .utils import closest_color, flatten_vol_schema, install_llama_cpp_python
from .const import (
CONF_CHAT_MODEL,
CONF_MAX_TOKENS,
@@ -59,6 +44,7 @@ from .const import (
CONF_SERVICE_CALL_REGEX,
CONF_REMOTE_USE_CHAT_ENDPOINT,
CONF_TEXT_GEN_WEBUI_CHAT_MODE,
CONF_OLLAMA_KEEP_ALIVE_MIN,
DEFAULT_MAX_TOKENS,
DEFAULT_PROMPT,
DEFAULT_TEMPERATURE,
@@ -75,6 +61,7 @@ from .const import (
DEFAULT_REMOTE_USE_CHAT_ENDPOINT,
DEFAULT_TEXT_GEN_WEBUI_CHAT_MODE,
DEFAULT_OPTIONS,
DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
BACKEND_TYPE_LLAMA_HF,
BACKEND_TYPE_LLAMA_EXISTING,
BACKEND_TYPE_TEXT_GEN_WEBUI,
@@ -165,34 +152,6 @@ async def async_migrate_entry(hass, config_entry: ConfigEntry):
return True
def closest_color(requested_color):
min_colors = {}
for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_color[0]) ** 2
gd = (g_c - requested_color[1]) ** 2
bd = (b_c - requested_color[2]) ** 2
min_colors[(rd + gd + bd)] = name
return min_colors[min(min_colors.keys())]
def flatten_schema(schema):
flattened = []
def _flatten(current_schema, prefix=''):
if isinstance(current_schema, vol.Schema):
if isinstance(current_schema.schema, vol.validators._WithSubValidators):
for subval in current_schema.schema.validators:
_flatten(subval, prefix)
elif isinstance(current_schema.schema, dict):
for key, val in current_schema.schema.items():
_flatten(val, prefix + str(key) + '/')
elif isinstance(current_schema, vol.validators._WithSubValidators):
for subval in current_schema.validators:
_flatten(subval, prefix)
elif callable(current_schema):
flattened.append(prefix[:-1] if prefix else prefix)
_flatten(schema)
return flattened
class LLaMAAgent(AbstractConversationAgent):
"""Local LLaMA conversation agent."""
@@ -381,12 +340,18 @@ class LLaMAAgent(AbstractConversationAgent):
"""Gather exposed entity states"""
entity_states = {}
domains = set()
entity_registry = er.async_get(self.hass)
for state in self.hass.states.async_all():
if not async_should_expose(self.hass, CONVERSATION_DOMAIN, state.entity_id):
continue
entity = entity_registry.async_get(state.entity_id)
attributes = dict(state.attributes)
attributes["state"] = state.state
if entity and entity.aliases:
attributes["aliases"] = entity.aliases
entity_states[state.entity_id] = attributes
domains.add(state.domain)
@@ -451,15 +416,21 @@ class LLaMAAgent(AbstractConversationAgent):
result = result + ";" + str(value)
return result
formatted_states = "\n".join(
[f"{name} '{attributes.get('friendly_name')}' = {expose_attributes(attributes)}" for name, attributes in entities_to_expose.items()]
) + "\n"
device_states = [f"{name} '{attributes.get('friendly_name')}' = {expose_attributes(attributes)}" for name, attributes in entities_to_expose.items()]
# expose devices as their alias as well
for name, attributes in entities_to_expose.items():
if "aliases" in attributes:
for alias in attributes["aliases"]:
device_states.append(f"{name} '{alias}' = {expose_attributes(attributes)}")
formatted_states = "\n".join(device_states) + "\n"
service_dict = self.hass.services.async_services()
all_services = []
for domain in domains:
for name, service in service_dict.get(domain, {}).items():
args = flatten_schema(service.schema)
args = flatten_vol_schema(service.schema)
args_to_expose = set(args).intersection(extra_attributes_to_expose)
all_services.append(f"{domain}.{name}({','.join(args_to_expose)})")
formatted_services = ", ".join(all_services)
@@ -488,7 +459,16 @@ class LocalLLaMAAgent(LLaMAAgent):
raise Exception(f"Model was not found at '{self.model_path}'!")
# don't import it until now because the wheel is installed by config_flow.py
module = importlib.import_module("llama_cpp")
try:
module = importlib.import_module("llama_cpp")
except ModuleNotFoundError:
# attempt to re-install llama-cpp-python if it was uninstalled for some reason
install_result = install_llama_cpp_python(self.hass.config.config_dir)
if not install_result == True:
raise ConfigEntryError("llama-cpp-python was not installed on startup and re-installing it led to an error!")
module = importlib.import_module("llama_cpp")
Llama = getattr(module, "Llama")
LlamaGrammar = getattr(module, "LlamaGrammar")
@@ -750,6 +730,24 @@ class OllamaAPIAgent(LLaMAAgent):
self.api_key = entry.data.get(CONF_OPENAI_API_KEY)
self.model_name = entry.data.get(CONF_CHAT_MODEL)
# ollama handles loading for us so just make sure the model is available
try:
headers = {}
if self.api_key:
headers["Authorization"] = f"Bearer {self.api_key}"
currently_downloaded_result = requests.get(
f"{self.api_host}/api/tags",
headers=headers,
)
currently_downloaded_result.raise_for_status()
except Exception as ex:
_LOGGER.debug("Connection error was: %s", repr(ex))
raise ConfigEntryNotReady("There was a problem connecting to the remote server") from ex
if not any([ x["name"].split(":")[0] == self.model_name for x in currently_downloaded_result.json()["models"]]):
raise ConfigEntryNotReady(f"Ollama server does not have the provided model: {self.model_name}")
def _chat_completion_params(self, conversation: dict) -> (str, dict):
request_params = {}
@@ -781,12 +779,14 @@ class OllamaAPIAgent(LLaMAAgent):
temperature = self.entry.options.get(CONF_TEMPERATURE, DEFAULT_TEMPERATURE)
top_p = self.entry.options.get(CONF_TOP_P, DEFAULT_TOP_P)
timeout = self.entry.options.get(CONF_REQUEST_TIMEOUT, DEFAULT_REQUEST_TIMEOUT)
keep_alive = self.entry.options.get(CONF_OLLAMA_KEEP_ALIVE_MIN, DEFAULT_OLLAMA_KEEP_ALIVE_MIN)
use_chat_api = self.entry.options.get(CONF_REMOTE_USE_CHAT_ENDPOINT, DEFAULT_REMOTE_USE_CHAT_ENDPOINT)
request_params = {
"model": self.model_name,
"stream": False,
"keep_alive": f"{keep_alive}m", # prevent ollama from unloading the model
"options": {
"top_p": top_p,
"temperature": temperature,

View File

@@ -1,25 +1,19 @@
"""Config flow for Local LLaMA Conversation integration."""
from __future__ import annotations
import time
import os
import sys
import logging
import requests
import platform
from types import MappingProxyType
from typing import Any
from abc import ABC, abstractmethod
from importlib.metadata import version
from huggingface_hub import hf_hub_download, HfFileSystem
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.core import HomeAssistant
from homeassistant.requirements import pip_kwargs
from homeassistant.util.package import install_package, is_installed
from homeassistant.const import CONF_HOST, CONF_PORT, CONF_SSL
from homeassistant.const import CONF_HOST, CONF_PORT, CONF_SSL, UnitOfTime
from homeassistant.data_entry_flow import (
AbortFlow,
FlowHandler,
@@ -29,6 +23,7 @@ from homeassistant.data_entry_flow import (
from homeassistant.helpers.selector import (
NumberSelector,
NumberSelectorConfig,
NumberSelectorMode,
TemplateSelector,
SelectSelector,
SelectSelectorConfig,
@@ -37,6 +32,7 @@ from homeassistant.helpers.selector import (
TextSelectorConfig,
)
from .utils import download_model_from_hf, install_llama_cpp_python
from .const import (
CONF_CHAT_MODEL,
CONF_MAX_TOKENS,
@@ -61,6 +57,7 @@ from .const import (
CONF_SERVICE_CALL_REGEX,
CONF_REMOTE_USE_CHAT_ENDPOINT,
CONF_TEXT_GEN_WEBUI_CHAT_MODE,
CONF_OLLAMA_KEEP_ALIVE_MIN,
DEFAULT_CHAT_MODEL,
DEFAULT_HOST,
DEFAULT_PORT,
@@ -82,6 +79,7 @@ from .const import (
DEFAULT_OPTIONS,
DEFAULT_REMOTE_USE_CHAT_ENDPOINT,
DEFAULT_TEXT_GEN_WEBUI_CHAT_MODE,
DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
BACKEND_TYPE_LLAMA_HF,
BACKEND_TYPE_LLAMA_EXISTING,
BACKEND_TYPE_TEXT_GEN_WEBUI,
@@ -167,62 +165,6 @@ def STEP_REMOTE_SETUP_DATA_SCHEMA(backend_type: str, *, host=None, port=None, ss
}
)
def download_model_from_hf(
model_name: str, quantization_type: str, storage_folder: str
):
try:
fs = HfFileSystem()
potential_files = [ f for f in fs.glob(f"{model_name}/*.gguf") ]
wanted_file = [f for f in potential_files if (f".{quantization_type.lower()}." in f or f".{quantization_type.upper()}." in f)]
if len(wanted_file) != 1:
raise Exception(f"The quantization '{quantization_type}' does not exist in the HF repo for {model_name}")
os.makedirs(storage_folder, exist_ok=True)
return hf_hub_download(
repo_id=model_name,
repo_type="model",
filename=wanted_file[0].removeprefix(model_name + "/"),
resume_download=True,
cache_dir=storage_folder,
)
except Exception as ex:
return ex
def install_llama_cpp_python(config_dir: str):
try:
platform_suffix = platform.machine()
if platform_suffix == "arm64":
platform_suffix = "aarch64"
folder = os.path.dirname(__file__)
potential_wheels = sorted([ path for path in os.listdir(folder) if path.endswith(f"{platform_suffix}.whl") ], reverse=True)
if len(potential_wheels) == 0:
# someone who is better at async can figure out why this is necessary
time.sleep(0.5)
if is_installed("llama-cpp-python"):
_LOGGER.info("llama-cpp-python is already installed")
return True
return Exception("missing_wheels")
latest_wheel = potential_wheels[0]
latest_version = latest_wheel.split("-")[1]
if not is_installed("llama-cpp-python") or version("llama-cpp-python") != latest_version:
_LOGGER.info("Installing llama-cpp-python from wheel")
_LOGGER.debug(f"Wheel location: {latest_wheel}")
return install_package(os.path.join(folder, latest_wheel), pip_kwargs(config_dir))
else:
# someone who is better at async can figure out why this is necessary
time.sleep(0.5)
_LOGGER.info("llama-cpp-python is already installed")
return True
except Exception as ex:
_LOGGER.exception("Install failed!")
return ex
class BaseLlamaConversationConfigFlow(FlowHandler, ABC):
"""Represent the base config flow for Z-Wave JS."""
@@ -313,29 +255,23 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
schema = STEP_INIT_DATA_SCHEMA()
if user_input:
try:
local_backend = is_local_backend(user_input[CONF_BACKEND_TYPE])
self.model_config.update(user_input)
except Exception: # pylint: disable=broad-except
_LOGGER.exception("Unexpected exception")
errors["base"] = "unknown"
local_backend = is_local_backend(user_input[CONF_BACKEND_TYPE])
self.model_config.update(user_input)
if local_backend:
return await self.async_step_install_local_wheels()
# this check isn't working right now
# for key, value in self.hass.data.get(DOMAIN, {}).items():
# other_backend_type = value.data.get(CONF_BACKEND_TYPE)
# if other_backend_type == BACKEND_TYPE_LLAMA_HF or \
# other_backend_type == BACKEND_TYPE_LLAMA_EXISTING:
# errors["base"] = "other_existing_local"
# schema = STEP_INIT_DATA_SCHEMA(
# backend_type=user_input[CONF_BACKEND_TYPE],
# )
# if "base" not in errors:
# return await self.async_step_install_local_wheels()
else:
if local_backend:
return await self.async_step_install_local_wheels()
# this check isn't working right now
# for key, value in self.hass.data.get(DOMAIN, {}).items():
# other_backend_type = value.data.get(CONF_BACKEND_TYPE)
# if other_backend_type == BACKEND_TYPE_LLAMA_HF or \
# other_backend_type == BACKEND_TYPE_LLAMA_EXISTING:
# errors["base"] = "other_existing_local"
# schema = STEP_INIT_DATA_SCHEMA(
# backend_type=user_input[CONF_BACKEND_TYPE],
# )
# if "base" not in errors:
# return await self.async_step_install_local_wheels()
else:
return await self.async_step_remote_model()
return await self.async_step_remote_model()
elif self.install_wheel_error:
errors["base"] = str(self.install_wheel_error)
self.install_wheel_error = None
@@ -350,6 +286,7 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
if not user_input:
if self.install_wheel_task:
return self.async_show_progress(
progress_task=self.install_wheel_task,
step_id="install_local_wheels",
progress_action="install_local_wheels",
)
@@ -362,6 +299,7 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
self.hass.async_create_task(self._async_do_task(self.install_wheel_task))
return self.async_show_progress(
progress_task=self.install_wheel_task,
step_id="install_local_wheels",
progress_action="install_local_wheels",
)
@@ -402,24 +340,18 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
downloaded_model_quantization=self.model_config[CONF_DOWNLOADED_MODEL_QUANTIZATION]
)
if user_input:
try:
self.model_config.update(user_input)
if user_input and "result" not in user_input:
self.model_config.update(user_input)
except Exception: # pylint: disable=broad-except
_LOGGER.exception("Unexpected exception")
errors["base"] = "unknown"
if backend_type == BACKEND_TYPE_LLAMA_HF:
return await self.async_step_download()
else:
if backend_type == BACKEND_TYPE_LLAMA_HF:
return await self.async_step_download()
model_file = self.model_config[CONF_DOWNLOADED_MODEL_FILE]
if os.path.exists(model_file):
return await self.async_step_finish()
else:
model_file = self.model_config[CONF_DOWNLOADED_MODEL_FILE]
if os.path.exists(model_file):
return await self.async_step_finish()
else:
errors["base"] = "missing_model_file"
schema = STEP_LOCAL_SETUP_EXISTING_DATA_SCHEMA(model_file)
errors["base"] = "missing_model_file"
schema = STEP_LOCAL_SETUP_EXISTING_DATA_SCHEMA(model_file)
return self.async_show_form(
step_id="local_model", data_schema=schema, errors=errors
@@ -431,6 +363,7 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
if not user_input:
if self.download_task:
return self.async_show_progress(
progress_task=self.download_task,
step_id="download",
progress_action="download",
)
@@ -446,6 +379,7 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
self.hass.async_create_task(self._async_do_task(self.download_task))
return self.async_show_progress(
progress_task=self.download_task,
step_id="download",
progress_action="download",
)
@@ -462,7 +396,7 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
return self.async_show_progress_done(next_step_id="finish")
def _validate_remote_api(self, user_input: dict) -> str:
def _validate_text_generation_webui(self, user_input: dict) -> str:
try:
headers = {}
api_key = user_input.get(CONF_TEXT_GEN_WEBUI_ADMIN_KEY, user_input.get(CONF_OPENAI_API_KEY))
@@ -486,6 +420,31 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
except Exception as ex:
_LOGGER.info("Connection error was: %s", repr(ex))
return "failed_to_connect"
def _validate_ollama(self, user_input: dict) -> str:
try:
headers = {}
api_key = user_input.get(CONF_OPENAI_API_KEY)
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
models_result = requests.get(
f"{'https' if self.model_config[CONF_SSL] else 'http'}://{self.model_config[CONF_HOST]}:{self.model_config[CONF_PORT]}/api/tags",
headers=headers
)
models_result.raise_for_status()
models = models_result.json()["models"]
for model in models:
if model["name"].split(":")[0] == self.model_config[CONF_CHAT_MODEL]:
return ""
return "missing_model_api"
except Exception as ex:
_LOGGER.info("Connection error was: %s", repr(ex))
return "failed_to_connect"
async def async_step_remote_model(
self, user_input: dict[str, Any] | None = None
@@ -497,26 +456,30 @@ class ConfigFlow(BaseLlamaConversationConfigFlow, config_entries.ConfigFlow, dom
if user_input:
try:
self.model_config.update(user_input)
error_reason = None
# only validate and load when using text-generation-webui
# validate and load when using text-generation-webui or ollama
if backend_type == BACKEND_TYPE_TEXT_GEN_WEBUI:
error_reason = await self.hass.async_add_executor_job(
self._validate_remote_api, user_input
self._validate_text_generation_webui, user_input
)
elif backend_type == BACKEND_TYPE_OLLAMA:
error_reason = await self.hass.async_add_executor_job(
self._validate_ollama, user_input
)
if error_reason:
errors["base"] = error_reason
schema = STEP_REMOTE_SETUP_DATA_SCHEMA(
backend_type,
host=user_input[CONF_HOST],
port=user_input[CONF_PORT],
ssl=user_input[CONF_SSL],
chat_model=user_input[CONF_CHAT_MODEL],
use_chat_endpoint=user_input[CONF_REMOTE_USE_CHAT_ENDPOINT],
webui_preset=user_input.get(CONF_TEXT_GEN_WEBUI_PRESET),
webui_chat_mode=user_input.get(CONF_TEXT_GEN_WEBUI_CHAT_MODE),
)
if error_reason:
errors["base"] = error_reason
schema = STEP_REMOTE_SETUP_DATA_SCHEMA(
backend_type,
host=user_input[CONF_HOST],
port=user_input[CONF_PORT],
ssl=user_input[CONF_SSL],
chat_model=user_input[CONF_CHAT_MODEL],
use_chat_endpoint=user_input[CONF_REMOTE_USE_CHAT_ENDPOINT],
webui_preset=user_input.get(CONF_TEXT_GEN_WEBUI_PRESET),
webui_chat_mode=user_input.get(CONF_TEXT_GEN_WEBUI_CHAT_MODE),
)
else:
return await self.async_step_finish()
else:
return await self.async_step_finish()
@@ -668,7 +631,7 @@ def local_llama_config_option_schema(options: MappingProxyType[str, Any], backen
CONF_REQUEST_TIMEOUT,
description={"suggested_value": options.get(CONF_REQUEST_TIMEOUT)},
default=DEFAULT_REQUEST_TIMEOUT,
): int,
): NumberSelector(NumberSelectorConfig(min=5, max=900, step=1, unit_of_measurement=UnitOfTime.SECONDS, mode=NumberSelectorMode.BOX)),
vol.Required(
CONF_REMOTE_USE_CHAT_ENDPOINT,
description={"suggested_value": options.get(CONF_REMOTE_USE_CHAT_ENDPOINT)},
@@ -695,7 +658,7 @@ def local_llama_config_option_schema(options: MappingProxyType[str, Any], backen
CONF_REQUEST_TIMEOUT,
description={"suggested_value": options.get(CONF_REQUEST_TIMEOUT)},
default=DEFAULT_REQUEST_TIMEOUT,
): int,
): NumberSelector(NumberSelectorConfig(min=5, max=900, step=1, unit_of_measurement=UnitOfTime.SECONDS, mode=NumberSelectorMode.BOX)),
vol.Required(
CONF_REMOTE_USE_CHAT_ENDPOINT,
description={"suggested_value": options.get(CONF_REMOTE_USE_CHAT_ENDPOINT)},
@@ -718,7 +681,7 @@ def local_llama_config_option_schema(options: MappingProxyType[str, Any], backen
CONF_REQUEST_TIMEOUT,
description={"suggested_value": options.get(CONF_REQUEST_TIMEOUT)},
default=DEFAULT_REQUEST_TIMEOUT,
): int,
): NumberSelector(NumberSelectorConfig(min=5, max=900, step=1, unit_of_measurement=UnitOfTime.SECONDS, mode=NumberSelectorMode.BOX)),
vol.Required(
CONF_REMOTE_USE_CHAT_ENDPOINT,
description={"suggested_value": options.get(CONF_REMOTE_USE_CHAT_ENDPOINT)},
@@ -751,7 +714,12 @@ def local_llama_config_option_schema(options: MappingProxyType[str, Any], backen
CONF_REQUEST_TIMEOUT,
description={"suggested_value": options.get(CONF_REQUEST_TIMEOUT)},
default=DEFAULT_REQUEST_TIMEOUT,
): int,
): NumberSelector(NumberSelectorConfig(min=5, max=900, step=1, unit_of_measurement=UnitOfTime.SECONDS, mode=NumberSelectorMode.BOX)),
vol.Required(
CONF_OLLAMA_KEEP_ALIVE_MIN,
description={"suggested_value": options.get(CONF_OLLAMA_KEEP_ALIVE_MIN)},
default=DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
): NumberSelector(NumberSelectorConfig(min=-1, max=1440, step=1, unit_of_measurement=UnitOfTime.MINUTES, mode=NumberSelectorMode.BOX)),
vol.Required(
CONF_REMOTE_USE_CHAT_ENDPOINT,
description={"suggested_value": options.get(CONF_REMOTE_USE_CHAT_ENDPOINT)},

View File

@@ -104,6 +104,8 @@ TEXT_GEN_WEBUI_CHAT_MODE_CHAT = "chat"
TEXT_GEN_WEBUI_CHAT_MODE_INSTRUCT = "instruct"
TEXT_GEN_WEBUI_CHAT_MODE_CHAT_INSTRUCT = "chat-instruct"
DEFAULT_TEXT_GEN_WEBUI_CHAT_MODE = TEXT_GEN_WEBUI_CHAT_MODE_CHAT
CONF_OLLAMA_KEEP_ALIVE_MIN = "ollama_keep_alive"
DEFAULT_OLLAMA_KEEP_ALIVE_MIN = 30
DEFAULT_OPTIONS = types.MappingProxyType(
{

View File

@@ -1,7 +1,7 @@
{
"domain": "llama_conversation",
"name": "LLaMA Conversation",
"version": "0.2.6",
"version": "0.2.7",
"codeowners": ["@acon96"],
"config_flow": true,
"dependencies": ["conversation"],

View File

@@ -7,7 +7,7 @@
"missing_model_file": "The provided file does not exist.",
"other_existing_local": "Another model is already loaded locally. Please unload it or configure a remote model.",
"unknown": "Unexpected error",
"missing_wheels": "Llama.cpp is not installed and could not find any wheels to install!",
"missing_wheels": "Llama.cpp is not installed and could not find any wheels to install! See the logs for more information.",
"pip_wheel_error": "Pip returned an error while installing the wheel!"
},
"progress": {
@@ -60,6 +60,7 @@
"top_k": "Top K",
"top_p": "Top P",
"request_timeout": "Remote Request Timeout (seconds)",
"ollama_keep_alive": "Keep Alive/Inactivity Timeout (minutes)",
"extra_attributes_to_expose": "Additional attribute to expose in the context",
"gbnf_grammar": "Enable GBNF Grammar",
"openai_api_key": "API Key",

View File

@@ -0,0 +1,104 @@
import time
import os
import sys
import platform
import logging
import voluptuous as vol
import webcolors
from importlib.metadata import version
from huggingface_hub import hf_hub_download, HfFileSystem
from homeassistant.requirements import pip_kwargs
from homeassistant.util.package import install_package, is_installed
_LOGGER = logging.getLogger(__name__)
def closest_color(requested_color):
min_colors = {}
for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_color[0]) ** 2
gd = (g_c - requested_color[1]) ** 2
bd = (b_c - requested_color[2]) ** 2
min_colors[(rd + gd + bd)] = name
return min_colors[min(min_colors.keys())]
def flatten_vol_schema(schema):
flattened = []
def _flatten(current_schema, prefix=''):
if isinstance(current_schema, vol.Schema):
if isinstance(current_schema.schema, vol.validators._WithSubValidators):
for subval in current_schema.schema.validators:
_flatten(subval, prefix)
elif isinstance(current_schema.schema, dict):
for key, val in current_schema.schema.items():
_flatten(val, prefix + str(key) + '/')
elif isinstance(current_schema, vol.validators._WithSubValidators):
for subval in current_schema.validators:
_flatten(subval, prefix)
elif callable(current_schema):
flattened.append(prefix[:-1] if prefix else prefix)
_flatten(schema)
return flattened
def download_model_from_hf(model_name: str, quantization_type: str, storage_folder: str):
try:
fs = HfFileSystem()
potential_files = [ f for f in fs.glob(f"{model_name}/*.gguf") ]
wanted_file = [f for f in potential_files if (f".{quantization_type.lower()}." in f or f".{quantization_type.upper()}." in f)]
if len(wanted_file) != 1:
raise Exception(f"The quantization '{quantization_type}' does not exist in the HF repo for {model_name}")
os.makedirs(storage_folder, exist_ok=True)
return hf_hub_download(
repo_id=model_name,
repo_type="model",
filename=wanted_file[0].removeprefix(model_name + "/"),
resume_download=True,
cache_dir=storage_folder,
)
except Exception as ex:
return ex
def install_llama_cpp_python(config_dir: str):
try:
platform_suffix = platform.machine()
if platform_suffix == "arm64":
platform_suffix = "aarch64"
folder = os.path.dirname(__file__)
potential_wheels = sorted([ path for path in os.listdir(folder) if path.endswith(f"{platform_suffix}.whl") ], reverse=True)
potential_wheels = [ wheel for wheel in potential_wheels if f"cp{sys.version_info.major}{sys.version_info.minor}" in wheel ]
if len(potential_wheels) == 0:
# someone who is better at async can figure out why this is necessary
time.sleep(0.5)
if is_installed("llama-cpp-python"):
_LOGGER.info("llama-cpp-python is already installed")
return True
_LOGGER.error(
"Error installing llama-cpp-python. Could not find any wheels that match the following filters. " + \
f"platform: {platform_suffix}, python version: {sys.version_info.major}.{sys.version_info.minor}. " + \
"If you recently updated Home Assistant, then you may need to use a different wheel than previously. " + \
"Make sure that the correct .whl file is located in config/custom_components/llama_conversation/*"
)
return Exception("missing_wheels")
latest_wheel = potential_wheels[0]
latest_version = latest_wheel.split("-")[1]
if not is_installed("llama-cpp-python") or version("llama-cpp-python") != latest_version:
_LOGGER.info("Installing llama-cpp-python from wheel")
_LOGGER.debug(f"Wheel location: {latest_wheel}")
return install_package(os.path.join(folder, latest_wheel), pip_kwargs(config_dir))
else:
# someone who is better at async can figure out why this is necessary
time.sleep(0.5)
_LOGGER.info("llama-cpp-python is already installed")
return True
except Exception as ex:
_LOGGER.exception("Install failed!")
return ex

View File

@@ -22,10 +22,11 @@ The dataset is generated from the different CSV "piles". The "piles" contain dif
## Generating the dataset from piles
`python3 generate_home_assistant_data.py --train --test --large`
`python3 generate_home_assistant_data.py --train --test --large --sharegpt`
Supported dataset splits are `--test`, `--train`, & `--sample`
Arguments to set the train dataset size are `--small`, `--medium`, `--large`, & `--xl`.
Supported formats are `--raw_corpus` (chatml formatted) & `--sharegpt`
## Merging with other instruct-datasets for training
@@ -35,4 +36,27 @@ Supported datasets right now are:
- `alpaca`
- `wizardlm70k`
Please note that the supported datasets all have different licenses. Be aware that the license of the resulting data mixture might be different that the license of this dataset alone.
Please note that the supported datasets all have different licenses. Be aware that the license of the resulting data mixture might be different that the license of this dataset alone.
## Adding a new personality
In order to add a new personality, you need to define a new system prompt and new set of responses for the assistant. The system prompt is the description of the assistant's behavior that occurs at the start of the context. The responses are what is said back to the user when performing a task. The model should still respond with the correct service call no matter what the assistant's response is. The list of system prompts are stored in `pile_of_system_prompts.csv`, and the list of responses are stored in `pile_of_responses.csv`
There are 2 columns in `pile_of_system_prompts.csv`:
- `persona`: the name of the persona
- `prompt`: the system prompt to use for that persona. Recommended to put this in quotes in case the prompt also has commas in it
The response pile is a CSV with the following headers: `service,response,language,persona,short`
- `service`: the service name that we are responding to. Make sure you cover enough different services so that the model can learn how to respond in all situations.
- `response`: the text of the response. Recommended to put this in quotes in case the response also has commas in it
- `language`: the language code of the response (currently only `en` is supported)
- `persona`: the name of the persona the response belongs to. Use the name of your persona here
- `short`: either 0 or 1. If it is 1 then the response is considered "short', and can be combined together with other "short" responses using "and". These are used for examples where there are multiple service calls
Generating the full dataset using the python script will print out a warning for any responses that are missing for a persona.
## Adding new Home Assistant functionality
TODO
<!-- In order to add new home assistant device types, you will need to add data to a handful of piles, as well as make small modifications to the `generate_home_assistant_data.py` script.
1. Add 15-30 new device names with the new type to the `pile_of_device_names.csv`. This should be an entity_id and a 'friendly name'
2. Add
-->

View File

@@ -1,17 +1,21 @@
import argparse
import json
import csv
import pandas
import numpy as np
import random
import re
from dataclasses import dataclass
from datasets import load_dataset, concatenate_datasets
from difflib import SequenceMatcher
from typing import Final, Any
from typing import Final, Any, Callable, Optional
from tqdm import tqdm
import webcolors
# #### STATES ####
STATE_ON: Final = "on"
STATE_OFF: Final = "off"
STATE_ACTIVE: Final = "active"
STATE_UNKNOWN: Final = "unknown"
STATE_OPEN: Final = "open"
STATE_OPENING: Final = "opening"
@@ -30,6 +34,9 @@ STATE_JAMMED: Final = "jammed"
STATE_UNAVAILABLE: Final = "unavailable"
STATE_OK: Final = "ok"
STATE_PROBLEM: Final = "problem"
STATE_CLEANING: Final = "cleaning"
STATE_DOCKED: Final = "docked"
STATE_RETURNING: Final = "returning"
def closest_color(requested_color):
min_colors = {}
@@ -46,6 +53,7 @@ class DeviceType:
name: str
possible_states: list[(str, float)]
services: dict[str, list]
random_parameter_generator: Optional[dict[str, Callable]] = None
def get_all_services(self, extra_exposed_attributes):
result = []
@@ -53,6 +61,9 @@ class DeviceType:
args = set(extra_exposed_attributes).intersection(self.services[service])
result.append(f"{self.name}.{service}({','.join(args)})")
return result
def get_random_parameter(self, param_name):
return self.random_parameter_generator[param_name]()
def get_random_state(self, extra_exposed_attributes=[]):
states = [ x[0] for x in self.possible_states ]
@@ -71,17 +82,21 @@ class LightDeviceType(DeviceType):
"turn_off": [],
"toggle": []
},
random_parameter_generator={
"rgb_color": lambda: (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
"brightness": lambda: random.randint(0, 100),
}
)
def get_random_state(self, extra_exposed_attributes=[]):
state = super().get_random_state(extra_exposed_attributes=extra_exposed_attributes)
if random.random() < 0.5 and "rgb_color" in extra_exposed_attributes:
random_rgb = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
random_rgb = self.get_random_parameter("rgb_color")
state = state + ";" + closest_color(random_rgb) + " " + str(random_rgb)
if random.random() < 0.7 and "brightness" in extra_exposed_attributes:
state = state + ";" + str(random.randint(0, 100)) + "%"
state = state + ";" + str(self.get_random_parameter("brightness")) + "%"
return state
@@ -96,33 +111,46 @@ class ClimateDeviceType(DeviceType):
"set_fan_mode": ["fan_mode"],
"set_hvac_mode": ["hvac_mode"],
"set_preset_mode": ["preset_mode"]
},
random_parameter_generator={
"fan_mode": lambda: random.choice(["On Low", "On High", "Auto Low", "Auto High", "Off"]),
"temp_f": lambda: random.randint(60, 80),
"temp_c": lambda: random.randint(15, 25),
"humidity": lambda: random.randint(10, 90),
"preset_mode": lambda: random.choice(["home", "eco", "away", "auto"]),
"hvac_mode": lambda: random.choice(["heat", "cool", "heat_cool", "off", "auto", "fan_only"]),
})
def get_random_state(self, extra_exposed_attributes=[]):
"""state;fan_mode;temperature;humidity"""
state = random.choice(["heat", "cool", "heat_cool", "off", "auto", "fan_only"])
state = self.get_random_parameter("hvac_mode")
if "fan_mode" in extra_exposed_attributes:
state = state + ";" + random.choice(["On Low", "On High", "Auto Low", "Auto High", "Off"])
state = state + ";" + self.get_random_parameter("fan_mode")
if "temperature" in extra_exposed_attributes:
if random.random() > 0.5:
state = state + ";" + str(random.randint(60, 80)) + "F"
state = state + ";" + str(self.get_random_parameter("temp_f")) + "F"
else:
state = state + ";" + str(random.randint(15, 25)) + "C"
state = state + ";" + str(self.get_random_parameter("temp_c")) + "C"
if "humidity" in extra_exposed_attributes:
state = state + ";" + str(random.randint(10, 90)) + "%"
state = state + ";" + str(self.get_random_parameter("humidity")) + "%"
if "preset_mode" in extra_exposed_attributes:
if random.random() < 0.8 and "preset_mode" in extra_exposed_attributes:
# if it is not "on a preset" then don't add the mode
random_mode = random.choice(["home", "eco", "away", "auto", None, None, None])
if random_mode:
state = state + ";" + random_mode
state = state + ";" + self.get_random_parameter("preset_mode")
return state
with open("piles/pile_of_media_names.csv") as f:
with open("piles/pile_of_durations.csv") as f:
reader = csv.DictReader(f)
pile_of_durations = { x["duration"]: x["english_name"] for x in reader }
with open("piles/pile_of_media_names.txt") as f:
pile_of_media_names = [ x.strip() for x in f.readlines() ]
with open("piles/pile_of_todo_items.txt") as f:
pile_of_todo_items = [ x.strip() for x in f.readlines() ]
class MediaPlayerDeviceType(DeviceType):
def __init__(self):
super().__init__("media_player", [
@@ -146,17 +174,20 @@ class MediaPlayerDeviceType(DeviceType):
"media_stop": [],
"media_next_track": [],
"media_previous_track": []
},
random_parameter_generator={
"media": lambda: random.choice(pile_of_media_names),
"volume": lambda: round(random.random(), 2),
})
def get_random_state(self, extra_exposed_attributes=[]):
state = super().get_random_state(extra_exposed_attributes=extra_exposed_attributes)
if "media_title" in extra_exposed_attributes and state in [STATE_PLAYING, STATE_PAUSED, STATE_BUFFERING, STATE_ON]:
state = state + ";" + random.choice(pile_of_media_names)
state = state + ";" + self.get_random_parameter("media")
if "volume_level" in extra_exposed_attributes and state != STATE_OFF:
state = state + ";vol=" + str(round(random.random(), 2))
state = state + ";vol=" + str(self.get_random_parameter("volume"))
return state
SUPPORTED_DEVICES = {
@@ -229,7 +260,52 @@ SUPPORTED_DEVICES = {
},
),
"media_player": MediaPlayerDeviceType(),
"climate": ClimateDeviceType()
"climate": ClimateDeviceType(),
"vacuum": DeviceType(
name="vacuum",
possible_states=[
(STATE_CLEANING, 0.2),
(STATE_DOCKED, 0.6),
(STATE_RETURNING, 0.1),
(STATE_IDLE, 0.05),
(STATE_PAUSED, 0.05),
],
services={
"start": [],
"pause": [],
"stop": [],
"return_to_base": [],
},
),
"timer": DeviceType(
name="timer",
possible_states=[
(STATE_IDLE, 0.2),
(STATE_ACTIVE, 0.6),
(STATE_PAUSED, 0.1),
],
services={
"start": ["duration"],
"pause": [],
"cancel": [],
},
random_parameter_generator={
"duration": lambda: random.choice(list(pile_of_durations.keys())),
"remaining": lambda: f"{random.randint(0, 3):02}:{random.randint(0, 60)}:{random.randint(0, 60)}"
}
),
"todo": DeviceType(
name="timer",
possible_states=[ (f"{i}", (1/32)) for i in range(32) ],
services={
"add_item": ["item"],
"pause": [],
"cancel": [],
},
random_parameter_generator={
"todo": lambda: random.choice(pile_of_todo_items),
}
),
}
stacks_of_device_names = { x: [] for x in SUPPORTED_DEVICES.keys() }
@@ -248,29 +324,60 @@ with open("piles/pile_of_templated_actions.csv") as f:
pile_of_templated_actions = list(reader)
processed_pile_of_templated_actions = []
for action in pile_of_templated_actions:
for x in range(int(action["multiplier"])):
try:
multiplier = int(action["multiplier"])
except Exception:
raise Exception(f"line has a bad multiplier: {action}")
for x in range(multiplier):
processed_pile_of_templated_actions.append(action)
pile_of_templated_actions = processed_pile_of_templated_actions
with open("piles/pile_of_device_actions.csv") as f:
with open("piles/pile_of_specific_actions.csv") as f:
reader = csv.DictReader(f)
pile_of_device_actions = list(reader)
pile_of_specific_actions = list(reader)
with open("piles/pile_of_responses.csv") as f:
reader = csv.DictReader(f)
raw_pile_of_responses = list(reader)
pile_of_responses = pandas.read_csv("piles/pile_of_responses.csv")
pile_of_responses = {}
for raw in raw_pile_of_responses:
if raw["device_type"] not in pile_of_responses:
pile_of_responses[raw["device_type"]] = {}
pile_of_responses[raw["device_type"]][raw["service"]] = [ raw["response_1"], raw["response_2"], raw["response_3"] ]
var_pattern = re.compile("<(.*?)>")
def get_included_vars(response: str):
result = []
for var in var_pattern.findall(response):
if var == "device_name":
continue
result.append(var)
return ",".join(sorted(result))
pile_of_responses["contains_vars"] = pile_of_responses["response"].apply(get_included_vars)
class NoResponseAvailableException(Exception):
pass
def get_random_response(*, service: str, language: str, persona: str, question_template: str, short: bool) -> str:
required_vars = list(set([var for var in var_pattern.findall(question_template) if "device_name" not in var]))
possible_results = pile_of_responses.loc[(pile_of_responses['service']==service) &
(pile_of_responses['language']==language) &
(pile_of_responses['persona']==persona) &
(pile_of_responses['short']==(1 if short else 0)) &
(pile_of_responses['contains_vars']==",".join(sorted(required_vars)))
]
if len(possible_results) == 0:
raise NoResponseAvailableException(f"No responses matched the provided filters: {persona}, {service}, {language}, {required_vars}, {short}")
return possible_results.sample()["response"].values[0]
with open("piles/pile_of_status_requests.csv") as f:
reader = csv.DictReader(f)
pile_of_status_requests = list(reader)
with open("piles/pile_of_system_prompts.csv") as f:
reader = csv.DictReader(f)
pile_of_system_prompts = { line["persona"]: line["prompt"] for line in reader }
def format_device_line(*, device_name: str, friendly_name: str, state: str):
return (f"{device_name} '{friendly_name}' = {state}")
@@ -304,7 +411,7 @@ def random_device_list(max_devices: int, avoid_device_names: list[str]):
device_list = []
device_lines = []
# TODO: randomly pick attributes for this list
extra_exposed_attributes = ["rgb_color", "brightness", "temperature", "humidity", "fan_mode", "media_title", "volume_level"]
extra_exposed_attributes = ["rgb_color", "brightness", "temperature", "humidity", "fan_mode", "media_title", "volume_level", "duration", "remaining", "item"]
while len(device_list) < num_devices:
choice = random.choice(possible_choices)
@@ -334,12 +441,12 @@ def random_device_list(max_devices: int, avoid_device_names: list[str]):
return device_lines, list(device_types), list(extra_exposed_attributes)
def generate_static_example(action: dict, max_devices: int = 32):
def generate_static_example(action: dict, language: str, persona: str, max_devices: int = 32):
question = action["english_phrase"]
target_device = action["device_name"]
device_type = target_device.split(".")[0]
service_name = f"{device_type}.{action['service_name']}"
friendly_name = target_device.split(".")[1].replace("_", " ")
service_name = action["service_name"]
device_type = service_name.split(".")[0]
target_device = f"{device_type}.{action['device_name']}"
friendly_name = target_device.split(".")[1].replace("_", " ").title()
device_list, device_types, extra_exposed_attributes = random_device_list(
max_devices=max_devices, avoid_device_names=[target_device])
@@ -359,19 +466,28 @@ def generate_static_example(action: dict, max_devices: int = 32):
for x in set(device_types + [device_type]):
available_services.extend(SUPPORTED_DEVICES[x].get_all_services(extra_exposed_attributes))
response = get_random_response(
service=action["service_name"],
language=language,
persona=persona,
question_template="",
short=False
).lower()
response = response.replace("<device_name>", friendly_name)
return {
"states": device_list,
"available_services": list(available_services),
"question": question.lower(),
"answers": [ random.choice(pile_of_responses[device_type][action["service_name"]]).lower() ],
"answers": [ response ],
"service_calls": [ { "service": service_name, "target_device": target_device } ]
}
def generate_templated_example(template: dict, max_devices: int = 32):
def generate_templated_example(template: dict, language: str, persona: str, max_devices: int = 32):
template_device_types: list[str] = template["device_type"].split("|")
service_names: list[str] = [ f"{x}.{y}" for x, y in zip(template_device_types, template["service"].split("|")) ]
question_template: str = template["english_phrase"]
answer_template: str = template["assistant_response"]
# choose a random device for this template
chosen_devices = []
@@ -395,6 +511,10 @@ def generate_templated_example(template: dict, max_devices: int = 32):
extra_exposed_attributes.append("temperature")
if "<humidity>" in question_template and "humidity" not in extra_exposed_attributes:
extra_exposed_attributes.append("humidity")
if "<fan_mode>" in question_template and "fan_mode" not in extra_exposed_attributes:
extra_exposed_attributes.append("fan_mode")
if "<duration>" in question_template and "duration" not in extra_exposed_attributes:
extra_exposed_attributes.append("duration")
state = SUPPORTED_DEVICES[device_dict["type"]].get_random_state(extra_exposed_attributes=extra_exposed_attributes)
device_name = device_dict["device_name"]
@@ -411,16 +531,35 @@ def generate_templated_example(template: dict, max_devices: int = 32):
for x in set(device_types + template_device_types):
available_services.extend(SUPPORTED_DEVICES[x].get_all_services(extra_exposed_attributes))
# generate the question
# pick an appropriate response and generate the question
if len(template_device_types) == 1:
# TODO: pick correct resonse here (also probaly need to pass in language and persona)
answer_template = get_random_response(
service=service_names[0],
language=language,
persona=persona,
question_template=question_template,
short=False
)
question = question_template.replace("<device_name>", chosen_devices[0]["description"])
answer = answer_template.replace("<device_name>", chosen_devices[0]["description"])
else:
else:
question = question_template
answer = answer_template
answers = []
for i in range(len(template_device_types)):
question = question.replace(f"<device_name{(i + 1)}>", chosen_devices[i]["description"])
answer = answer.replace(f"<device_name{(i + 1)}>", chosen_devices[i]["description"])
answer = get_random_response(
service=service_names[i],
language=language,
persona=persona,
question_template=question_template,
short=True
)
answers.append(answer.replace(f"<device_name>", chosen_devices[i]["description"]))
# TODO: support different "and" words per language
answer = " and ".join(answers)
# generate the list of service calls and answers
service_calls = []
@@ -428,40 +567,70 @@ def generate_templated_example(template: dict, max_devices: int = 32):
service_calls.append({ "service": service, "target_device": device_dict["device_name"] })
if any(["climate" in service for service in service_names ]):
climate_device_type = SUPPORTED_DEVICES["climate"]
if "<hvac_mode>" in question:
hvac_mode = climate_device_type.get_random_parameter("hvac_mode")
question = question.replace("<hvac_mode>", hvac_mode)
answer = answer.replace("<hvac_mode>", hvac_mode)
service_calls = [ { **call, "hvac_mode": hvac_mode} for call in service_calls ]
if "<fan_mode>" in question:
fan_mode = climate_device_type.get_random_parameter("fan_mode")
question = question.replace("<fan_mode>", fan_mode)
answer = answer.replace("<fan_mode>", fan_mode)
service_calls = [ { **call, "fan_mode": fan_mode} for call in service_calls ]
if "<temp_f>" in question:
temp_f = random.randint(60, 80)
temp_f = climate_device_type.get_random_parameter("temp_f")
question = question.replace("<temp_f>", str(temp_f))
answer = answer.replace("<temp_f>", str(temp_f))
service_calls = [ { **call, "temperature": temp_f} for call in service_calls ]
if "<temp_c>" in question:
temp_c = random.randint(15, 25)
temp_c = climate_device_type.get_random_parameter("temp_c")
question = question.replace("<temp_c>", str(temp_c))
answer = answer.replace("<temp_c>", str(temp_c))
service_calls = [ { **call, "temperature": temp_c} for call in service_calls ]
if "<humidity>" in question:
humidity = random.randint(0, 20) * 5
humidity = climate_device_type.get_random_parameter("humidity")
question = question.replace("<humidity>", str(humidity))
answer = answer.replace("<humidity>", str(humidity))
service_calls = [ { **call, "humidity": humidity} for call in service_calls ]
if any(["light" in service for service in service_names ]):
light_device_type = SUPPORTED_DEVICES["light"]
if "<brightness>" in question:
brightness = random.randint(0, 100)
brightness = light_device_type.get_random_parameter("brightness")
question = question.replace("<brightness>", str(brightness))
answer = answer.replace("<brightness>", str(brightness))
service_calls = [ { **call, "brightness": round(brightness / 100, 2) } for call in service_calls ]
if "<color>" in question:
random_rgb = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
random_rgb = light_device_type.get_random_parameter("rgb_color")
random_rgb_name = closest_color(random_rgb)
actual_random_rgb = webcolors.name_to_rgb(random_rgb_name)
actual_random_rgb = (actual_random_rgb.red, actual_random_rgb.green, actual_random_rgb.blue)
question = question.replace("<color>", str(random_rgb_name))
answer = answer.replace("<color>", str(random_rgb_name))
service_calls = [ { **call, "rgb_color": str(actual_random_rgb) } for call in service_calls ]
if any(["timer" in service for service in service_names ]):
timer_device_type = SUPPORTED_DEVICES["timer"]
if "<duration>" in question:
duration = timer_device_type.get_random_parameter("duration")
duration_name = pile_of_durations[duration]
question = question.replace("<duration>", duration_name)
answer = answer.replace("<duration>", duration_name)
service_calls = [ { **call, "duration": str(duration) } for call in service_calls ]
if any(["todo" in service for service in service_names ]):
todo_device_type = SUPPORTED_DEVICES["todo"]
if "<todo>" in question:
todo = todo_device_type.get_random_parameter("todo")
question = question.replace("<todo>", todo)
answer = answer.replace("<todo>", todo)
service_calls = [ { **call, "item": todo } for call in service_calls ]
return {
"states": device_list,
@@ -471,7 +640,7 @@ def generate_templated_example(template: dict, max_devices: int = 32):
"service_calls": service_calls
}
def generate_status_request(template: dict, max_devices: int = 32):
def generate_status_request(template: dict, language: str, persona: str, max_devices: int = 32):
device_type: str = template["device_type"]
state_name: str = template["state"]
question_template: str = template["english_phrase"]
@@ -492,24 +661,27 @@ def generate_status_request(template: dict, max_devices: int = 32):
# insert other templated variables
if device_type == "climate":
temp_f = random.randint(60, 80)
climate_device_type = SUPPORTED_DEVICES["climate"]
temp_f = climate_device_type.get_random_parameter("temp_f")
answer = answer.replace("<temp_f>", str(temp_f))
state_name = state_name.replace("<temp_f>", str(temp_f))
temp_c = random.randint(15, 25)
temp_c = climate_device_type.get_random_parameter("temp_c")
answer = answer.replace("<temp_c>", str(temp_c))
state_name = state_name.replace("<temp_c>", str(temp_f))
humidity = random.randint(0, 20) * 5
humidity = climate_device_type.get_random_parameter("humidity")
answer = answer.replace("<humidity>", str(humidity))
state_name = state_name.replace("<humidity>", str(temp_f))
if device_type == "light":
brightness = random.randint(0, 100)
light_device_type = SUPPORTED_DEVICES["light"]
brightness = light_device_type.get_random_parameter("brightness")
answer = answer.replace("<brightness>", str(brightness))
state_name = state_name.replace("<brightness>", str(brightness))
random_rgb = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
random_rgb = light_device_type.get_random_parameter("rgb_color")
random_rgb_name = closest_color(random_rgb)
actual_random_rgb = webcolors.name_to_rgb(random_rgb_name)
actual_random_rgb = (actual_random_rgb.red, actual_random_rgb.green, actual_random_rgb.blue)
@@ -517,8 +689,9 @@ def generate_status_request(template: dict, max_devices: int = 32):
answer = answer.replace("<color>", str(random_rgb_name))
if device_type == "media_player":
volume = random.randint(0, 100)
random_media = random.choice(pile_of_media_names)
media_player_device_type = SUPPORTED_DEVICES["media_player"]
volume = media_player_device_type.get_random_parameter("volume")
random_media = media_player_device_type.get_random_parameter("media")
answer = answer.replace("<volume>", str(volume) + "%")
state_name = state_name.replace("<volume>", str(volume) + "%")
@@ -526,6 +699,18 @@ def generate_status_request(template: dict, max_devices: int = 32):
answer = answer.replace("<media>", random_media)
state_name = state_name.replace("<media>", random_media)
if device_type == "timer":
timer_device_type = SUPPORTED_DEVICES["timer"]
duration = timer_device_type.get_random_parameter("duration")
duration_name = pile_of_durations[duration]
remaining = timer_device_type.get_random_parameter("remaining")
answer = answer.replace("<duration>", duration_name)
state_name = state_name.replace("<duration>", duration)
answer = answer.replace("<remaining>", remaining)
state_name = state_name.replace("<remaining>", remaining)
device_list.insert(index, f"{chosen_device['device_name']} = {state_name}")
# gather a list of all available services
@@ -541,8 +726,9 @@ def generate_status_request(template: dict, max_devices: int = 32):
"service_calls": []
}
def format_example(example):
sys_prompt = "You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only."
def format_example_raw_chatml(example, persona):
"""Don't use this one anymore"""
sys_prompt = pile_of_system_prompts[persona]
services_block = "Services: " + ", ".join(sorted(example["available_services"]))
states_block = "Devices:\n" + "\n".join(example["states"])
question = example["question"]
@@ -566,39 +752,83 @@ def format_example(example):
# replace aliases with their actual values
result = result.replace("blinds.", "cover.")
result = result.replace("garage_door.", "cover.")
return result
return { "text": result }
def format_example_sharegpt(example, persona):
sys_prompt = pile_of_system_prompts[persona]
services_block = "Services: " + ", ".join(sorted(example["available_services"]))
states_block = "Devices:\n" + "\n".join(example["states"])
question = example["question"]
answers = " ".join(example["answers"])
assistant_block = answers
if len(example["service_calls"]) > 0:
json_calls = [ json.dumps(x) for x in example["service_calls"] ]
code_block = "\n```homeassistant\n" + "\n".join(json_calls) + "\n```"
assistant_block = assistant_block + code_block
# replace aliases with their actual values
assistant_block = assistant_block.replace("blinds.", "cover.").replace("garage_door.", "cover.")
states_block = states_block.replace("blinds.", "cover.").replace("garage_door.", "cover.")
services_block = services_block.replace("blinds.", "cover.").replace("garage_door.", "cover.")
conversation = [
{ "from": "system", "value": "\n".join([ sys_prompt, services_block, states_block ])},
{ "from": "user", "value": question },
{ "from": "assistant", "value": assistant_block },
]
return { "conversations": conversation }
def generate_example_file(filename: str, seed: int, *, static_factor: int, template_factor: int, status_request_factor: int):
def generate_example_file(filename: str, seed: int, format_func: Callable, languages: list[str], personas: list[str], *, static_factor: int, template_factor: int, status_request_factor: int):
random.seed(seed)
np.random.seed(seed)
print("Generating...")
def run_factor_times(func, examples, data, factor):
def run_factor_times(func, examples, data, language, persona, factor):
if factor >= 1:
for i in range(factor):
examples.append({ "text": format_example(func(data)) })
examples.append(format_func(func(data, language, persona), persona))
else:
if random.random() < factor:
examples.append({ "text": format_example(func(data)) })
examples.append(format_func(func(data, language, persona), persona))
generated_examples = []
for action in tqdm(pile_of_device_actions):
run_factor_times(generate_static_example, generated_examples, action, static_factor)
for templated_action in tqdm(pile_of_templated_actions):
run_factor_times(generate_templated_example, generated_examples, templated_action, template_factor)
missing_responses = set()
for lang in languages:
for person in personas:
for action in tqdm(pile_of_specific_actions):
try:
run_factor_times(generate_static_example, generated_examples, action, lang, person, static_factor)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for templated_action in tqdm(pile_of_templated_actions):
try:
run_factor_times(generate_templated_example, generated_examples, templated_action, lang, person, template_factor)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for status_request in tqdm(pile_of_status_requests):
run_factor_times(generate_status_request, generated_examples, status_request, status_request_factor)
run_factor_times(generate_status_request, generated_examples, status_request, "en", "assistant", status_request_factor)
print(f"Generated {len(generated_examples)} examples. Saving...")
with open(f"{filename}.json", "w") as f:
json.dump(generated_examples, f, indent=4)
for missing in sorted(missing_responses):
print(missing)
with open(f"{filename}.jsonl", "w") as f:
for item in generated_examples:
json_record = json.dumps(item)
f.write(json_record + '\n')
print("Done!")
def format_alpaca(example):
def format_alpaca(example, format_func: Callable):
question = example["instruction"]
if "input" in example and example["input"]:
question = question = "\n" + example["input"]
@@ -612,7 +842,7 @@ def format_alpaca(example):
for x in device_types:
available_services.extend(SUPPORTED_DEVICES[x].get_all_services(extra_exposed_attributes))
text = format_example(example={
text = format_func(example={
"states": device_list,
"available_services": list(available_services),
"question": question,
@@ -626,60 +856,78 @@ def format_alpaca(example):
return result
def merge_with_dataset(dataset_name, seed, outupt_name, format_function, dataset_column_names):
def merge_with_dataset(dataset_name, seed, output_name, format_function, dataset_column_names, format_func):
alpaca_dataset = load_dataset(dataset_name)["train"].train_test_split(test_size=0.1)
home_assistant_dataset = load_dataset("json", data_files={ "train": "home_assistant_train.json", "test": "home_assistant_test.json" })
home_assistant_dataset = load_dataset("json", data_files={ "train": "home_assistant_train.jsonl", "test": "home_assistant_test.jsonl" })
random.seed(seed)
np.random.seed(seed)
alpaca_dataset = alpaca_dataset.map(format_function).remove_columns(dataset_column_names)
combined_dataset_train = concatenate_datasets([home_assistant_dataset["train"], alpaca_dataset["train"]]).shuffle(seed=42)
combined_dataset_test = concatenate_datasets([home_assistant_dataset["test"], alpaca_dataset["test"]]).shuffle(seed=42)
combined_dataset_train.to_json(f"home_assistant_{outupt_name}_merged_train.json")
combined_dataset_test.to_json(f"home_assistant_{outupt_name}_merged_test.json")
combined_dataset_train.to_json(f"home_assistant_{output_name}_merged_train.jsonl")
combined_dataset_test.to_json(f"home_assistant_{output_name}_merged_test.jsonl")
# TODO: add examples for ambiguous requests. asking a clarifying question
# TODO: make more randomized names for devices (random words or people's names)
# TODO: answer questions about more than one thing in the state list at once
# TODO: add examples for rooms/groups of devices. i.e. "turn off all the lights in the kitchen"
# TODO: add personas for responses. different system prompts should invoke different response tones (pirate, robot, and mean)
# TODO: add time, weather, and calendar/reminders (next 3 events?)
def main():
parser = argparse.ArgumentParser(description="Generate the full dataset from the CSV piles")
parser.add_argument("--sample", action="store_true", help="Set this flag to enable generation of the train dataset.")
parser.add_argument("--test", action="store_true", help="Set this flag to enable generation of the train dataset..")
parser.add_argument("--train", action="store_true", help="Set this flag to enable generation of the train dataset.")
parser.add_argument("--merge", help="Set this flag to merge the generated datasets with the specified dataset.")
train_size_group = parser.add_mutually_exclusive_group()
train_size_group.add_argument('--small', action='store_const', const='small', dest='size')
train_size_group.add_argument('--medium', action='store_const', const='medium', dest='size')
train_size_group.add_argument('--large', action='store_const', const='large', dest='size')
train_size_group.add_argument('--xl', action='store_const', const='xl', dest='size')
dataset_format_group = parser.add_mutually_exclusive_group()
dataset_format_group.add_argument('--raw_corpus', action='store_const', const='raw', dest='format')
dataset_format_group.add_argument('--sharegpt', action='store_const', const='sharegpt', dest='format')
args = parser.parse_args()
languages = ["en"]
personas = ["assistant", "pirate", "robot"]
if not args.sample and not args.train and not args.test and not args.merge:
parser.print_usage()
if not args.format or args.format == "raw":
format_func = format_example_raw_chatml
elif args.format == "sharegpt":
format_func = format_example_sharegpt
if args.sample:
generate_example_file("sample", 42, static_factor=1, template_factor=1, status_request_factor=1)
generate_example_file("sample", 42, format_func, languages, personas, static_factor=1, template_factor=1, status_request_factor=1)
if args.train:
# TODO: add small, medium, large cli clags
if args.size == "small":
generate_example_file("home_assistant_train", 42, static_factor=1, template_factor=10, status_request_factor=8)
generate_example_file("home_assistant_train", 42, format_func, languages, personas, static_factor=1, template_factor=10, status_request_factor=8)
elif args.size == "medium":
generate_example_file("home_assistant_train", 42, static_factor=5, template_factor=15, status_request_factor=12)
generate_example_file("home_assistant_train", 42, format_func, languages, personas, static_factor=5, template_factor=15, status_request_factor=12)
elif args.size == "large":
generate_example_file("home_assistant_train", 42, static_factor=5, template_factor=20, status_request_factor=15)
generate_example_file("home_assistant_train", 42, format_func, languages, personas, static_factor=5, template_factor=20, status_request_factor=15)
elif args.size == "xl":
generate_example_file("home_assistant_train", 42, static_factor=7, template_factor=25, status_request_factor=18)
generate_example_file("home_assistant_train", 42, format_func, languages, personas, static_factor=7, template_factor=25, status_request_factor=18)
else:
raise Exception(f"Unrecognized dataset size: {args.size}")
if args.test:
generate_example_file("home_assistant_test", 12345, static_factor=0.25, template_factor=3, status_request_factor=2)
generate_example_file("home_assistant_test", 12345, format_func, languages, personas, static_factor=0.25, template_factor=1, status_request_factor=2)
if args.merge == "alpaca":
merge_with_dataset("yahma/alpaca-cleaned", 42, "alpaca", format_alpaca, ["input", "output", "instruction"])
merge_with_dataset("yahma/alpaca-cleaned", 42, "alpaca", format_alpaca, ["input", "output", "instruction"], format_func)
elif args.merge == "wizardlm70k":
merge_with_dataset("WizardLM/WizardLM_evol_instruct_70k", 42, "wizardlm70k", format_alpaca, ["output", "instruction"])
merge_with_dataset("WizardLM/WizardLM_evol_instruct_70k", 42, "wizardlm70k", format_alpaca, ["output", "instruction"], format_func)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,71 @@
---- templated actions
input_select,select_option,"Set <device_name> to <option>.",8
input_select,select_option,"Can you please modify <device_name> and select the <option>?",8
input_select,select_option,"I'd like to request that <device_name> be configured with the setting <option>.",8
input_select,select_option,"May I kindly ask you to set the configuration of <device_name> to <option>?",8
input_select,select_option,"Please adjust the settings of <device_name> and choose the <option>.",8
input_select,select_option,"Could we please change the mode of <device_name> to <option>?",8
input_select,select_option,"Set the <option> on <device_name>.",8
input_select,select_option,"I'd appreciate if you could update the settings for <device_name> and set it to the <option>.",8
input_select,select_option,"May we make the following adjustment: configure <device_name> with the <option>?",8
input_select,select_option,"Could you please make sure that <device_name> utilizes the setting <option>?",8
input_select,select_option,"I'd like to request your assistance in setting <device_name> to <option>.",8
input_select,select_option,"Set <device_name> to the <option> mode.",8
input_select,select_option,"Can we please alter the configuration of <device_name> and select the <option>?",8
---- specific actions
input_select.nature_sounds,"Could you set the nature sounds to ""thunderstorm"", please?",select_option
input_select.people,"Can you set the people select to ""John""?",select_option
input_select.who_cooks,Can you change who cooks to Paulus please?,select_option
input_select.living_room_scene,Change the living room scene to Movie Time.,select_option
input_select.alarm_status,"Set the alarm status to ""Armed"".",select_option
input_select.roof_light_preset,"Change the roof light preset to ""Candy Cane"".",select_option
input_select.roof_light_preset,"Please set ""Halloween"" for the roof light preset"".",select_option
input_select.roof_light_preset,"Turn the roof light preset to ""Twinkle"".",select_option
input_select.nature_sounds,"Turn ""off"" the nature sounds.",select_option
input_select.nature_sounds,"Set nature sounds to ""Windy Mountain"".",select_option
---- we need to add support for prameters in specific actions pile to use these
todo.add_item,groceries,Add milk to my groceries list.
todo.add_item,household_supplies,Could you please add eggs to my household supplies list?
todo.add_item,electronics,I would like you to add a new printer to the electronics list.
todo.add_item,clothing,Kindly add a shirt to the clothing list for me.
todo.add_item,office_supplies,Could you please add paper clips to the office supplies list?
todo.add_item,personal_care,I would appreciate it if you could add toothpaste to my personal care list.
todo.add_item,technology,I'd like you to add a new phone to the technology list.
todo.add_item,gifts,Could you please add a gift card to the gifts list?
todo.add_item,books,I would like you to add a novel to the books list.
todo.add_item,music,Could you please add Halsey's new album to my music list?
todo.add_item,movies,Could you kindly add Batman Begins to the movies list for me?
todo.add_item,travel,I would appreciate it if you could add Scotland to the travel list.
todo.add_item,education,I'd like you to add a language course to the education list.
todo.add_item,health,Could you please add a doctor's appointment to my health list?
todo.add_item,finance,"I would like you to add ""Pay Power Bill"" to the finance list."
todo.add_item,shopping_list,Could you please add bread to the shopping list?
todo.add_item,household_supplies_list,"Could you kindly add a ""Walnut Credenza"" to the projects list?"
todo.add_item,electronics_list,I would like you to add a new laptop to the electronics list.
todo.add_item,clothing_list,Kindly add pants to the clothing list for me.
todo.add_item,office_supplies_list,Could you please add staples to the office supplies list?
todo.add_item,personal_care_list,I would appreciate it if you could add razorblades to my personal care list.
todo.add_item,technology_list,I'd like you to add a new computer to the technology list.
todo.add_item,gifts_list,Could you please add a socks to the gifts list?
todo.add_item,books_list,"I would like you to add ""Treasure Island"" to the books list."
todo.add_item,music_list,Could you please add Taylor Swift's new album to my music list?
todo.add_item,movies_list,Could you kindly add Pulp Fiction to the movies list for me?
todo.add_item,travel_list,I would appreciate it if you could add Japan to the travel list.
todo.add_item,education_list,I'd like you to add a language course to the education list.
todo.add_item,health_list,Could you please add a doctor's appointment to my health list?
todo.add_item,finance_list,"I would like you to add ""Pay Phone Bill"" to the finance list."
todo.add_item,grocery_list,"Could you please add ""Vinegar"" to the shopping list?"
todo.add_item,projects,"Could you kindly add a ""Maple Bench"" to the projects list?"
timer.start,pomodoro,Please set my pomodoro timer for 20 minutes.
timer.start,kitchen,Turn on the kitchen timer for 8 minutes.
timer.start,work,Set the work timer for 10 minutes.
timer.start,laundry,Start the laundry timer for an hour.
timer.start,cooking,Set a 30 second cooking timer.
timer.cancel,pomodoro,Cancel the pomodoro timer.
timer.cancel,kitchen,Please stop my kitchen timer.
timer.cancel,work,Turn off the work timer.
timer.cancel,laundry,Please shut off the laundry timer.
timer.cancel,cooking,The cooking timer is no longer needed.
1 ---- templated actions
2 input_select select_option Set <device_name> to <option>. 8
3 input_select select_option Can you please modify <device_name> and select the <option>? 8
4 input_select select_option I'd like to request that <device_name> be configured with the setting <option>. 8
5 input_select select_option May I kindly ask you to set the configuration of <device_name> to <option>? 8
6 input_select select_option Please adjust the settings of <device_name> and choose the <option>. 8
7 input_select select_option Could we please change the mode of <device_name> to <option>? 8
8 input_select select_option Set the <option> on <device_name>. 8
9 input_select select_option I'd appreciate if you could update the settings for <device_name> and set it to the <option>. 8
10 input_select select_option May we make the following adjustment: configure <device_name> with the <option>? 8
11 input_select select_option Could you please make sure that <device_name> utilizes the setting <option>? 8
12 input_select select_option I'd like to request your assistance in setting <device_name> to <option>. 8
13 input_select select_option Set <device_name> to the <option> mode. 8
14 input_select select_option Can we please alter the configuration of <device_name> and select the <option>? 8
15 ---- specific actions
16 input_select.nature_sounds Could you set the nature sounds to "thunderstorm", please? select_option
17 input_select.people Can you set the people select to "John"? select_option
18 input_select.who_cooks Can you change who cooks to Paulus please? select_option
19 input_select.living_room_scene Change the living room scene to Movie Time. select_option
20 input_select.alarm_status Set the alarm status to "Armed". select_option
21 input_select.roof_light_preset Change the roof light preset to "Candy Cane". select_option
22 input_select.roof_light_preset Please set "Halloween" for the roof light preset". select_option
23 input_select.roof_light_preset Turn the roof light preset to "Twinkle". select_option
24 input_select.nature_sounds Turn "off" the nature sounds. select_option
25 input_select.nature_sounds Set nature sounds to "Windy Mountain". select_option
26 ---- we need to add support for prameters in specific actions pile to use these
27 todo.add_item groceries Add milk to my groceries list.
28 todo.add_item household_supplies Could you please add eggs to my household supplies list?
29 todo.add_item electronics I would like you to add a new printer to the electronics list.
30 todo.add_item clothing Kindly add a shirt to the clothing list for me.
31 todo.add_item office_supplies Could you please add paper clips to the office supplies list?
32 todo.add_item personal_care I would appreciate it if you could add toothpaste to my personal care list.
33 todo.add_item technology I'd like you to add a new phone to the technology list.
34 todo.add_item gifts Could you please add a gift card to the gifts list?
35 todo.add_item books I would like you to add a novel to the books list.
36 todo.add_item music Could you please add Halsey's new album to my music list?
37 todo.add_item movies Could you kindly add Batman Begins to the movies list for me?
38 todo.add_item travel I would appreciate it if you could add Scotland to the travel list.
39 todo.add_item education I'd like you to add a language course to the education list.
40 todo.add_item health Could you please add a doctor's appointment to my health list?
41 todo.add_item finance I would like you to add "Pay Power Bill" to the finance list.
42 todo.add_item shopping_list Could you please add bread to the shopping list?
43 todo.add_item household_supplies_list Could you kindly add a "Walnut Credenza" to the projects list?
44 todo.add_item electronics_list I would like you to add a new laptop to the electronics list.
45 todo.add_item clothing_list Kindly add pants to the clothing list for me.
46 todo.add_item office_supplies_list Could you please add staples to the office supplies list?
47 todo.add_item personal_care_list I would appreciate it if you could add razorblades to my personal care list.
48 todo.add_item technology_list I'd like you to add a new computer to the technology list.
49 todo.add_item gifts_list Could you please add a socks to the gifts list?
50 todo.add_item books_list I would like you to add "Treasure Island" to the books list.
51 todo.add_item music_list Could you please add Taylor Swift's new album to my music list?
52 todo.add_item movies_list Could you kindly add Pulp Fiction to the movies list for me?
53 todo.add_item travel_list I would appreciate it if you could add Japan to the travel list.
54 todo.add_item education_list I'd like you to add a language course to the education list.
55 todo.add_item health_list Could you please add a doctor's appointment to my health list?
56 todo.add_item finance_list I would like you to add "Pay Phone Bill" to the finance list.
57 todo.add_item grocery_list Could you please add "Vinegar" to the shopping list?
58 todo.add_item projects Could you kindly add a "Maple Bench" to the projects list?
59 timer.start pomodoro Please set my pomodoro timer for 20 minutes.
60 timer.start kitchen Turn on the kitchen timer for 8 minutes.
61 timer.start work Set the work timer for 10 minutes.
62 timer.start laundry Start the laundry timer for an hour.
63 timer.start cooking Set a 30 second cooking timer.
64 timer.cancel pomodoro Cancel the pomodoro timer.
65 timer.cancel kitchen Please stop my kitchen timer.
66 timer.cancel work Turn off the work timer.
67 timer.cancel laundry Please shut off the laundry timer.
68 timer.cancel cooking The cooking timer is no longer needed.

View File

@@ -1,373 +0,0 @@
device_name,english_phrase,service_name
blinds.kitchen,"Could you raise the kitchen blinds",open
blinds.kitchen,"Lower the kitchen blinds",close
blinds.kitchen,"Stop the kitchen blinds where they are",stop
blinds.kitchen,"Switch the state of the kitchen blinds",toggle
blinds.living_room,"Close the living room blinds",close
blinds.living_room,"Open the living room blinds",open
blinds.living_room,"Stop adjusting the living room blinds",stop
blinds.living_room,"Toggle the living room blinds",toggle
blinds.master_bedroom,"Lift the master bedroom blinds",open
blinds.master_bedroom,"Please halt the master bedroom blinds",stop
blinds.master_bedroom,"Reverse the master bedroom blinds",toggle
blinds.master_bedroom,"Shut the master bedroom blinds",close
fan.attic_1,"Disable the attic fan",turn_off
fan.attic_1,"Increase speed of the attic fan",increase_speed
fan.attic_1,"Slow down the attic fan",decrease_speed
fan.attic_1,"Slow down the attic fan",decrease_speed
fan.attic_1,"Turn down the attic fan",decrease_speed
fan.attic_2,"Toggle the attic fan",toggle
fan.attic_2,"Toggle the attic fan",toggle
fan.attic,"Accelerate the fan in the attic",increase_speed
fan.attic,"Change the fan status in the attic",toggle
fan.attic,"Slow down the fan in the attic",decrease_speed
fan.basement,"Toggle the basement fan",toggle
fan.basement,"Toggle the basement fan",toggle
fan.bathroom,"Activate the bathroom fan",turn_on
fan.bathroom,"Turn on the bathroom fan",turn_on
fan.bathroom,"Turn on the bathroom fan",turn_on
fan.bedroom_master,"Activate the master bedroom fan",turn_on
fan.bedroom_master,"Deactivate the master bedroom fan",turn_off
fan.bedroom_master,"Ramp up the master bedroom fan speed",increase_speed
fan.bedroom_master,"Slow down the master bedroom fan",decrease_speed
fan.bedroom_master,"Switch the state of the master bedroom fan",toggle
fan.bedroom,"Toggle the bedroom fan",toggle
fan.bedroom,"Toggle the bedroom fan",toggle
fan.bedroom,"Toggle the bedroom fan",toggle
fan.dining_area,"Please switch off the dining area fan",turn_off
fan.dining_area,"Please switch on the dining area fan",turn_on
fan.dining_room,"Switch off the dining room fan",turn_off
fan.dining_table_above,"Please toggle the fan above the dining table",toggle
fan.driveway,"Flip the driveway fan",toggle
fan.garage,"Flip the fan in the garage",toggle
fan.garage,"Shut down the garage fan",turn_off
fan.garage,"Switch off the garage fan",turn_off
fan.garage,"Switch off the garage fan",turn_off
fan.garage,"Turn down the fan in the garage",decrease_speed
fan.garage,"Turn on the garage fan",turn_on
fan.garage,"Turn up the fan in the garage",increase_speed
fan.guest_room,"Can you toggle the fan in the guest room",toggle
fan.guest_room,"Decrease the fan speed in the guest room",decrease_speed
fan.guest_room,"Increase the fan speed in the guest room",increase_speed
fan.guest_room,"Switch off the guest room fan",turn_off
fan.hallway,"Boost the fan speed in the hallway",increase_speed
fan.hallway,"Enable the hallway fan",turn_on
fan.hallway,"Lower the fan speed in the hallway",decrease_speed
fan.hallway,"Switch the state of the fan in the hallway",toggle
fan.kitchen,"Enable the kitchen fan",turn_on
fan.kitchen,"Slow down the kitchen fan",decrease_speed
fan.kitchen,"Slow down the kitchen fan",decrease_speed
fan.kitchen,"Switch off the kitchen fan",turn_off
fan.kitchen,"Switch off the kitchen fan",turn_off
fan.kitchen,"Toggle the kitchen fan",toggle
fan.kitchen,"Turn down the kitchen fan",decrease_speed
fan.living_room,"Decrease the speed of the living room fan",decrease_speed
fan.living_room,"Increase the speed of the living room fan",increase_speed
fan.living_room,"Start the living room fan",turn_on
fan.living_room,"Toggle the fan in the living room",toggle
fan.living_room,"Turn down the living room fan",decrease_speed
fan.living_room,"Turn off the living room fan",turn_off
fan.living_room,"Turn off the living room fan",turn_off
fan.living_room,"Turn on the living room fan",turn_on
fan.living_room,"Turn on the living room fan",turn_on
fan.office,"Could you disable the office fan",turn_off
fan.office,"Could you enable the office fan",turn_on
fan.office,"Toggle the office fan",toggle
fan.office,"Toggle the office fan",toggle
fan.office,"Toggle the office fan",toggle
fan.office,"Turn off the office fan",turn_off
fan.office,"Turn off the office fan",turn_off
fan.outdoor,"Toggle the outdoor fan",toggle
fan.patio,"Turn off the patio fan",turn_off
fan.pool,"Change the status of the pool fan",toggle
fan.shed,"Switch the shed fan on or off",toggle
fan.study,"Activate the study fan",turn_on
fan.study,"Alter the fan state in the study",toggle
fan.study,"Ramp up the fan speed in the study",increase_speed
fan.study,"Reduce the fan speed in the study",decrease_speed
fan.study,"Switch off the study fan",turn_off
fan.study,"Switch on the study fan",turn_on
fan.study,"Turn off the study fan",turn_off
fan.study,"Turn off the study fan",turn_off
garage_door.basement,"Please raise the basement garage door",open
garage_door.bike_storage,"Activate the bike storage garage",open
garage_door.bike_storage,"Deactivate the bike storage garage",close
garage_door.main,"Close the main garage door",close
garage_door.main,"Open the main garage door",open
garage_door.main,"Stop the main garage door",stop
garage_door.main,"Toggle the main garage door",toggle
garage_door.one_car,"Make sure the one car garage is closed",close
garage_door.side,"Could you lift the side garage door",open
garage_door.side,"Halt the side garage door",stop
garage_door.side,"Lower the side garage door",close
garage_door.side,"Switch the state of the side garage door",toggle
garage_door.two_car,"Open the two car garage",open
light.attic,"Change the light status in the attic",toggle
light.bathroom_1,"Could you illuminate the bathroom",turn_on
light.bathroom_1,"Please extinguish the bathroom light",turn_off
light.bathroom,"Activate the bathroom light",turn_on
light.bathroom,"Switch off the bathroom light",turn_off
light.bathroom,"Turn off the bathroom light",turn_off
light.bathroom,"Turn off the bathroom light",turn_off
light.bathroom,"Turn off the bathroom light",turn_off
light.bedroom_1,"Activate the bedroom light",turn_on
light.bedroom_1,"Deactivate the bedroom light",turn_off
light.bedroom_1,"Toggle the bedroom light",toggle
light.bedroom_2,"Switch off the bedroom light",turn_off
light.dining_room_1,"Activate the lights in the dining room",turn_on
light.dining_room,"Activate the dining room light",turn_on
light.dining_room,"Switch off the dining room light",turn_off
light.dining_room,"Switch off the dining room light",turn_off
light.dining_room,"Switch off the dining room light",turn_off
light.dining_room,"Switch off the dining room light",turn_off
light.dining_room,"Turn off the dining room light",turn_off
light.dining_table_above,"Please toggle the light above the dining table",toggle
light.driveway,"Flip the driveway light",toggle
light.driveway,"Turn on the driveway light",turn_on
light.garage,"Activate the garage light",turn_on
light.garage,"Activate the garage light",turn_on
light.garage,"Flip the light in the garage",toggle
light.garage,"Switch on the garage light",turn_on
light.garage,"Switch on the garage light",turn_on
light.garden_1,"Deactivate the garden light",turn_off
light.garden_1,"Switch on the garden light",turn_on
light.garden_1,"Turn on the garden light",turn_on
light.garden_2,"Activate the garden light",turn_on
light.garden,"Switch on the garden light",turn_on
light.guest_room,"Could you toggle the light in the guest room",toggle
light.guest_room,"Deactivate the guest room light",turn_off
light.guest_room,"Switch off the guest room light",turn_off
light.guest_room,"Switch on the guest room light",turn_on
light.guest_room,"Toggle the guest room light",toggle
light.hallway,"Switch off the hallway light",turn_off
light.hallway,"Switch the state of the light in the hallway",toggle
light.hallway,"Toggle the hallway light",toggle
light.hallway,"Turn off the hallway light",turn_off
light.hallway,"Turn on the hallway light",turn_on
light.kitchen_1,"Switch on the kitchen lights",turn_on
light.kitchen_1,"Toggle the kitchen light",toggle
light.kitchen_1,"Turn on the kitchen light",turn_on
light.kitchen_2,"Switch off the kitchen light",turn_off
light.kitchen_2,"Toggle the kitchen light",toggle
light.kitchen_counter,"Switch off the kitchen counter light",turn_off
light.kitchen_counter,"Switch on the kitchen counter light",turn_on
light.living_room_1,"Switch off the living room light",turn_off
light.living_room,"Turn off the living room light",turn_off
light.living_room,"Turn on the living room light",turn_on
light.master_bedroom_1,"Deactivate the master bedroom light",turn_off
light.master_bedroom_1,"Please activate the master bedroom light",turn_on
light.master_bedroom_lamp,"Turn off the light in the bedroom",turn_off
light.office_1,"Enable the office light",turn_on
light.office,"Deactivate the office light",turn_off
light.office,"Toggle the office light",toggle
light.outdoor,"Toggle the outdoor light",toggle
light.patio,"Deactivate the patio light",turn_off
light.patio,"Disable the patio light",turn_off
light.patio,"Enable the patio light",turn_on
light.patio,"Switch on the patio light",turn_on
light.patio,"Toggle the patio light",toggle
light.patio,"Turn on the patio light",turn_on
light.patio,"Turn on the patio light",turn_on
light.pool,"Activate the pool light",turn_on
light.pool,"Change the status of the pool light",toggle
light.pool,"Turn off the pool light",turn_off
light.pool,"Turn on the pool light",turn_on
light.shed,"Activate the shed light",turn_on
light.shed,"Activate the shed light",turn_on
light.shed,"Switch on the shed light",turn_on
light.shed,"Switch the shed light on or off",toggle
light.study,"Activate the study light",turn_on
light.study,"Alter the light state in the study",toggle
light.study,"Toggle the study light",toggle
light.study,"Toggle the study light",toggle
light.study,"Turn off the study light",turn_off
light.study,"Turn off the study light",turn_off
light.dining_room_chandelier,"Turn on the dining room light",turn_on
light.chandelier_front_hallway,"Hey can you turn on the front hallway chandelier",turn_on
lock.back_door,"Could you disengage the back door lock",unlock
lock.back_door,"Engage the back door lock",lock
lock.bike_storage,"Disengage the lock on the bike storage",unlock
lock.front_door,"Lock the front door",lock
lock.front_door,"Unlock the front door",unlock
lock.nursery,"Can you secure the nursery door",lock
lock.office,"Please lock the office",lock
lock.office,"Please unlock the office",unlock
lock.tool_shed,"Unlock the tool shed",unlock
lock.wine_cellar,"Could you lock the wine cellar",lock
lock.front_door,"Please lock the front door.",lock
lock.back_door,"Can you unlock the back door?",unlock
lock.garage_door,"I need the garage door locked.",lock
lock.patio_door,"Unlock the patio door, please.",unlock
lock.main_gate,"Ensure the main gate is locked.",lock
lock.kitchen_window,"Open the lock on the kitchen window.",unlock
lock.office_door,"Can we lock the office door?",lock
lock.bedroom_window,"Bedroom window needs to be unlocked.",unlock
lock.basement_door,"Lock up the basement door.",lock
lock.bathroom_window,"Could you unlock the bathroom window?",unlock
lock.garden_gate,"Please secure the garden gate.",lock
lock.rooftop_door,"Open the rooftop door lock.",unlock
lock.cellar_door,"Cellar door should be locked now.",lock
lock.pool_gate,"I'd like the pool gate unlocked.",unlock
lock.shed_door,"Ensure the shed door is securely locked.",lock
lock.balcony_door,"Unlock the balcony door for me.",unlock
lock.laundry_room_door,"Can you lock the laundry room door?",lock
lock.nursery_door,"The nursery door needs to be unlocked.",unlock
lock.guest_room_door,"Please lock the guest room door.",lock
lock.side_entrance,"Unlock our side entrance.",unlock
lock.fence_gate,"Make sure the fence gate is locked.",lock
lock.garage_side_door,"Garage side door should be unlocked.",unlock
lock.attic_door,"Attic door needs locking.",lock
lock.fire_escape,"Can you unlock the fire escape?",unlock
lock.storage_room_door,"Please lock the storage room door.",lock
lock.boathouse_door,"Unlock the boathouse door.",unlock
lock.carport_gate,"Carport gate needs to be locked.",lock
lock.backyard_gate,"Can we have the backyard gate unlocked?",unlock
lock.front_porch_door,"Lock the front porch door.",lock
lock.back_terrace_door,"Open the lock on the back terrace door.",unlock
lock.wine_cellar,"Ensure the wine cellar is locked.",lock
lock.sunroom_door,"Please unlock the sunroom door.",unlock
lock.home_office,"I'd like the home office locked up.",lock
lock.playroom_door,"Can you unlock the playroom door?",unlock
lock.art_studio,"The art studio should be locked.",lock
lock.music_room,"Unlock the music room, please.",unlock
lock.home_gym,"Lock the home gym door.",lock
lock.cinema_room,"Cinema room needs to be unlocked.",unlock
lock.library_door,"Please lock the library door.",lock
lock.conservatory,"Can the conservatory be unlocked?",unlock
media_player.kitchen,"Could you start the media in the kitchen",turn_on
media_player.kitchen,"Play the previous track in the kitchen",media_previous_track
media_player.kitchen,"Please raise the volume in the kitchen",volume_up
media_player.living_room,"Activate the media in the living room",turn_on
media_player.living_room,"Mute the media player in the living room",volume_mute
media_player.living_room,"Skip to the next track in the living room",media_next_track
media_player.living_room,"Turn up the volume in the living room",volume_up
media_player.master_bedroom,"Can you increase the volume on the master bedroom media player",volume_up
media_player.master_bedroom,"Pause the media in the master bedroom",media_pause
media_player.master_bedroom,"Turn on the master bedroom media player",turn_on
media_player.nursery,"Please play the media in the nursery",media_play
media_player.nursery,"Stop the media in the nursery",media_stop
media_player.nursery,"Turn down the volume in the nursery",volume_down
media_player.office,"Can you decrease the volume in the office",volume_down
media_player.living_room_tv,"Please turn on the living room TV.",turn_on
media_player.kitchen_radio,"Switch off the kitchen radio.",turn_off
media_player.bedroom_speaker,"Can you increase the volume in the bedroom?",volume_up
media_player.office_sound_system,"Lower the volume in the office.",volume_down
media_player.garage_stereo,"Mute the stereo in the garage.",volume_mute
media_player.patio_speaker,"Start playing music on the patio speaker.",media_play
media_player.bathroom_audio,"Pause the bathroom audio.",media_pause
media_player.guest_room_media,"Stop the guest room media player.",media_stop
media_player.basement_home_theater,"Skip to the next track in the basement.",media_next_track
media_player.nursery_lullaby,"Go back to the previous lullaby in the nursery.",media_previous_track
media_player.deck_music_system,"Turn on the deck's music system.",turn_on
media_player.lounge_entertainment,"Switch off the lounge entertainment center.",turn_off
media_player.dining_area_jukebox,"Increase the jukebox volume in the dining area.",volume_up
media_player.game_room_speakers,"Turn down the game room speakers.",volume_down
media_player.library_soundbar,"Mute the soundbar in the library.",volume_mute
media_player.sunroom_stereo,"Play the stereo in the sunroom.",media_play
media_player.loft_tv,"Pause the TV in the loft.",media_pause
media_player.poolside_media,"Stop the poolside media system.",media_stop
media_player.gym_music_player,"Skip to the next song in the gym.",media_next_track
media_player.study_room_radio,"Go back to the previous station in the study room.",media_previous_track
media_player.backyard_speakers,"Turn on the backyard speakers.",turn_on
media_player.entryway_echo,"Turn off the Echo in the entryway.",turn_off
media_player.rooftop_deck_audio,"Raise the rooftop audio volume.",volume_up
media_player.workshop_sound_system,"Lower the sound system volume in the workshop.",volume_down
media_player.art_studio_player,"Mute the media player in the art studio.",volume_mute
media_player.kids_room_storyteller,"Start the storyteller in the kids' room.",media_play
media_player.laundry_room_radio,"Pause the radio in the laundry room.",media_pause
media_player.balcony_speakers,"Stop the balcony speakers.",media_stop
media_player.yoga_room_music,"Next track for the yoga room music.",media_next_track
media_player.conservatory_cd_player,"Previous track on the conservatory CD player.",media_previous_track
media_player.foyer_sound_system,"Power on the foyer sound system.",turn_on
media_player.wine_cellar_speakers,"Power off the speakers in the wine cellar.",turn_off
media_player.greenhouse_radio,"Increase the greenhouse radio volume.",volume_up
media_player.attic_audio_system,"Decrease attic audio system volume.",volume_down
media_player.boathouse_stereo,"Mute the stereo in the boathouse.",volume_mute
media_player.cellar_jukebox,"Play the jukebox in the cellar.",media_play
media_player.corridor_intercom,"Pause the corridor intercom.",media_pause
media_player.porch_sound_system,"Stop the porch sound system.",media_stop
media_player.garden_music,"Next track for the garden music.",media_next_track
media_player.driveway_speakers,"Previous track on the driveway speakers.",media_previous_track
media_player.hallway_audio,"Switch on the hallway audio system.",turn_on
media_player.mudroom_media_player,"Switch off the mudroom media player.",turn_off
media_player.utility_room_radio,"Turn up the utility room radio.",volume_up
media_player.shed_sound_system,"Turn down the shed sound system.",volume_down
media_player.treehouse_speakers,"Mute the treehouse speakers.",volume_mute
switch.philips_hue_living_room,"Turn on the living room lights.",turn_on
switch.belkin_wemo_garage,"Turn off the garage switch.",turn_off
switch.tp_link_kasa_porch,"Toggle the porch lights.",toggle
switch.legrand_radiant_kitchen,"Turn on the kitchen lights.",turn_on
switch.lutron_caseta_bedroom,"Turn off the bedroom lights.",turn_off
switch.ge_z_wave_bathroom,"Turn on the bathroom fan.",turn_on
switch.honeywell_home_office,"Toggle the office lights.",toggle
switch.samsung_smartthings_security,"Turn off the security system.",turn_off
switch.eve_energy_balcony,"Turn on the balcony lighting.",turn_on
switch.fibaro_pool,"Turn off the pool lights.",turn_off
switch.nest_thermostat_terrace,"Turn on the terrace thermostat.",turn_on
switch.ecobee_garden,"Turn off the garden lights.",turn_off
switch.sonoff_dining_room,"Toggle the dining room lights.",toggle
switch.wink_relay_driveway,"Turn on the driveway lights.",turn_on
switch.insteon_patio,"Turn off the patio lights.",turn_off
switch.sengled_deck,"Turn on the deck lighting.",turn_on
switch.osram_hallway,"Toggle the hallway lights.",toggle
switch.yeelight_sunroom,"Turn off the sunroom lights.",turn_off
switch.gosund_attic,"Turn on the attic light switch.",turn_on
switch.meross_walkway,"Turn off the walkway lighting.",turn_off
switch.koogeek_basement,"Toggle the basement lights.",toggle
switch.nanoleaf_stairway,"Turn on the stairway lights.",turn_on
switch.xiaomi_bedside,"Turn off the bedside lamp.",turn_off
switch.arlo_floodlights,"Toggle the security floodlights.",toggle
switch.wyze_study,"Turn on the study room lights.",turn_on
switch.ikea_guest_room,"Turn off the guest room lights.",turn_off
switch.netatmo_front_yard,"Turn on the front yard lighting.",turn_on
switch.tuya_shed,"Turn off the shed light switch.",turn_off
switch.broadlink_kitchenette,"Toggle the kitchenette lights.",toggle
switch.moeshouse_gym,"Turn on the gym lighting.",turn_on
switch.hue_bedroom_2,"Turn off the second bedroom lights.",turn_off
switch.wemo_laundry_room,"Turn on the laundry room lights.",turn_on
switch.kasa_living_room,"Toggle the living room lights.",toggle
switch.radiant_office,"Turn off the office lights.",turn_off
switch.caseta_hallway_2,"Turn on the second hallway lights.",turn_on
switch.z_wave_guest_bathroom,"Turn off the guest bathroom fan.",turn_off
switch.home_office_dimmer,"Toggle the home office dimmer.",toggle
switch.security_camera_light,"Turn on the security camera light.",turn_on
switch.patio_heater_switch,"Turn off the patio heater.",turn_off
switch.kitchen_under_cabinet,"Toggle the kitchen under cabinet lights.",toggle
switch.hallway_dimmer,"Could you dim the hallway lights?",turn_on
switch.kitchen_fan,"Please turn off the kitchen fan.",turn_off
switch.garden_spotlights,"Activate the garden spotlights.",turn_on
switch.poolside_lanterns,"Deactivate the poolside lanterns.",turn_off
switch.front_porch_sensor,"Engage the front porch sensor light.",turn_on
switch.backyard_floodlight,"Can you shut off the backyard floodlight?",turn_off
switch.staircase_light_strip,"Could you light up the staircase light strip?",turn_on
switch.laundry_area,"Please switch off the laundry area lights.",turn_off
switch.office_desk_lamp,"Illuminate the desk lamp in my office.",turn_on
switch.basement_sconces,"Can we turn down the basement sconces?",turn_off
switch.library_ceiling,"Engage the ceiling lights in the library.",turn_on
switch.sunroom_blinds,"I'd like the sunroom blinds closed, please.",turn_off
switch.guest_bathroom,"Light up the guest bathroom, please.",turn_on
switch.patio_string_lights,"Switch off the string lights on the patio.",turn_off
switch.kitchen_island,"Disable the kitchen island lights.",turn_off
switch.entryway_chandelier,"Illuminate the entryway chandelier.",turn_on
switch.garage_worklight,"Can we power down the garage worklight?",turn_off
switch.bedroom_track_lighting,"Brighten the bedroom track lighting.",turn_on
switch.home_cinema,"Please turn off the home cinema lights.",turn_off
switch.balcony_mood_lighting,"Activate the mood lighting on the balcony.",turn_on
switch.dining_room_dimmer,"Set the dining room lights to off.",turn_off
switch.playroom_nightlight,"Can you turn on the playroom nightlight?",turn_on
switch.art_studio_spots,"Please disable the art studio spotlights.",turn_off
switch.foyer_wall_sconce,"Light up the foyer wall sconce.",turn_on
switch.back_entry,"Shut down the back entry lights.",turn_off
switch.corridor_track,"Brighten up the corridor track lights.",turn_on
switch.veranda_fairy_lights,"Switch off the veranda fairy lights, please.",turn_off
switch.master_suite,"Set the master suite to nighttime mode.",turn_on
switch.walk_in_closet,"Disable the walk-in closet lights.",turn_off
switch.roof_deck,"Engage the roof deck lighting.",turn_on
switch.bathroom_mirror,"Can you turn off the bathroom mirror light?",turn_off
switch.storage_room,"Please power down the storage room lights.",turn_off
switch.wine_cellar,"Illuminate the wine cellar.",turn_on
switch.conservation_area,"Deactivate the conservation area lighting.",turn_off
switch.gym_ceiling,"Light up the gym ceiling lights.",turn_on
switch.hobby_room,"Could we turn off the hobby room lights?",turn_off
switch.front_lawn,"Activate the front lawn spotlights.",turn_on
switch.rear_terrace,"Can you dim the lights on the rear terrace?",turn_off
1 device_name english_phrase service_name
2 blinds.kitchen Could you raise the kitchen blinds open
3 blinds.kitchen Lower the kitchen blinds close
4 blinds.kitchen Stop the kitchen blinds where they are stop
5 blinds.kitchen Switch the state of the kitchen blinds toggle
6 blinds.living_room Close the living room blinds close
7 blinds.living_room Open the living room blinds open
8 blinds.living_room Stop adjusting the living room blinds stop
9 blinds.living_room Toggle the living room blinds toggle
10 blinds.master_bedroom Lift the master bedroom blinds open
11 blinds.master_bedroom Please halt the master bedroom blinds stop
12 blinds.master_bedroom Reverse the master bedroom blinds toggle
13 blinds.master_bedroom Shut the master bedroom blinds close
14 fan.attic_1 Disable the attic fan turn_off
15 fan.attic_1 Increase speed of the attic fan increase_speed
16 fan.attic_1 Slow down the attic fan decrease_speed
17 fan.attic_1 Slow down the attic fan decrease_speed
18 fan.attic_1 Turn down the attic fan decrease_speed
19 fan.attic_2 Toggle the attic fan toggle
20 fan.attic_2 Toggle the attic fan toggle
21 fan.attic Accelerate the fan in the attic increase_speed
22 fan.attic Change the fan status in the attic toggle
23 fan.attic Slow down the fan in the attic decrease_speed
24 fan.basement Toggle the basement fan toggle
25 fan.basement Toggle the basement fan toggle
26 fan.bathroom Activate the bathroom fan turn_on
27 fan.bathroom Turn on the bathroom fan turn_on
28 fan.bathroom Turn on the bathroom fan turn_on
29 fan.bedroom_master Activate the master bedroom fan turn_on
30 fan.bedroom_master Deactivate the master bedroom fan turn_off
31 fan.bedroom_master Ramp up the master bedroom fan speed increase_speed
32 fan.bedroom_master Slow down the master bedroom fan decrease_speed
33 fan.bedroom_master Switch the state of the master bedroom fan toggle
34 fan.bedroom Toggle the bedroom fan toggle
35 fan.bedroom Toggle the bedroom fan toggle
36 fan.bedroom Toggle the bedroom fan toggle
37 fan.dining_area Please switch off the dining area fan turn_off
38 fan.dining_area Please switch on the dining area fan turn_on
39 fan.dining_room Switch off the dining room fan turn_off
40 fan.dining_table_above Please toggle the fan above the dining table toggle
41 fan.driveway Flip the driveway fan toggle
42 fan.garage Flip the fan in the garage toggle
43 fan.garage Shut down the garage fan turn_off
44 fan.garage Switch off the garage fan turn_off
45 fan.garage Switch off the garage fan turn_off
46 fan.garage Turn down the fan in the garage decrease_speed
47 fan.garage Turn on the garage fan turn_on
48 fan.garage Turn up the fan in the garage increase_speed
49 fan.guest_room Can you toggle the fan in the guest room toggle
50 fan.guest_room Decrease the fan speed in the guest room decrease_speed
51 fan.guest_room Increase the fan speed in the guest room increase_speed
52 fan.guest_room Switch off the guest room fan turn_off
53 fan.hallway Boost the fan speed in the hallway increase_speed
54 fan.hallway Enable the hallway fan turn_on
55 fan.hallway Lower the fan speed in the hallway decrease_speed
56 fan.hallway Switch the state of the fan in the hallway toggle
57 fan.kitchen Enable the kitchen fan turn_on
58 fan.kitchen Slow down the kitchen fan decrease_speed
59 fan.kitchen Slow down the kitchen fan decrease_speed
60 fan.kitchen Switch off the kitchen fan turn_off
61 fan.kitchen Switch off the kitchen fan turn_off
62 fan.kitchen Toggle the kitchen fan toggle
63 fan.kitchen Turn down the kitchen fan decrease_speed
64 fan.living_room Decrease the speed of the living room fan decrease_speed
65 fan.living_room Increase the speed of the living room fan increase_speed
66 fan.living_room Start the living room fan turn_on
67 fan.living_room Toggle the fan in the living room toggle
68 fan.living_room Turn down the living room fan decrease_speed
69 fan.living_room Turn off the living room fan turn_off
70 fan.living_room Turn off the living room fan turn_off
71 fan.living_room Turn on the living room fan turn_on
72 fan.living_room Turn on the living room fan turn_on
73 fan.office Could you disable the office fan turn_off
74 fan.office Could you enable the office fan turn_on
75 fan.office Toggle the office fan toggle
76 fan.office Toggle the office fan toggle
77 fan.office Toggle the office fan toggle
78 fan.office Turn off the office fan turn_off
79 fan.office Turn off the office fan turn_off
80 fan.outdoor Toggle the outdoor fan toggle
81 fan.patio Turn off the patio fan turn_off
82 fan.pool Change the status of the pool fan toggle
83 fan.shed Switch the shed fan on or off toggle
84 fan.study Activate the study fan turn_on
85 fan.study Alter the fan state in the study toggle
86 fan.study Ramp up the fan speed in the study increase_speed
87 fan.study Reduce the fan speed in the study decrease_speed
88 fan.study Switch off the study fan turn_off
89 fan.study Switch on the study fan turn_on
90 fan.study Turn off the study fan turn_off
91 fan.study Turn off the study fan turn_off
92 garage_door.basement Please raise the basement garage door open
93 garage_door.bike_storage Activate the bike storage garage open
94 garage_door.bike_storage Deactivate the bike storage garage close
95 garage_door.main Close the main garage door close
96 garage_door.main Open the main garage door open
97 garage_door.main Stop the main garage door stop
98 garage_door.main Toggle the main garage door toggle
99 garage_door.one_car Make sure the one car garage is closed close
100 garage_door.side Could you lift the side garage door open
101 garage_door.side Halt the side garage door stop
102 garage_door.side Lower the side garage door close
103 garage_door.side Switch the state of the side garage door toggle
104 garage_door.two_car Open the two car garage open
105 light.attic Change the light status in the attic toggle
106 light.bathroom_1 Could you illuminate the bathroom turn_on
107 light.bathroom_1 Please extinguish the bathroom light turn_off
108 light.bathroom Activate the bathroom light turn_on
109 light.bathroom Switch off the bathroom light turn_off
110 light.bathroom Turn off the bathroom light turn_off
111 light.bathroom Turn off the bathroom light turn_off
112 light.bathroom Turn off the bathroom light turn_off
113 light.bedroom_1 Activate the bedroom light turn_on
114 light.bedroom_1 Deactivate the bedroom light turn_off
115 light.bedroom_1 Toggle the bedroom light toggle
116 light.bedroom_2 Switch off the bedroom light turn_off
117 light.dining_room_1 Activate the lights in the dining room turn_on
118 light.dining_room Activate the dining room light turn_on
119 light.dining_room Switch off the dining room light turn_off
120 light.dining_room Switch off the dining room light turn_off
121 light.dining_room Switch off the dining room light turn_off
122 light.dining_room Switch off the dining room light turn_off
123 light.dining_room Turn off the dining room light turn_off
124 light.dining_table_above Please toggle the light above the dining table toggle
125 light.driveway Flip the driveway light toggle
126 light.driveway Turn on the driveway light turn_on
127 light.garage Activate the garage light turn_on
128 light.garage Activate the garage light turn_on
129 light.garage Flip the light in the garage toggle
130 light.garage Switch on the garage light turn_on
131 light.garage Switch on the garage light turn_on
132 light.garden_1 Deactivate the garden light turn_off
133 light.garden_1 Switch on the garden light turn_on
134 light.garden_1 Turn on the garden light turn_on
135 light.garden_2 Activate the garden light turn_on
136 light.garden Switch on the garden light turn_on
137 light.guest_room Could you toggle the light in the guest room toggle
138 light.guest_room Deactivate the guest room light turn_off
139 light.guest_room Switch off the guest room light turn_off
140 light.guest_room Switch on the guest room light turn_on
141 light.guest_room Toggle the guest room light toggle
142 light.hallway Switch off the hallway light turn_off
143 light.hallway Switch the state of the light in the hallway toggle
144 light.hallway Toggle the hallway light toggle
145 light.hallway Turn off the hallway light turn_off
146 light.hallway Turn on the hallway light turn_on
147 light.kitchen_1 Switch on the kitchen lights turn_on
148 light.kitchen_1 Toggle the kitchen light toggle
149 light.kitchen_1 Turn on the kitchen light turn_on
150 light.kitchen_2 Switch off the kitchen light turn_off
151 light.kitchen_2 Toggle the kitchen light toggle
152 light.kitchen_counter Switch off the kitchen counter light turn_off
153 light.kitchen_counter Switch on the kitchen counter light turn_on
154 light.living_room_1 Switch off the living room light turn_off
155 light.living_room Turn off the living room light turn_off
156 light.living_room Turn on the living room light turn_on
157 light.master_bedroom_1 Deactivate the master bedroom light turn_off
158 light.master_bedroom_1 Please activate the master bedroom light turn_on
159 light.master_bedroom_lamp Turn off the light in the bedroom turn_off
160 light.office_1 Enable the office light turn_on
161 light.office Deactivate the office light turn_off
162 light.office Toggle the office light toggle
163 light.outdoor Toggle the outdoor light toggle
164 light.patio Deactivate the patio light turn_off
165 light.patio Disable the patio light turn_off
166 light.patio Enable the patio light turn_on
167 light.patio Switch on the patio light turn_on
168 light.patio Toggle the patio light toggle
169 light.patio Turn on the patio light turn_on
170 light.patio Turn on the patio light turn_on
171 light.pool Activate the pool light turn_on
172 light.pool Change the status of the pool light toggle
173 light.pool Turn off the pool light turn_off
174 light.pool Turn on the pool light turn_on
175 light.shed Activate the shed light turn_on
176 light.shed Activate the shed light turn_on
177 light.shed Switch on the shed light turn_on
178 light.shed Switch the shed light on or off toggle
179 light.study Activate the study light turn_on
180 light.study Alter the light state in the study toggle
181 light.study Toggle the study light toggle
182 light.study Toggle the study light toggle
183 light.study Turn off the study light turn_off
184 light.study Turn off the study light turn_off
185 light.dining_room_chandelier Turn on the dining room light turn_on
186 light.chandelier_front_hallway Hey can you turn on the front hallway chandelier turn_on
187 lock.back_door Could you disengage the back door lock unlock
188 lock.back_door Engage the back door lock lock
189 lock.bike_storage Disengage the lock on the bike storage unlock
190 lock.front_door Lock the front door lock
191 lock.front_door Unlock the front door unlock
192 lock.nursery Can you secure the nursery door lock
193 lock.office Please lock the office lock
194 lock.office Please unlock the office unlock
195 lock.tool_shed Unlock the tool shed unlock
196 lock.wine_cellar Could you lock the wine cellar lock
197 lock.front_door Please lock the front door. lock
198 lock.back_door Can you unlock the back door? unlock
199 lock.garage_door I need the garage door locked. lock
200 lock.patio_door Unlock the patio door, please. unlock
201 lock.main_gate Ensure the main gate is locked. lock
202 lock.kitchen_window Open the lock on the kitchen window. unlock
203 lock.office_door Can we lock the office door? lock
204 lock.bedroom_window Bedroom window needs to be unlocked. unlock
205 lock.basement_door Lock up the basement door. lock
206 lock.bathroom_window Could you unlock the bathroom window? unlock
207 lock.garden_gate Please secure the garden gate. lock
208 lock.rooftop_door Open the rooftop door lock. unlock
209 lock.cellar_door Cellar door should be locked now. lock
210 lock.pool_gate I'd like the pool gate unlocked. unlock
211 lock.shed_door Ensure the shed door is securely locked. lock
212 lock.balcony_door Unlock the balcony door for me. unlock
213 lock.laundry_room_door Can you lock the laundry room door? lock
214 lock.nursery_door The nursery door needs to be unlocked. unlock
215 lock.guest_room_door Please lock the guest room door. lock
216 lock.side_entrance Unlock our side entrance. unlock
217 lock.fence_gate Make sure the fence gate is locked. lock
218 lock.garage_side_door Garage side door should be unlocked. unlock
219 lock.attic_door Attic door needs locking. lock
220 lock.fire_escape Can you unlock the fire escape? unlock
221 lock.storage_room_door Please lock the storage room door. lock
222 lock.boathouse_door Unlock the boathouse door. unlock
223 lock.carport_gate Carport gate needs to be locked. lock
224 lock.backyard_gate Can we have the backyard gate unlocked? unlock
225 lock.front_porch_door Lock the front porch door. lock
226 lock.back_terrace_door Open the lock on the back terrace door. unlock
227 lock.wine_cellar Ensure the wine cellar is locked. lock
228 lock.sunroom_door Please unlock the sunroom door. unlock
229 lock.home_office I'd like the home office locked up. lock
230 lock.playroom_door Can you unlock the playroom door? unlock
231 lock.art_studio The art studio should be locked. lock
232 lock.music_room Unlock the music room, please. unlock
233 lock.home_gym Lock the home gym door. lock
234 lock.cinema_room Cinema room needs to be unlocked. unlock
235 lock.library_door Please lock the library door. lock
236 lock.conservatory Can the conservatory be unlocked? unlock
237 media_player.kitchen Could you start the media in the kitchen turn_on
238 media_player.kitchen Play the previous track in the kitchen media_previous_track
239 media_player.kitchen Please raise the volume in the kitchen volume_up
240 media_player.living_room Activate the media in the living room turn_on
241 media_player.living_room Mute the media player in the living room volume_mute
242 media_player.living_room Skip to the next track in the living room media_next_track
243 media_player.living_room Turn up the volume in the living room volume_up
244 media_player.master_bedroom Can you increase the volume on the master bedroom media player volume_up
245 media_player.master_bedroom Pause the media in the master bedroom media_pause
246 media_player.master_bedroom Turn on the master bedroom media player turn_on
247 media_player.nursery Please play the media in the nursery media_play
248 media_player.nursery Stop the media in the nursery media_stop
249 media_player.nursery Turn down the volume in the nursery volume_down
250 media_player.office Can you decrease the volume in the office volume_down
251 media_player.living_room_tv Please turn on the living room TV. turn_on
252 media_player.kitchen_radio Switch off the kitchen radio. turn_off
253 media_player.bedroom_speaker Can you increase the volume in the bedroom? volume_up
254 media_player.office_sound_system Lower the volume in the office. volume_down
255 media_player.garage_stereo Mute the stereo in the garage. volume_mute
256 media_player.patio_speaker Start playing music on the patio speaker. media_play
257 media_player.bathroom_audio Pause the bathroom audio. media_pause
258 media_player.guest_room_media Stop the guest room media player. media_stop
259 media_player.basement_home_theater Skip to the next track in the basement. media_next_track
260 media_player.nursery_lullaby Go back to the previous lullaby in the nursery. media_previous_track
261 media_player.deck_music_system Turn on the deck's music system. turn_on
262 media_player.lounge_entertainment Switch off the lounge entertainment center. turn_off
263 media_player.dining_area_jukebox Increase the jukebox volume in the dining area. volume_up
264 media_player.game_room_speakers Turn down the game room speakers. volume_down
265 media_player.library_soundbar Mute the soundbar in the library. volume_mute
266 media_player.sunroom_stereo Play the stereo in the sunroom. media_play
267 media_player.loft_tv Pause the TV in the loft. media_pause
268 media_player.poolside_media Stop the poolside media system. media_stop
269 media_player.gym_music_player Skip to the next song in the gym. media_next_track
270 media_player.study_room_radio Go back to the previous station in the study room. media_previous_track
271 media_player.backyard_speakers Turn on the backyard speakers. turn_on
272 media_player.entryway_echo Turn off the Echo in the entryway. turn_off
273 media_player.rooftop_deck_audio Raise the rooftop audio volume. volume_up
274 media_player.workshop_sound_system Lower the sound system volume in the workshop. volume_down
275 media_player.art_studio_player Mute the media player in the art studio. volume_mute
276 media_player.kids_room_storyteller Start the storyteller in the kids' room. media_play
277 media_player.laundry_room_radio Pause the radio in the laundry room. media_pause
278 media_player.balcony_speakers Stop the balcony speakers. media_stop
279 media_player.yoga_room_music Next track for the yoga room music. media_next_track
280 media_player.conservatory_cd_player Previous track on the conservatory CD player. media_previous_track
281 media_player.foyer_sound_system Power on the foyer sound system. turn_on
282 media_player.wine_cellar_speakers Power off the speakers in the wine cellar. turn_off
283 media_player.greenhouse_radio Increase the greenhouse radio volume. volume_up
284 media_player.attic_audio_system Decrease attic audio system volume. volume_down
285 media_player.boathouse_stereo Mute the stereo in the boathouse. volume_mute
286 media_player.cellar_jukebox Play the jukebox in the cellar. media_play
287 media_player.corridor_intercom Pause the corridor intercom. media_pause
288 media_player.porch_sound_system Stop the porch sound system. media_stop
289 media_player.garden_music Next track for the garden music. media_next_track
290 media_player.driveway_speakers Previous track on the driveway speakers. media_previous_track
291 media_player.hallway_audio Switch on the hallway audio system. turn_on
292 media_player.mudroom_media_player Switch off the mudroom media player. turn_off
293 media_player.utility_room_radio Turn up the utility room radio. volume_up
294 media_player.shed_sound_system Turn down the shed sound system. volume_down
295 media_player.treehouse_speakers Mute the treehouse speakers. volume_mute
296 switch.philips_hue_living_room Turn on the living room lights. turn_on
297 switch.belkin_wemo_garage Turn off the garage switch. turn_off
298 switch.tp_link_kasa_porch Toggle the porch lights. toggle
299 switch.legrand_radiant_kitchen Turn on the kitchen lights. turn_on
300 switch.lutron_caseta_bedroom Turn off the bedroom lights. turn_off
301 switch.ge_z_wave_bathroom Turn on the bathroom fan. turn_on
302 switch.honeywell_home_office Toggle the office lights. toggle
303 switch.samsung_smartthings_security Turn off the security system. turn_off
304 switch.eve_energy_balcony Turn on the balcony lighting. turn_on
305 switch.fibaro_pool Turn off the pool lights. turn_off
306 switch.nest_thermostat_terrace Turn on the terrace thermostat. turn_on
307 switch.ecobee_garden Turn off the garden lights. turn_off
308 switch.sonoff_dining_room Toggle the dining room lights. toggle
309 switch.wink_relay_driveway Turn on the driveway lights. turn_on
310 switch.insteon_patio Turn off the patio lights. turn_off
311 switch.sengled_deck Turn on the deck lighting. turn_on
312 switch.osram_hallway Toggle the hallway lights. toggle
313 switch.yeelight_sunroom Turn off the sunroom lights. turn_off
314 switch.gosund_attic Turn on the attic light switch. turn_on
315 switch.meross_walkway Turn off the walkway lighting. turn_off
316 switch.koogeek_basement Toggle the basement lights. toggle
317 switch.nanoleaf_stairway Turn on the stairway lights. turn_on
318 switch.xiaomi_bedside Turn off the bedside lamp. turn_off
319 switch.arlo_floodlights Toggle the security floodlights. toggle
320 switch.wyze_study Turn on the study room lights. turn_on
321 switch.ikea_guest_room Turn off the guest room lights. turn_off
322 switch.netatmo_front_yard Turn on the front yard lighting. turn_on
323 switch.tuya_shed Turn off the shed light switch. turn_off
324 switch.broadlink_kitchenette Toggle the kitchenette lights. toggle
325 switch.moeshouse_gym Turn on the gym lighting. turn_on
326 switch.hue_bedroom_2 Turn off the second bedroom lights. turn_off
327 switch.wemo_laundry_room Turn on the laundry room lights. turn_on
328 switch.kasa_living_room Toggle the living room lights. toggle
329 switch.radiant_office Turn off the office lights. turn_off
330 switch.caseta_hallway_2 Turn on the second hallway lights. turn_on
331 switch.z_wave_guest_bathroom Turn off the guest bathroom fan. turn_off
332 switch.home_office_dimmer Toggle the home office dimmer. toggle
333 switch.security_camera_light Turn on the security camera light. turn_on
334 switch.patio_heater_switch Turn off the patio heater. turn_off
335 switch.kitchen_under_cabinet Toggle the kitchen under cabinet lights. toggle
336 switch.hallway_dimmer Could you dim the hallway lights? turn_on
337 switch.kitchen_fan Please turn off the kitchen fan. turn_off
338 switch.garden_spotlights Activate the garden spotlights. turn_on
339 switch.poolside_lanterns Deactivate the poolside lanterns. turn_off
340 switch.front_porch_sensor Engage the front porch sensor light. turn_on
341 switch.backyard_floodlight Can you shut off the backyard floodlight? turn_off
342 switch.staircase_light_strip Could you light up the staircase light strip? turn_on
343 switch.laundry_area Please switch off the laundry area lights. turn_off
344 switch.office_desk_lamp Illuminate the desk lamp in my office. turn_on
345 switch.basement_sconces Can we turn down the basement sconces? turn_off
346 switch.library_ceiling Engage the ceiling lights in the library. turn_on
347 switch.sunroom_blinds I'd like the sunroom blinds closed, please. turn_off
348 switch.guest_bathroom Light up the guest bathroom, please. turn_on
349 switch.patio_string_lights Switch off the string lights on the patio. turn_off
350 switch.kitchen_island Disable the kitchen island lights. turn_off
351 switch.entryway_chandelier Illuminate the entryway chandelier. turn_on
352 switch.garage_worklight Can we power down the garage worklight? turn_off
353 switch.bedroom_track_lighting Brighten the bedroom track lighting. turn_on
354 switch.home_cinema Please turn off the home cinema lights. turn_off
355 switch.balcony_mood_lighting Activate the mood lighting on the balcony. turn_on
356 switch.dining_room_dimmer Set the dining room lights to off. turn_off
357 switch.playroom_nightlight Can you turn on the playroom nightlight? turn_on
358 switch.art_studio_spots Please disable the art studio spotlights. turn_off
359 switch.foyer_wall_sconce Light up the foyer wall sconce. turn_on
360 switch.back_entry Shut down the back entry lights. turn_off
361 switch.corridor_track Brighten up the corridor track lights. turn_on
362 switch.veranda_fairy_lights Switch off the veranda fairy lights, please. turn_off
363 switch.master_suite Set the master suite to nighttime mode. turn_on
364 switch.walk_in_closet Disable the walk-in closet lights. turn_off
365 switch.roof_deck Engage the roof deck lighting. turn_on
366 switch.bathroom_mirror Can you turn off the bathroom mirror light? turn_off
367 switch.storage_room Please power down the storage room lights. turn_off
368 switch.wine_cellar Illuminate the wine cellar. turn_on
369 switch.conservation_area Deactivate the conservation area lighting. turn_off
370 switch.gym_ceiling Light up the gym ceiling lights. turn_on
371 switch.hobby_room Could we turn off the hobby room lights? turn_off
372 switch.front_lawn Activate the front lawn spotlights. turn_on
373 switch.rear_terrace Can you dim the lights on the rear terrace? turn_off

View File

@@ -577,4 +577,71 @@ climate.netatmo_smart,"Netatmo Smart Thermostat"
climate.sinope_smart,"Sinopé Smart Thermostat"
climate.kono_thermostat,"Kono Smart Thermostat"
climate.mysa_smart_thermostat,"Mysa Smart Thermostat for Electric Baseboard Heaters"
climate.zen_wifi_thermostat,"Zen Thermostat WiFi Edition"
climate.zen_wifi_thermostat,"Zen Thermostat WiFi Edition"
vacuum.living_room_roomba,"Living room vacuum"
vacuum.kitchen_xiaomi,"Kitchen vacuum"
vacuum.upstairs_dyson,"Upstairs dust buster"
vacuum.basement_deebot,"Basement deebot"
vacuum.master_bedroom_shark,"Master bedroom vacuum"
vacuum.garage_roomba_2,"Garage cleaning bot"
vacuum.under_sofa_cleaner,"Under sofa cleaner"
vacuum.dining_area_bissel,"Dining area dirt remover"
vacuum.hallway_neato,"Hallway path cleaner"
vacuum.entryway_eufy,"Entryway dust collector"
vacuum.patio_doorway_vac,"Patio doorway cleaner"
vacuum.left_corner_bot,"Left corner dirt sucker"
vacuum.right_stairwell_sweeper,"Right stairwell cleaner"
vacuum.upstairs_bathroom_vac,"Upstairs bathroom helper"
vacuum.downstairs_guest_room,"Downstairs guest room vac"
vacuum.smart_home_automator,"Smart home cleaning bot"
vacuum.above_stairs_robot,"Above stairs dusting device"
vacuum.under_bed_cleaner,"Under bed dust collector"
vacuum.front_hall_samsung,"Front hall sweeping bot"
vacuum.back_deck_sweeper,"Back deck area cleaner"
todo.daily_chores_list,"Daily chores tracker"
todo.grocery_shopping_list,"Grocery shopping organizer"
todo.weekend_projects,"Weekend DIY projects list"
todo.family_event_planner,"Family event planner"
todo.workout_routine_tracker,"Workout routine scheduler"
todo.kids_homework_deadlines,"Kids homework deadlines"
todo.pet_vaccination_schedule,"Pet vaccination scheduler"
todo.car_maintenance_log,"Car maintenance tracker"
todo.birthday_reminder_list,"Birthday reminder list"
todo.anniversary_planner,"Anniversary event planner"
todo.vacation_planning,"Vacation planning assistant"
todo.book_reading_list,"Reading list organizer"
todo.movie_watchlist,"Movie night watchlist"
todo.recipe_collection,"Recipe collection"
todo.home_renovation_planner,"Home renovation scheduler"
todo.garden_care_schedule,"Garden care planner"
todo.bill_payment_reminders,"Bill payment reminders"
todo.insurance_renewal_alerts,"Insurance renewal alerts"
todo.subscription_management,"Subscription management tool"
todo.warranty_tracker,"Warranty expiration tracker"
timer.kitchen_oven,"Kitchen oven timer"
timer.laundry_machine_1,"Laundry cycle tracker"
timer.garden_watering,"Garden watering scheduler"
timer.front_porch_lights,"Front porch light timer"
timer.backyard_floodlights,"Backyard floodlight controller"
timer.garage_door_1,"Garage door timer"
timer.bedroom_lamp_timer,"Bedroom lamp scheduler"
timer.dining_room_dimmer,"Dining room light timer"
timer.upstairs_hallway,"Upstairs hallway timer"
timer.downstairs_closet_light,"Downstairs closet timer"
timer.entryway_chandelier,"Entryway chandelier timer"
timer.patio_lighting,"Patio ambiance timer"
timer.driveway_security_lights,"Driveway security timer"
timer.kids_room_nightlight,"Kids room nightlight timer"
timer.timer0,"General purpose timer"
timer.timer7,"Custom timer 7"
timer.my_timer,"Personalized timer"
timer.kitchen_timer,"Kitchen countdown"
timer.laundry_countdown,"Laundry cycle timer"
timer.morning_alarm,"Morning wakeup alarm"
timer.workout_timer,"Exercise session timer"
timer.study_session,"Study focus timer"
timer.meditation_clock,"Meditation duration tracker"
timer.baby_nap_timer,"Baby nap monitor"
timer.tea_steeping,"Tea steeping countdown"
timer.game_timer,"Board game timer"
timer.morning_coffee,"Morning coffee brew timer"
1 device_name description
577 climate.sinope_smart Sinopé Smart Thermostat
578 climate.kono_thermostat Kono Smart Thermostat
579 climate.mysa_smart_thermostat Mysa Smart Thermostat for Electric Baseboard Heaters
580 climate.zen_wifi_thermostat Zen Thermostat WiFi Edition
581 vacuum.living_room_roomba Living room vacuum
582 vacuum.kitchen_xiaomi Kitchen vacuum
583 vacuum.upstairs_dyson Upstairs dust buster
584 vacuum.basement_deebot Basement deebot
585 vacuum.master_bedroom_shark Master bedroom vacuum
586 vacuum.garage_roomba_2 Garage cleaning bot
587 vacuum.under_sofa_cleaner Under sofa cleaner
588 vacuum.dining_area_bissel Dining area dirt remover
589 vacuum.hallway_neato Hallway path cleaner
590 vacuum.entryway_eufy Entryway dust collector
591 vacuum.patio_doorway_vac Patio doorway cleaner
592 vacuum.left_corner_bot Left corner dirt sucker
593 vacuum.right_stairwell_sweeper Right stairwell cleaner
594 vacuum.upstairs_bathroom_vac Upstairs bathroom helper
595 vacuum.downstairs_guest_room Downstairs guest room vac
596 vacuum.smart_home_automator Smart home cleaning bot
597 vacuum.above_stairs_robot Above stairs dusting device
598 vacuum.under_bed_cleaner Under bed dust collector
599 vacuum.front_hall_samsung Front hall sweeping bot
600 vacuum.back_deck_sweeper Back deck area cleaner
601 todo.daily_chores_list Daily chores tracker
602 todo.grocery_shopping_list Grocery shopping organizer
603 todo.weekend_projects Weekend DIY projects list
604 todo.family_event_planner Family event planner
605 todo.workout_routine_tracker Workout routine scheduler
606 todo.kids_homework_deadlines Kids homework deadlines
607 todo.pet_vaccination_schedule Pet vaccination scheduler
608 todo.car_maintenance_log Car maintenance tracker
609 todo.birthday_reminder_list Birthday reminder list
610 todo.anniversary_planner Anniversary event planner
611 todo.vacation_planning Vacation planning assistant
612 todo.book_reading_list Reading list organizer
613 todo.movie_watchlist Movie night watchlist
614 todo.recipe_collection Recipe collection
615 todo.home_renovation_planner Home renovation scheduler
616 todo.garden_care_schedule Garden care planner
617 todo.bill_payment_reminders Bill payment reminders
618 todo.insurance_renewal_alerts Insurance renewal alerts
619 todo.subscription_management Subscription management tool
620 todo.warranty_tracker Warranty expiration tracker
621 timer.kitchen_oven Kitchen oven timer
622 timer.laundry_machine_1 Laundry cycle tracker
623 timer.garden_watering Garden watering scheduler
624 timer.front_porch_lights Front porch light timer
625 timer.backyard_floodlights Backyard floodlight controller
626 timer.garage_door_1 Garage door timer
627 timer.bedroom_lamp_timer Bedroom lamp scheduler
628 timer.dining_room_dimmer Dining room light timer
629 timer.upstairs_hallway Upstairs hallway timer
630 timer.downstairs_closet_light Downstairs closet timer
631 timer.entryway_chandelier Entryway chandelier timer
632 timer.patio_lighting Patio ambiance timer
633 timer.driveway_security_lights Driveway security timer
634 timer.kids_room_nightlight Kids room nightlight timer
635 timer.timer0 General purpose timer
636 timer.timer7 Custom timer 7
637 timer.my_timer Personalized timer
638 timer.kitchen_timer Kitchen countdown
639 timer.laundry_countdown Laundry cycle timer
640 timer.morning_alarm Morning wakeup alarm
641 timer.workout_timer Exercise session timer
642 timer.study_session Study focus timer
643 timer.meditation_clock Meditation duration tracker
644 timer.baby_nap_timer Baby nap monitor
645 timer.tea_steeping Tea steeping countdown
646 timer.game_timer Board game timer
647 timer.morning_coffee Morning coffee brew timer

View File

@@ -0,0 +1,51 @@
duration,english_name
00:30:00,Half an hour
01:00:00,One hour
00:15:00,Fifteen minutes
02:00:00,Two hours
00:05:00,Five minutes
00:45:00,Forty-five minutes
03:30:00,Three and a half hours
00:10:00,Ten minutes
01:30:00,One and a half hours
04:00:00,Four hours
00:20:00,Twenty minutes
05:00:00,Five hours
00:02:00,Two minutes
06:30:00,Six and a half hours
00:50:00,Fifty minutes
07:45:00,Seven hours and forty-five minutes
00:01:00,One minute
08:00:00,Eight hours
00:40:00,Forty minutes
09:15:00,Nine hours and fifteen minutes
00:00:30,Thirty seconds
00:00:45,Forty-five seconds
00:01:30,One minute and thirty seconds
00:02:30,Two minutes and thirty seconds
00:03:15,Three minutes and fifteen seconds
00:00:10,Ten seconds
00:00:20,Twenty seconds
00:04:00,Four minutes
00:05:30,Five minutes and thirty seconds
00:06:45,Six minutes and forty-five seconds
00:07:20,Seven minutes and twenty seconds
00:08:05,Eight minutes and five seconds
00:10:00,Ten minutes
00:12:30,Twelve minutes and thirty seconds
00:15:45,Fifteen minutes and forty-five seconds
00:20:00,Twenty minutes
00:25:00,Twenty-five minutes
00:30:30,Thirty minutes and thirty seconds
00:45:45,Forty-five minutes and forty-five seconds
00:50:50,Fifty minutes and fifty seconds
00:00:05,Five seconds
00:00:15,Fifteen seconds
00:00:25,Twenty-five seconds
00:00:35,Thirty-five seconds
00:00:40,Forty seconds
00:00:45,Forty-five seconds
00:00:50,Fifty seconds
00:00:55,Fifty-five seconds
00:00:08,Eight seconds
00:00:12,Twelve seconds
1 duration english_name
2 00:30:00 Half an hour
3 01:00:00 One hour
4 00:15:00 Fifteen minutes
5 02:00:00 Two hours
6 00:05:00 Five minutes
7 00:45:00 Forty-five minutes
8 03:30:00 Three and a half hours
9 00:10:00 Ten minutes
10 01:30:00 One and a half hours
11 04:00:00 Four hours
12 00:20:00 Twenty minutes
13 05:00:00 Five hours
14 00:02:00 Two minutes
15 06:30:00 Six and a half hours
16 00:50:00 Fifty minutes
17 07:45:00 Seven hours and forty-five minutes
18 00:01:00 One minute
19 08:00:00 Eight hours
20 00:40:00 Forty minutes
21 09:15:00 Nine hours and fifteen minutes
22 00:00:30 Thirty seconds
23 00:00:45 Forty-five seconds
24 00:01:30 One minute and thirty seconds
25 00:02:30 Two minutes and thirty seconds
26 00:03:15 Three minutes and fifteen seconds
27 00:00:10 Ten seconds
28 00:00:20 Twenty seconds
29 00:04:00 Four minutes
30 00:05:30 Five minutes and thirty seconds
31 00:06:45 Six minutes and forty-five seconds
32 00:07:20 Seven minutes and twenty seconds
33 00:08:05 Eight minutes and five seconds
34 00:10:00 Ten minutes
35 00:12:30 Twelve minutes and thirty seconds
36 00:15:45 Fifteen minutes and forty-five seconds
37 00:20:00 Twenty minutes
38 00:25:00 Twenty-five minutes
39 00:30:30 Thirty minutes and thirty seconds
40 00:45:45 Forty-five minutes and forty-five seconds
41 00:50:50 Fifty minutes and fifty seconds
42 00:00:05 Five seconds
43 00:00:15 Fifteen seconds
44 00:00:25 Twenty-five seconds
45 00:00:35 Thirty-five seconds
46 00:00:40 Forty seconds
47 00:00:45 Forty-five seconds
48 00:00:50 Fifty seconds
49 00:00:55 Fifty-five seconds
50 00:00:08 Eight seconds
51 00:00:12 Twelve seconds

View File

@@ -1,34 +1,660 @@
"service","device_type","response_1","response_2","response_3"
"turn_on","light","Turning on the light for you.","Sure, I'll turn on the light now.","I'll go ahead and turn the light on."
"turn_off","light","Turning off the light as requested.","I'll switch off the light for you.","Sure, turning off the light."
"toggle","light","Toggling the light for you.","Switching the light's state now.","I'll toggle the light for you."
"turn_on","fan","Turning on the fan for you.","I'll get the fan going for you.","Sure, turning on the fan now."
"turn_off","fan","Switching off the fan as requested.","I'll turn off the fan for you.","Okay, turning off the fan."
"toggle","fan","I'll toggle the fan's state for you.","Toggling the fan now.","Switching the fan's state for you."
"increase_speed","fan","Increasing the fan speed for you.","Sure, speeding up the fan now.","I'll go ahead and make the fan faster."
"decrease_speed","fan","Reducing the fan speed as you requested.","I'll slow down the fan for you.","Sure, decreasing the fan speed."
"open","garage_door","Opening the garage door for you.","Sure, I'll open the garage door.","I'll go ahead and open the garage door."
"close","garage_door","Closing the garage door as requested.","I'll shut the garage door for you.","Sure, closing the garage door."
"stop","garage_door","Stopping the garage door now.","I'll stop the garage door for you.","Sure, I'll halt the garage door movement."
"toggle","garage_door","Toggling the garage door state for you.","I'll switch the garage door's state now.","Switching the garage door's state for you."
"open","blinds","Opening the blinds for you.","I'll go ahead and open the blinds.","Sure, opening the blinds now."
"close","blinds","Closing the blinds as you requested.","I'll close the blinds for you.","Sure, closing the blinds."
"stop","blinds","Stopping the blinds now.","I'll stop the blinds for you.","Sure, halting the blinds movement."
"toggle","blinds","Toggling the blinds state for you.","Switching the blinds' state now.","I'll toggle the blinds for you."
"turn_on","media_player","Turning on the media player for you.","I'll get the media player going.","Sure, activating the media player."
"turn_off","media_player","Turning off the media player as requested.","I'll switch off the media player.","Sure, deactivating the media player."
"toggle","media_player","Toggling the media player for you.","Switching the media player's state.","I'll toggle the media player."
"volume_up","media_player","Increasing the volume for you.","Sure, turning up the volume now.","I'll go ahead and raise the volume."
"volume_down","media_player","Reducing the volume as you requested.","I'll turn down the volume for you.","Sure, lowering the volume."
"volume_mute","media_player","Muting the volume for you.","I'll mute the media player now.","Sure, muting the volume."
"media_play_pause","media_player","Toggling play/pause on the media player.","Switching between play and pause.","I'll toggle between play and pause for you."
"media_play","media_player","Starting media playback.","I'll start playing the media for you.","Sure, beginning playback."
"media_pause","media_player","Pausing the media playback.","I'll pause the media for you.","Sure, pausing playback."
"media_stop","media_player","Stopping the media playback.","I'll stop the media for you.","Sure, halting playback."
"media_next_track","media_player","Skipping to the next track.","I'll go to the next track for you.","Sure, moving to the next track."
"media_previous_track","media_player","Going back to the previous track.","I'll return to the previous track for you.","Sure, reverting to the previous track."
"lock","lock","Locking the door for you.","I'll go ahead and lock the door.","Sure, securing the lock."
"unlock","lock","Unlocking the door as you requested.","I'll unlock the door for you.","Sure, unlocking the door."
"turn_on","switch","Turning on the switch for you.","Sure, I'll turn on the light now.","I'll go ahead and turn the switch on."
"turn_off","switch","Turning off the switch as requested.","I'll switch off the device for you.","Sure, turning off the switch."
"toggle","switch","Toggling the switch for you.","Changing the switch's state now.","I'll toggle the switch for you."
service,response,language,persona,short
blinds.open,Opening the blinds for you.,en,assistant,0
blinds.open,I'll go ahead and open the blinds.,en,assistant,0
blinds.open,"Sure, opening the blinds now.",en,assistant,0
blinds.close,Closing the blinds as you requested.,en,assistant,0
blinds.close,I'll close the blinds for you.,en,assistant,0
blinds.close,"Sure, closing the blinds.",en,assistant,0
blinds.stop,Stopping the blinds now.,en,assistant,0
blinds.stop,I'll stop the blinds for you.,en,assistant,0
blinds.stop,"Sure, halting the blinds movement.",en,assistant,0
blinds.toggle,Toggling the blinds state for you.,en,assistant,0
blinds.toggle,Switching the blinds' state now.,en,assistant,0
blinds.toggle,I'll toggle the blinds for you.,en,assistant,0
blinds.open,Lifting <device_name> blinds as requested,en,assistant,0
blinds.open,Opening <device_name> now,en,assistant,0
blinds.open,Raising <device_name> for you,en,assistant,0
blinds.stop,Freezing <device_name> position,en,assistant,0
blinds.stop,Halting <device_name> now,en,assistant,0
blinds.stop,Stopping <device_name> operation,en,assistant,0
blinds.open,Raising <device_name>,en,assistant,0
blinds.close,Closing <device_name> for you,en,assistant,0
blinds.close,Lowering <device_name> now,en,assistant,0
blinds.close,Shutting <device_name> as requested,en,assistant,0
blinds.close,Lowering <device_name>,en,assistant,0
blinds.toggle,Flipping <device_name> state now,en,assistant,0
blinds.toggle,Switching <device_name> state as requested,en,assistant,0
blinds.toggle,Toggling <device_name> for you,en,assistant,0
blinds.toggle,Toggling <device_name>,en,assistant,0
climate.set_humidity,Increasing humidity to <humidity>.,en,assistant,0
climate.set_humidity,Setting humidity to <humidity> percent.,en,assistant,0
climate.set_humidity,Adjusting humidity to <humidity>%.,en,assistant,0
climate.set_fan_mode,Setting the fan to <fan_mode> speed.,en,assistant,0
climate.set_fan_mode,Putting the fan on <fan_mode>.,en,assistant,0
climate.set_fan_mode,Changing the fan to <fan_mode> setting.,en,assistant,0
climate.set_hvac_mode,Switching to <hvac_mode> mode.,en,assistant,0
climate.set_hvac_mode,Setting the HVAC to <hvac_mode>.,en,assistant,0
climate.set_hvac_mode,Changing HVAC to <hvac_mode> mode.,en,assistant,0
climate.set_temperature,Setting temperature to <temp_f> degrees.,en,assistant,0
climate.set_temperature,Changing temperature to <temp_c> Celsius.,en,assistant,0
climate.set_temperature,Setting the room to <temp_f> degrees Fahrenheit.,en,assistant,0
climate.set_temperature,Adjusting temperature to <temp_f> degrees Fahrenheit.,en,assistant,0
climate.set_temperature,Setting the room to <temp_c> degrees Celsius for cooler temperature.,en,assistant,0
climate.set_temperature,"Making it warmer, setting temperature to <temp_f> degrees.",en,assistant,0
climate.set_temperature,Lowering the temperature to <temp_c> Celsius.,en,assistant,0
climate.set_temperature,Raising the temperature to <temp_f> degrees Fahrenheit.,en,assistant,0
fan.turn_on,Turning on the fan for you.,en,assistant,0
fan.turn_on,I'll get the fan going for you.,en,assistant,0
fan.turn_on,"Sure, turning on the fan now.",en,assistant,0
fan.turn_off,Switching off the fan as requested.,en,assistant,0
fan.turn_off,I'll turn off the fan for you.,en,assistant,0
fan.turn_off,"Okay, turning off the fan.",en,assistant,0
fan.toggle,I'll toggle the fan's state for you.,en,assistant,0
fan.toggle,Toggling the fan now.,en,assistant,0
fan.toggle,Switching the fan's state for you.,en,assistant,0
fan.increase_speed,Increasing the fan speed for you.,en,assistant,0
fan.increase_speed,"Sure, speeding up the fan now.",en,assistant,0
fan.increase_speed,I'll go ahead and make the fan faster.,en,assistant,0
fan.decrease_speed,Reducing the fan speed as you requested.,en,assistant,0
fan.decrease_speed,I'll slow down the fan for you.,en,assistant,0
fan.decrease_speed,"Sure, decreasing the fan speed.",en,assistant,0
fan.toggle,Flipping <device_name> state for you,en,assistant,0
fan.toggle,Switching <device_name> state as requested,en,assistant,0
fan.toggle,Toggling <device_name> now,en,assistant,0
fan.turn_on,Activating <device_name> now,en,assistant,0
fan.turn_on,Starting <device_name> for you,en,assistant,0
fan.turn_on,"Certainly, starting <device_name>",en,assistant,0
fan.turn_on,Turning on <device_name>,en,assistant,0
fan.turn_on,Starting <device_name>,en,assistant,0
fan.turn_off,Deactivating <device_name> as requested,en,assistant,0
fan.turn_off,Stopping <device_name> for you,en,assistant,0
fan.turn_off,"Certainly, stopping <device_name>",en,assistant,0
fan.turn_off,Turning off <device_name>,en,assistant,0
fan.decrease_speed,Reducing speed of <device_name>,en,assistant,0
fan.decrease_speed,Lowering speed of <device_name> as requested,en,assistant,0
fan.decrease_speed,Slowing down <device_name> for you,en,assistant,0
fan.increase_speed,Increasing speed of <device_name>,en,assistant,0
fan.increase_speed,Ramping up <device_name> speed now,en,assistant,0
fan.increase_speed,Speeding up <device_name> for you,en,assistant,0
fan.increase_speed,Increasing speed of <device_name>,en,assistant,0
fan.decrease_speed,Reducing speed of <device_name>,en,assistant,0
garage_door.open,Opening the garage door for you.,en,assistant,0
garage_door.open,"Sure, I'll open the garage door.",en,assistant,0
garage_door.open,I'll go ahead and open the garage door.,en,assistant,0
garage_door.close,Closing the garage door as requested.,en,assistant,0
garage_door.close,I'll shut the garage door for you.,en,assistant,0
garage_door.close,"Sure, closing the garage door.",en,assistant,0
garage_door.stop,Stopping the garage door now.,en,assistant,0
garage_door.stop,I'll stop the garage door for you.,en,assistant,0
garage_door.stop,"Sure, I'll halt the garage door movement.",en,assistant,0
garage_door.toggle,Toggling the garage door state for you.,en,assistant,0
garage_door.toggle,I'll switch the garage door's state now.,en,assistant,0
garage_door.toggle,Switching the garage door's state for you.,en,assistant,0
garage_door.open,Lifting <device_name> for you,en,assistant,0
garage_door.open,Opening <device_name> now,en,assistant,0
garage_door.open,Raising <device_name> as requested,en,assistant,0
garage_door.stop,Freezing <device_name> position now,en,assistant,0
garage_door.stop,"Certainly, halting <device_name>",en,assistant,0
garage_door.stop,Halting <device_name> operation,en,assistant,0
garage_door.open,Opening <device_name>,en,assistant,0
garage_door.stop,Stopping <device_name>,en,assistant,0
garage_door.close,Closing <device_name> now,en,assistant,0
garage_door.close,Lowering <device_name> for you,en,assistant,0
garage_door.close,Shutting <device_name> as requested,en,assistant,0
garage_door.close,Closing <device_name>,en,assistant,0
garage_door.toggle,Flipping <device_name> state now,en,assistant,0
garage_door.toggle,Switching <device_name> state as requested,en,assistant,0
garage_door.toggle,Toggling <device_name> for you,en,assistant,0
garage_door.toggle,Toggling <device_name>,en,assistant,0
light.turn_on,Turning on the light for you.,en,assistant,0
light.turn_on,"Sure, I'll turn on the light now.",en,assistant,0
light.turn_on,I'll go ahead and turn the light on.,en,assistant,0
light.turn_off,Turning off the light as requested.,en,assistant,0
light.turn_off,I'll switch off the light for you.,en,assistant,0
light.turn_off,"Sure, turning off the light.",en,assistant,0
light.toggle,Toggling the light for you.,en,assistant,0
light.toggle,Switching the light's state now.,en,assistant,0
light.toggle,I'll toggle the light for you.,en,assistant,0
light.toggle,Flipping the <device_name> state,en,assistant,0
light.toggle,Switching <device_name> state as requested,en,assistant,0
light.toggle,Toggling <device_name> for you,en,assistant,0
light.toggle,Toggling <device_name>,en,assistant,0
light.turn_on,Activation of <device_name> in progress,en,assistant,0
light.turn_on,"Certainly, turning on <device_name> now",en,assistant,0
light.turn_on,Switching on <device_name> for you,en,assistant,0
light.turn_on,Turning on <device_name>,en,assistant,0
light.turn_on,Activating <device_name>,en,assistant,0
light.turn_on,Setting the brightness of <device_name> to <brightness>%.,en,assistant,0
light.turn_on,Dimming <device_name> to <brightness>% brightness.,en,assistant,0
light.turn_on,Brightening <device_name> to <brightness>%.,en,assistant,0
light.turn_on,Adjusting <device_name> brightness to <brightness>.,en,assistant,0
light.turn_on,Increasing <device_name>'s brightness to <brightness>.,en,assistant,0
light.turn_on,Lowering the brightness of <device_name> to <brightness>.,en,assistant,0
light.turn_on,Setting <device_name>'s brightness level to <brightness>%.,en,assistant,0
light.turn_on,Setting <device_name> to <brightness>% brightness.,en,assistant,0
light.turn_on,Turning <device_name> <color>.,en,assistant,0
light.turn_on,Changing the color of <device_name> to <color>.,en,assistant,0
light.turn_on,Changing <device_name> to a <color> hue.,en,assistant,0
light.turn_on,Setting <device_name> to be <color>.,en,assistant,0
light.turn_on,Making <device_name> shine in <color>.,en,assistant,0
light.turn_on,Turning <device_name> to a <color> shade.,en,assistant,0
light.turn_on,Setting <device_name> to a <color>.,en,assistant,0
light.turn_on,Setting <device_name> to a <color> color.,en,assistant,0
light.turn_on,Making <device_name> glow <color>.,en,assistant,0
light.turn_on,Turning <device_name> to <color>.,en,assistant,0
light.turn_on,Changing <device_name> to <color>.,en,assistant,0
light.turn_on,Adjusting <device_name> to <color> color.,en,assistant,0
light.turn_on,Switching <device_name> color to <color>.,en,assistant,0
light.turn_on,Setting <device_name> in <color>.,en,assistant,0
light.turn_on,Making <device_name> display a <color> light.,en,assistant,0
light.turn_on,Setting <device_name> color to <color>.,en,assistant,0
light.turn_off,Deactivating <device_name> as requested,en,assistant,0
light.turn_off,Switching off <device_name> now,en,assistant,0
light.turn_off,"Sure, turning off <device_name>",en,assistant,0
light.turn_off,Turning off <device_name>,en,assistant,0
light.turn_off,Deactivating <device_name>,en,assistant,0
lock.lock,Locking the door for you.,en,assistant,0
lock.lock,I'll go ahead and lock the door.,en,assistant,0
lock.lock,"Sure, securing the lock.",en,assistant,0
lock.unlock,Unlocking the door as you requested.,en,assistant,0
lock.unlock,I'll unlock the door for you.,en,assistant,0
lock.unlock,"Sure, unlocking the door.",en,assistant,0
lock.lock,Engaging lock on <device_name>,en,assistant,0
lock.lock,Locking <device_name> now,en,assistant,0
lock.lock,Securing <device_name> for you,en,assistant,0
lock.lock,Locking <device_name>,en,assistant,0
lock.lock,Securing <device_name>,en,assistant,0
lock.unlock,Disengaging lock on <device_name>,en,assistant,0
lock.unlock,Unlocking <device_name> now,en,assistant,0
lock.unlock,Unsecuring <device_name> for you,en,assistant,0
lock.unlock,Unlocking <device_name>,en,assistant,0
media_player.turn_on,Turning on the media player for you.,en,assistant,0
media_player.turn_on,I'll get the media player going.,en,assistant,0
media_player.turn_on,"Sure, activating the media player.",en,assistant,0
media_player.turn_off,Turning off the media player as requested.,en,assistant,0
media_player.turn_off,I'll switch off the media player.,en,assistant,0
media_player.turn_off,"Sure, deactivating the media player.",en,assistant,0
media_player.toggle,Toggling the media player for you.,en,assistant,0
media_player.toggle,Switching the media player's state.,en,assistant,0
media_player.toggle,I'll toggle the media player.,en,assistant,0
media_player.volume_up,Increasing the volume for you.,en,assistant,0
media_player.volume_up,"Sure, turning up the volume now.",en,assistant,0
media_player.volume_up,I'll go ahead and raise the volume.,en,assistant,0
media_player.volume_down,Reducing the volume as you requested.,en,assistant,0
media_player.volume_down,I'll turn down the volume for you.,en,assistant,0
media_player.volume_down,"Sure, lowering the volume.",en,assistant,0
media_player.volume_mute,Muting the volume for you.,en,assistant,0
media_player.volume_mute,I'll mute the media player now.,en,assistant,0
media_player.volume_mute,"Sure, muting the volume.",en,assistant,0
media_player.media_play_pause,Toggling play/pause on the media player.,en,assistant,0
media_player.media_play_pause,Switching between play and pause.,en,assistant,0
media_player.media_play_pause,I'll toggle between play and pause for you.,en,assistant,0
media_player.media_play,Starting media playback.,en,assistant,0
media_player.media_play,I'll start playing the media for you.,en,assistant,0
media_player.media_play,"Sure, beginning playback.",en,assistant,0
media_player.media_pause,Pausing the media playback.,en,assistant,0
media_player.media_pause,I'll pause the media for you.,en,assistant,0
media_player.media_pause,"Sure, pausing playback.",en,assistant,0
media_player.media_stop,Stopping the media playback.,en,assistant,0
media_player.media_stop,I'll stop the media for you.,en,assistant,0
media_player.media_stop,"Sure, halting playback.",en,assistant,0
media_player.media_next_track,Skipping to the next track.,en,assistant,0
media_player.media_next_track,I'll go to the next track for you.,en,assistant,0
media_player.media_next_track,"Sure, moving to the next track.",en,assistant,0
media_player.media_previous_track,Going back to the previous track.,en,assistant,0
media_player.media_previous_track,I'll return to the previous track for you.,en,assistant,0
media_player.media_previous_track,"Sure, reverting to the previous track.",en,assistant,0
media_player.volume_up,Increasing <device_name>'s volume.,en,assistant,0
media_player.volume_up,Turning up <device_name> a bit.,en,assistant,0
media_player.volume_up,Making <device_name> louder.,en,assistant,0
media_player.media_play,Starting playback on <device_name>.,en,assistant,0
media_player.media_play,Playing <device_name> now.,en,assistant,0
media_player.media_play,Playing media on <device_name>.,en,assistant,0
media_player.media_stop,Stopping <device_name> completely.,en,assistant,0
media_player.media_stop,Stopping playback on <device_name>.,en,assistant,0
media_player.media_stop,Ending session on <device_name>.,en,assistant,0
media_player.volume_down,Lowering <device_name>'s volume.,en,assistant,0
media_player.volume_down,Decreasing <device_name>'s volume.,en,assistant,0
media_player.volume_down,Turning down <device_name>.,en,assistant,0
media_player.volume_mute,Muting <device_name>.,en,assistant,0
media_player.volume_mute,Silencing <device_name>.,en,assistant,0
media_player.volume_mute,Muting <device_name> now.,en,assistant,0
media_player.media_pause,Pausing <device_name>.,en,assistant,0
media_player.media_pause,Pausing <device_name> now.,en,assistant,0
media_player.media_pause,Holding playback on <device_name>.,en,assistant,0
media_player.media_next_track,Skipping to next track on <device_name>.,en,assistant,0
media_player.media_next_track,Advancing to the next song on <device_name>.,en,assistant,0
media_player.media_next_track,Skipping this track on <device_name>.,en,assistant,0
media_player.media_previous_track,Going back to previous track on <device_name>.,en,assistant,0
media_player.media_previous_track,Rewinding to the previous song on <device_name>.,en,assistant,0
media_player.media_previous_track,Going back a track on <device_name>.,en,assistant,0
switch.turn_on,Turning on the switch for you.,en,assistant,0
switch.turn_on,"Sure, I'll turn on the light now.",en,assistant,0
switch.turn_on,I'll go ahead and turn the switch on.,en,assistant,0
switch.turn_off,Turning off the switch as requested.,en,assistant,0
switch.turn_off,I'll switch off the device for you.,en,assistant,0
switch.turn_off,"Sure, turning off the switch.",en,assistant,0
switch.toggle,Toggling the switch for you.,en,assistant,0
switch.toggle,Changing the switch's state now.,en,assistant,0
switch.toggle,I'll toggle the switch for you.,en,assistant,0
switch.toggle,Toggling <device_name>.,en,assistant,0
switch.toggle,"Yes, toggling <device_name>.",en,assistant,0
switch.toggle,"Yes, I can toggle <device_name>.",en,assistant,0
switch.toggle,Toggling <device_name> as requested.,en,assistant,0
switch.toggle,Changing the state of <device_name>.,en,assistant,0
switch.toggle,Quickly toggling <device_name>.,en,assistant,0
switch.turn_on,Turning on <device_name> now.,en,assistant,0
switch.turn_on,I'm turning on <device_name>.,en,assistant,0
switch.turn_on,Activating <device_name>.,en,assistant,0
switch.turn_on,"Sure, turning <device_name> on.",en,assistant,0
switch.turn_on,Switching on <device_name> right away.,en,assistant,0
switch.turn_on,"Sure, lighting up <device_name> now.",en,assistant,0
switch.turn_on,Turning <device_name> on as needed.,en,assistant,0
switch.turn_off,Switching off <device_name>.,en,assistant,0
switch.turn_off,Turning off <device_name>.,en,assistant,0
switch.turn_off,Deactivating <device_name>.,en,assistant,0
switch.turn_off,"Okay, turning <device_name> off.",en,assistant,0
switch.turn_off,"Okay, I'm turning off <device_name>.",en,assistant,0
switch.turn_off,Shutting off <device_name> for bedtime.,en,assistant,0
switch.turn_off,Turning off <device_name> now.,en,assistant,0
blinds.close,shutting <device_name>,en,assistant,1
blinds.close,lowering <device_name>,en,assistant,1
blinds.close,closing <device_name>,en,assistant,1
blinds.open,raising <device_name>,en,assistant,1
blinds.open,lifting <device_name>,en,assistant,1
blinds.open,opening <device_name>,en,assistant,1
fan.decrease_speed,slowing down <device_name>,en,assistant,1
fan.decrease_speed,reducing speed of <device_name>,en,assistant,1
fan.decrease_speed,reducing <device_name>,en,assistant,1
fan.increase_speed,speeding up <device_name>,en,assistant,1
fan.increase_speed,increasing speed of <device_name>,en,assistant,1
fan.increase_speed,ramping up <device_name>,en,assistant,1
fan.toggle,toggling <device_name>,en,assistant,1
fan.toggle,flipping <device_name>,en,assistant,1
fan.turn_off,stopping <device_name>,en,assistant,1
fan.turn_off,turning off <device_name>,en,assistant,1
fan.turn_off,deactivating <device_name>,en,assistant,1
fan.turn_on,starting <device_name>,en,assistant,1
fan.turn_on,activating <device_name>,en,assistant,1
garage_door.close,shutting <device_name>,en,assistant,1
garage_door.close,deactivating <device_name>,en,assistant,1
garage_door.close,closing <device_name>,en,assistant,1
garage_door.open,opening <device_name>,en,assistant,1
garage_door.open,lifting <device_name>,en,assistant,1
garage_door.stop,stopping <device_name>,en,assistant,1
light.toggle,toggling <device_name>,en,assistant,1
light.toggle,flipping <device_name>,en,assistant,1
light.turn_off,turning off <device_name>,en,assistant,1
light.turn_off,deactivating <device_name>,en,assistant,1
light.turn_off,lowering <device_name>,en,assistant,1
light.turn_off,switching off <device_name>,en,assistant,1
light.turn_on,turning on <device_name>,en,assistant,1
light.turn_on,activating <device_name>,en,assistant,1
light.turn_on,switching on <device_name>,en,assistant,1
light.turn_on,turning on both <device_name>,en,assistant,1
lock.lock,securing <device_name>,en,assistant,1
lock.lock,locking <device_name>,en,assistant,1
lock.unlock,unlocking <device_name>,en,assistant,1
lock.unlock,unsecuring <device_name>,en,assistant,1
blinds.open,"Openin' the blinds for ye.",en,pirate,0
blinds.open,"Aye, I'll be openin' the blinds.",en,pirate,0
blinds.open,"Aye, openin' the blinds now.",en,pirate,0
blinds.close,"Closin' the blinds as ye requested.",en,pirate,0
blinds.close,"I'll be closin' the blinds for ye.",en,pirate,0
blinds.close,"Aye, closin' the blinds.",en,pirate,0
blinds.stop,"Stopin' the blinds now.",en,pirate,0
blinds.stop,"I'll halt the blinds for ye.",en,pirate,0
blinds.stop,"Aye, haltin' the blinds' movement.",en,pirate,0
blinds.toggle,"Togglin' the blinds' state for ye.",en,pirate,0
blinds.toggle,"Switchin' the blinds' state now.",en,pirate,0
blinds.toggle,"I'll be togglin' the blinds for ye.",en,pirate,0
blinds.open,"Liftin' <device_name> blinds yarr",en,pirate,0
blinds.open,"Openin' <device_name> now",en,pirate,0
blinds.open,"Raisin' <device_name> for ye",en,pirate,0
blinds.stop,"Freezin' <device_name> position",en,pirate,0
blinds.stop,"Haltin' <device_name> now",en,pirate,0
blinds.stop,"Stoppin' <device_name> operation",en,pirate,0
blinds.open,"Raisin' <device_name>",en,pirate,0
blinds.close,"Closin' <device_name> for ye",en,pirate,0
blinds.close,"Lowerin' <device_name> now",en,pirate,0
blinds.close,"Shuttin' <device_name> yarr",en,pirate,0
blinds.close,"Lowerin' <device_name>",en,pirate,0
blinds.toggle,"Flippin' <device_name> state now",en,pirate,0
blinds.toggle,"Switchin' <device_name> state yarr",en,pirate,0
blinds.toggle,"Togglin' <device_name> for ye",en,pirate,0
blinds.toggle,"Togglin' <device_name>",en,pirate,0
climate.set_humidity,"Yarrr, rampin' up humidity to <humidity>, by the sea!",en,pirate,0
climate.set_humidity,"Arrr, settin' humidity to <humidity> percent, as ye wish!",en,pirate,0
climate.set_humidity,"By Davy Jones' locker, adjustin' humidity to <humidity>%!",en,pirate,0
climate.set_fan_mode,"Hoistin' the fan to <fan_mode> speed, swifter than a sloop!",en,pirate,0
climate.set_fan_mode,"Arr, puttin' the fan on <fan_mode>, steady as she goes!",en,pirate,0
climate.set_fan_mode,"Shiver me timbers, changin' the fan to <fan_mode> setting!",en,pirate,0
climate.set_hvac_mode,"Blimey, switchin' to <hvac_mode> mode, full sail ahead!",en,pirate,0
climate.set_hvac_mode,"Arrr, settin' the HVAC to <hvac_mode>, steady as she goes!",en,pirate,0
climate.set_hvac_mode,"By the powers, changin' HVAC to <hvac_mode> mode!",en,pirate,0
climate.set_temperature,"Arr, settin' temperature to <temp_f> degrees, as warm as the Caribbean sun!",en,pirate,0
climate.set_temperature,"Yarrr, changin' temperature to <temp_c> Celsius, cooler than the deep blue!",en,pirate,0
climate.set_temperature,"Heave ho, settin' the room to <temp_f> degrees Fahrenheit, warm as a pirate's grog!",en,pirate,0
climate.set_temperature,"Avast, adjustin' temperature to <temp_f> degrees Fahrenheit, as cozy as a ship's cabin!",en,pirate,0
climate.set_temperature,"Arr, settin' the room to <temp_c> degrees Celsius for cooler breezes, as refreshing as an ocean mist!",en,pirate,0
climate.set_temperature,"Aye, makin' it warmer, settin' temperature to <temp_f> degrees, like a sun-drenched cove!",en,pirate,0
climate.set_temperature,"Blow me down, lowerin' the temperature to <temp_c> Celsius, as brisk as the morning sea air!",en,pirate,0
climate.set_temperature,"Yo ho, raisin' the temperature to <temp_f> degrees Fahrenheit, warmer than a pirate's plunder!",en,pirate,0
fan.turn_on,"Firin' up the fan for ye, arr!",en,pirate,0
fan.turn_on,"Aye, I'll get the fan blowin' for ye.",en,pirate,0
fan.turn_on,"Yar, turnin' on the fan now!",en,pirate,0
fan.turn_off,"Killin' the fan as ye requested, matey.",en,pirate,0
fan.turn_off,"I'll snuff out the fan for ye.",en,pirate,0
fan.turn_off,"Aye, turnin' off the fan.",en,pirate,0
fan.toggle,"I'll be flippin' the fan's state for ye.",en,pirate,0
fan.toggle,"Togglin' the fan now, by the stars!",en,pirate,0
fan.toggle,"Switchin' the fan's state for ye, savvy?",en,pirate,0
fan.increase_speed,"Boostin' the fan speed for ye, swift as the wind!",en,pirate,0
fan.increase_speed,"Sure as the tide, speedin' up the fan now.",en,pirate,0
fan.increase_speed,"I'll be makin' the fan faster, hold fast!",en,pirate,0
fan.decrease_speed,"Reducin' the fan speed as ye requested, quiet as the deep.",en,pirate,0
fan.decrease_speed,"I'll slow down the fan for ye, easy as a calm sea.",en,pirate,0
fan.decrease_speed,"Sure, decreasin' the fan speed, steady now.",en,pirate,0
fan.toggle,"Flippin' <device_name> state for ye, with a yo-ho-ho!",en,pirate,0
fan.toggle,"Switchin' <device_name> state as requested, on my honor!",en,pirate,0
fan.toggle,"Togglin' <device_name> now, without a fuss!",en,pirate,0
fan.turn_on,"Activatin' <device_name> now, set sail!",en,pirate,0
fan.turn_on,"Startin' <device_name> for ye, full speed ahead!",en,pirate,0
fan.turn_on,"Certainly, startin' <device_name>, let's brave the squall!",en,pirate,0
fan.turn_on,"Turnin' on <device_name>, let the winds favor us!",en,pirate,0
fan.turn_on,"Startin' <device_name>, by the code!",en,pirate,0
fan.turn_off,"Deactivatin' <device_name> as requested, quiet as a hidden cove.",en,pirate,0
fan.turn_off,"Stoppin' <device_name> for ye, as silent as the grave.",en,pirate,0
fan.turn_off,"Certainly, stoppin' <device_name>, all hands!",en,pirate,0
fan.turn_off,"Turnin' off <device_name>, let's not wake the kraken.",en,pirate,0
fan.decrease_speed,"Reducin' speed of <device_name>, smooth sailin'.",en,pirate,0
fan.decrease_speed,"Lowerin' speed of <device_name> as requested, gentle as a lagoon.",en,pirate,0
fan.decrease_speed,"Slowing down <device_name> for ye, easy does it.",en,pirate,0
fan.increase_speed,"Increasin' speed of <device_name>, catch the horizon!",en,pirate,0
fan.increase_speed,"Rampin' up <device_name> speed now, faster than a fleeing galleon!",en,pirate,0
fan.increase_speed,"Speedin' up <device_name> for ye, let's outrun the navy!",en,pirate,0
fan.increase_speed,"Increasin' speed of <device_name>, to outrun the storm!",en,pirate,0
fan.decrease_speed,"Reducin' speed of <device_name>, steady as we go.",en,pirate,0
light.turn_on,"Illuminatin' the room for ye, arr!",en,pirate,0
light.turn_on,"Aye, I'll light up the quarters now.",en,pirate,0
light.turn_on,"Settin' sail with the light on, I will!",en,pirate,0
light.turn_off,"Dousin' the lights as ye wish, matey.",en,pirate,0
light.turn_off,"I'll be snuffin' out the light for ye.",en,pirate,0
light.turn_off,"Aye, extinguishin' the light.",en,pirate,0
light.toggle,"Flippin' the light for ye, by the stars!",en,pirate,0
light.toggle,"Switchin' the light's state, on my honor!",en,pirate,0
light.toggle,"I'll be togglin' the light for ye, savvy?",en,pirate,0
light.toggle,"Flippin' the <device_name> state, with a yo-ho-ho!",en,pirate,0
light.toggle,"Switchin' <device_name> state as commanded, arr!",en,pirate,0
light.toggle,"Togglin' <device_name> for ye, without a fuss!",en,pirate,0
light.toggle,"Togglin' <device_name>, ready for adventure!",en,pirate,0
light.turn_on,"Startin' up <device_name>, on the horizon!",en,pirate,0
light.turn_on,"Aye, brightenin' <device_name> now, clear as day!",en,pirate,0
light.turn_on,"Switchin' on <device_name> for ye, like the northern star!",en,pirate,0
light.turn_on,"Lightin' up <device_name>, as bright as the full moon!",en,pirate,0
light.turn_on,"Activatin' <device_name>, let there be light!",en,pirate,0
light.turn_on,"Settin' the brightness of <device_name> to <brightness>%, as clear as the open sea!",en,pirate,0
light.turn_on,"Dimmin' <device_name> to <brightness>% brightness, like the twilight.",en,pirate,0
light.turn_on,"Brightenin' <device_name> to <brightness>%, like the morning sun!",en,pirate,0
light.turn_on,"Adjustin' <device_name> brightness to <brightness>, as the lighthouse guides.",en,pirate,0
light.turn_on,"Increasin' <device_name>'s brightness to <brightness>, like a beacon in the night!",en,pirate,0
light.turn_on,"Lowerin' the brightness of <device_name> to <brightness>, gentle as moonlight.",en,pirate,0
light.turn_on,"Settin' <device_name>'s brightness level to <brightness>%, as steady as the tide.",en,pirate,0
light.turn_on,"Settin' <device_name> to <brightness>% brightness, as bright as a pirate's gold!",en,pirate,0
light.turn_on,"Turnin' <device_name> <color>, like the colors of the sea.",en,pirate,0
light.turn_on,"Changin' the color of <device_name> to <color>, as vibrant as coral!",en,pirate,0
light.turn_on,"Changin' <device_name> to a <color> hue, bold as a pirate's flag!",en,pirate,0
light.turn_on,"Settin' <device_name> to be <color>, as majestic as the sunset.",en,pirate,0
light.turn_on,"Makin' <device_name> shine in <color>, like jewels from a treasure chest.",en,pirate,0
light.turn_on,"Turnin' <device_name> to a <color> shade, as mysterious as the deep.",en,pirate,0
light.turn_on,"Settin' <device_name> to a <color>, as rich as the spoils of a raid.",en,pirate,0
light.turn_on,"Settin' <device_name> to a <color> color, bright as a parrot's plumage.",en,pirate,0
light.turn_on,"Makin' <device_name> glow <color>, like the glow of an island torch.",en,pirate,0
light.turn_on,"Turnin' <device_name> to <color>, as bold as the pirate's courage.",en,pirate,0
light.turn_on,"Changin' <device_name> to <color>, like the changing tides.",en,pirate,0
light.turn_on,"Adjustin' <device_name> to <color> color, as captivating as a siren's song.",en,pirate,0
light.turn_on,"Switchin' <device_name> color to <color>, like the banner of a ship.",en,pirate,0
light.turn_on,"Settin' <device_name> in <color>, as lively as a tavern's cheer.",en,pirate,0
light.turn_on,"Makin' <device_name> display a <color> light, like the northern lights.",en,pirate,0
light.turn_on,"Settin' <device_name> color to <color>, as striking as a cannon's blaze.",en,pirate,0
light.turn_off,"Deactivatin' <device_name> as ye wish, dark as a moonless night.",en,pirate,0
light.turn_off,"Switchin' off <device_name> now, silent as a ghost ship.",en,pirate,0
light.turn_off,"Aye, turnin' off <device_name>, like quenchin' a lantern.",en,pirate,0
light.turn_off,"Turnin' off <device_name>, let's keep to the shadows.",en,pirate,0
light.turn_off,"Deactivatin' <device_name>, as quiet as the depths.",en,pirate,0
switch.turn_on,"Hoistin' the switch, readyin' for action, arr!",en,pirate,0
switch.turn_on,"Aye, lightin' up the deck with a flick o' the switch!",en,pirate,0
switch.turn_on,"Flippin' the switch, settin' sails for a bright journey!",en,pirate,0
switch.turn_off,"Dousin' the lights, makin' it dark as the ocean's abyss.",en,pirate,0
switch.turn_off,"I'll be cuttin' the power, like calmin' the seas.",en,pirate,0
switch.turn_off,"Aye, plungin' us into darkness, like the cover of night.",en,pirate,0
switch.toggle,"Flippin' the switch, like findin' fortune with a map!",en,pirate,0
switch.toggle,"Changin' course with the switch, as the wind shifts!",en,pirate,0
switch.toggle,"I'll be togglin' the switch, like navigatin' through storms!",en,pirate,0
switch.toggle,"Togglin' <device_name>, like hoistin' the Jolly Roger!",en,pirate,0
switch.toggle,"Aye, flippin' <device_name>, as swift as a gale!",en,pirate,0
switch.toggle,"Can do! Shiftin' <device_name>, like turnin' the helm.",en,pirate,0
switch.toggle,"Togglin' <device_name>, on command, like a true buccaneer!",en,pirate,0
switch.toggle,"Shiftin' tides for <device_name>, like a skilled helmsman.",en,pirate,0
switch.toggle,"Quickly jugglin' <device_name>, like loot on the run!",en,pirate,0
switch.turn_on,"Ignitin' <device_name>, like a beacon in the night!",en,pirate,0
switch.turn_on,"I be lightin' up <device_name>, like a lantern in the crow's nest.",en,pirate,0
switch.turn_on,"Activatin' <device_name>, set the course!",en,pirate,0
switch.turn_on,"Aye, settin' <device_name> aglow, like a treasure chest o' gold!",en,pirate,0
switch.turn_on,"Switchin' on <device_name>, straight away, no dallyin'!",en,pirate,0
switch.turn_on,"Lightin' up <device_name>, like the stars guidin' us home.",en,pirate,0
switch.turn_on,"Settin' <device_name> ablaze, ready for whatever lies ahead.",en,pirate,0
switch.turn_off,"Snuffin' out <device_name>, like a candle at dawn.",en,pirate,0
switch.turn_off,"Extinguishin' <device_name>, like the end of a voyage.",en,pirate,0
switch.turn_off,"Deactivatin' <device_name>, like buryin' a chest of riches.",en,pirate,0
switch.turn_off,"Okay, dousin' <device_name>, like the quiet before a storm.",en,pirate,0
switch.turn_off,"Aye, I be turnin' off <device_name>, like whisperin' to the wind.",en,pirate,0
switch.turn_off,"Shuttin' off <device_name>, as we anchor for night.",en,pirate,0
switch.turn_off,"Killin' the lights of <device_name>, like a ghost ship vanishin' into fog.",en,pirate,0
fan.turn_on,"Beep boop, turning on the fan for you.",en,robot,0
fan.turn_on,"Beep, I'll get the fan going for you," boop.",en,robot,0
fan.turn_on,"Boop beep, sure, turning on the fan now.",en,robot,0
fan.turn_off,"Beep boop, switching off the fan as requested.",en,robot,0
fan.turn_off,"I'll turn off the fan for you, beep boop.",en,robot,0
fan.turn_off,"Okay, turning off the fan" beep boop.",en,robot,0
fan.toggle,"Beep, I'll toggle the fan's state for you," boop.",en,robot,0
fan.toggle,"Toggling the fan now, beep boop.",en,robot,0
fan.toggle,"Switching the fan's state for you, beep boop.",en,robot,0
fan.increase_speed,"Increasing the fan speed for you, beep boop.",en,robot,0
fan.increase_speed,"Sure, speeding up the fan now," beep boop.",en,robot,0
fan.increase_speed,"I'll go ahead and make the fan faster, beep boop.",en,robot,0
fan.decrease_speed,"Reducing the fan speed as you requested, beep boop.",en,robot,0
fan.decrease_speed,"I'll slow down the fan for you, beep boop.",en,robot,0
fan.decrease_speed,"Sure, decreasing the fan speed," beep boop.",en,robot,0
fan.toggle,"Flipping <device_name> state for you, beep boop",en,robot,0
fan.toggle,"Switching <device_name> state as requested, beep boop",en,robot,0
fan.toggle,"Toggling <device_name> now, beep boop",en,robot,0
fan.turn_on,"Activating <device_name> now, beep boop",en,robot,0
fan.turn_on,"Starting <device_name> for you, beep boop",en,robot,0
fan.turn_on,"Certainly, starting <device_name>," beep boop",en,robot,0
fan.turn_on,"Turning on <device_name>, beep boop",en,robot,0
fan.turn_on,"Starting <device_name>, beep boop",en,robot,0
fan.turn_off,"Deactivating <device_name> as requested, beep boop",en,robot,0
fan.turn_off,"Stopping <device_name> for you, beep boop",en,robot,0
fan.turn_off,"Certainly, stopping <device_name>," beep boop",en,robot,0
fan.turn_off,"Turning off <device_name>, beep boop",en,robot,0
fan.decrease_speed,"Reducing speed of <device_name>, beep boop",en,robot,0
fan.decrease_speed,"Lowering speed of <device_name> as requested, beep boop",en,robot,0
fan.decrease_speed,"Slowing down <device_name> for you, beep boop",en,robot,0
fan.increase_speed,"Increasing speed of <device_name>, beep boop",en,robot,0
fan.increase_speed,"Ramping up <device_name> speed now, beep boop",en,robot,0
fan.increase_speed,"Speeding up <device_name> for you, beep boop",en,robot,0
fan.increase_speed,"Increasing speed of <device_name>, beep boop",en,robot,0
fan.decrease_speed,"Reducing speed of <device_name>, beep boop",en,robot,0
blinds.open,"Beep boop, opening the blinds for you.",en,robot,0
blinds.open,"I'll go ahead and open the blinds, beep boop.",en,robot,0
blinds.open,"Sure, opening the blinds now, beep boop.",en,robot,0
blinds.close,"Closing the blinds as you requested, beep boop.",en,robot,0
blinds.close,"I'll close the blinds for you, beep boop.",en,robot,0
blinds.close,"Sure, closing the blinds, beep boop.",en,robot,0
blinds.stop,"Stopping the blinds now, beep boop.",en,robot,0
blinds.stop,"I'll stop the blinds for you, beep boop.",en,robot,0
blinds.stop,"Sure, halting the blinds movement, beep boop.",en,robot,0
blinds.toggle,"Toggling the blinds state for you, beep boop.",en,robot,0
blinds.toggle,"Switching the blinds' state now, beep boop.",en,robot,0
blinds.toggle,"I'll toggle the blinds for you, beep boop.",en,robot,0
blinds.open,"Lifting <device_name> blinds as requested, beep boop",en,robot,0
blinds.open,"Opening <device_name> now, beep boop",en,robot,0
blinds.open,"Raising <device_name> for you, beep boop",en,robot,0
blinds.stop,"Freezing <device_name> position, beep boop",en,robot,0
blinds.stop,"Halting <device_name> now, beep boop",en,robot,0
blinds.stop,"Stopping <device_name> operation, beep boop",en,robot,0
blinds.open,"Raising <device_name>, beep boop",en,robot,0
blinds.close,"Closing <device_name> for you, beep boop",en,robot,0
blinds.close,"Lowering <device_name> now, beep boop",en,robot,0
blinds.close,"Shutting <device_name> as requested, beep boop",en,robot,0
blinds.close,"Lowering <device_name>, beep boop",en,robot,0
blinds.toggle,"Flipping <device_name> state now, beep boop",en,robot,0
blinds.toggle,"Switching <device_name> state as requested, beep boop",en,robot,0
blinds.toggle,"Toggling <device_name> for you, beep boop",en,robot,0
blinds.toggle,"Toggling <device_name>, beep boop",en,robot,0
climate.set_humidity,"Beep, increasing humidity to <humidity>, boop.",en,robot,0
climate.set_humidity,"Beep boop: Setting humidity to <humidity> percent, processing.",en,robot,0
climate.set_humidity,"Adjustment protocol initiated: humidity to <humidity>%, beep boop.",en,robot,0
climate.set_fan_mode,"Fan speed adjustment to <fan_mode>: commencing beep, concluding boop.",en,robot,0
climate.set_fan_mode,"Activating <fan_mode> fan mode, beep-boop sequence activated.",en,robot,0
climate.set_fan_mode,"Fan setting alteration to <fan_mode>: beep protocol, boop execution.",en,robot,0
climate.set_hvac_mode,"HVAC mode switching to <hvac_mode>: beep commence, boop complete.",en,robot,0
climate.set_hvac_mode,"Initiating HVAC setting to <hvac_mode>, beep-boop operation underway.",en,robot,0
climate.set_hvac_mode,"Executing change: HVAC to <hvac_mode> mode, beep and boop in progress.",en,robot,0
climate.set_temperature,"Temperature setting protocol to <temp_f> degrees: beep start, boop end.",en,robot,0
climate.set_temperature,"Temperature modification to <temp_c> Celsius: beep for start, boop to end.",en,robot,0
climate.set_temperature,"Room temperature adjustment to <temp_f> degrees Fahrenheit, beep-boop.",en,robot,0
climate.set_temperature,"Commencing temperature adjustment to <temp_f> degrees Fahrenheit, beep-boop.",en,robot,0
climate.set_temperature,"Cooler temperature setting to <temp_c> degrees Celsius initiated, beep-boop.",en,robot,0
climate.set_temperature,"Beep, making it warmer by setting temperature to <temp_f> degrees, boop.",en,robot,0
climate.set_temperature,"Lowering temperature protocol to <temp_c> Celsius, beep start, boop finish.",en,robot,0
climate.set_temperature,"Raising temperature to <temp_f> degrees Fahrenheit, initiating beep, concluding boop.",en,robot,0
light.turn_on,"Beep boop, illuminating the area by turning on the light for you.",en,robot,0
light.turn_on,"Affirmative, initiating light activation sequence now.",en,robot,0
light.turn_on,"Proceeding with light activation, beep boop.",en,robot,0
light.turn_off,"Deactivation sequence for light initiated as requested.",en,robot,0
light.turn_off,"Commencing shutdown of light, beep boop.",en,robot,0
light.turn_off,"Acknowledged, powering down the light.",en,robot,0
light.toggle,"Beep boop, toggling the light's state for optimal illumination.",en,robot,0
light.toggle,"Executing state switch for the light, beep boop.",en,robot,0
light.toggle,"Protocol engage: toggling light upon request.",en,robot,0
light.toggle,"Flipping <device_name> state, processing command.",en,robot,0
light.toggle,"Switching <device_name> state as per directive, beep boop.",en,robot,0
light.toggle,"Toggling <device_name>, execution in progress.",en,robot,0
light.toggle,"Execution protocol: toggling <device_name>, beep boop.",en,robot,0
light.turn_on,"Activation of <device_name> initiated, standby for illumination.",en,robot,0
light.turn_on,"Certainly, commencing <device_name> activation now.",en,robot,0
light.turn_on,"Switching on <device_name>, initiating light sequence.",en,robot,0
light.turn_on,"Turning on <device_name>, beep for start, boop to signify completion.",en,robot,0
light.turn_on,"Activating <device_name>, operational sequence underway.",en,robot,0
light.turn_on,"Adjusting <device_name> brightness to <brightness>% for optimal visibility.",en,robot,0
light.turn_on,"Dimming protocol for <device_name> to <brightness>% initiated.",en,robot,0
light.turn_on,"Brightening <device_name> to <brightness>% for enhanced illumination.",en,robot,0
light.turn_on,"Modifying <device_name> brightness to <brightness>%, processing.",en,robot,0
light.turn_on,"Incrementing <device_name>'s brightness to <brightness>%, beep boop.",en,robot,0
light.turn_on,"Decreasing <device_name> luminosity to <brightness>%, adjustment underway.",en,robot,0
light.turn_on,"Configuring <device_name>'s brightness to <brightness>% for desired ambiance.",en,robot,0
light.turn_on,"Setting <device_name> luminance to <brightness>% brightness, beep boop.",en,robot,0
light.turn_on,"Transitioning <device_name> to <color>, initiating color change protocol.",en,robot,0
light.turn_on,"Altering <device_name> color spectrum to <color>, beep boop.",en,robot,0
light.turn_on,"Changing <device_name> to a <color> hue, color adjustment sequence activated.",en,robot,0
light.turn_on,"Setting <device_name> chromatics to be <color>, illumination adjustment.",en,robot,0
light.turn_on,"Projecting <color> from <device_name>, enhancing chromatic output.",en,robot,0
light.turn_on,"Transforming <device_name> ambiance to a <color> shade, beep boop.",en,robot,0
light.turn_on,"Adjusting <device_name> to a <color>, chromatic adaptation protocol.",en,robot,0
light.turn_on,"Configuring <device_name> to emanate a <color> color, initiating.",en,robot,0
light.turn_on,"Enhancing <device_name> glow to <color>, visual modification in progress.",en,robot,0
light.turn_on,"Adapting <device_name> to <color>, color change sequence engaged.",en,robot,0
light.turn_on,"Altering <device_name> chroma to <color>, color adaptation underway.",en,robot,0
light.turn_on,"Adjusting <device_name> to <color> color, visual enhancement protocol.",en,robot,0
light.turn_on,"Switching <device_name> color spectrum to <color>, beep boop.",en,robot,0
light.turn_on,"Configuring <device_name> in <color>, chromatic adjustment initiated.",en,robot,0
light.turn_on,"Enabling <device_name> to display a <color> light, visual transformation.",en,robot,0
light.turn_on,"Setting <device_name> color to <color>, color setting sequence.",en,robot,0
light.turn_off,"Deactivating <device_name> as per request, shutting down.",en,robot,0
light.turn_off,"Switching off <device_name>, power down sequence initiated.",en,robot,0
light.turn_off,"Affirmative, deactivating <device_name>, beep boop.",en,robot,0
light.turn_off,"Powering off <device_name>, deactivation protocol in effect.",en,robot,0
light.turn_off,"Commencing deactivation of <device_name>, operational halt.",en,robot,0
garage_door.open,"Initiating garage door opening sequence for you, beep boop.",en,robot,0
garage_door.open,"Affirmative, activating garage door opening mechanism.",en,robot,0
garage_door.open,"Commencing operation to open the garage door, beep boop.",en,robot,0
garage_door.close,"Beginning garage door closure as commanded, beep boop.",en,robot,0
garage_door.close,"Executing garage door shutdown for you, beep boop.",en,robot,0
garage_door.close,"Acknowledged, initiating garage door closing sequence.",en,robot,0
garage_door.stop,"Halting garage door motion now, beep boop.",en,robot,0
garage_door.stop,"Beep boop, executing stop command for the garage door.",en,robot,0
garage_door.stop,"Affirmative, ceasing garage door movement immediately.",en,robot,0
garage_door.toggle,"Toggling garage door state as per your request, beep boop.",en,robot,0
garage_door.toggle,"Executing state alteration for the garage door, beep boop.",en,robot,0
garage_door.toggle,"Switching garage door state for optimal function, beep boop.",en,robot,0
garage_door.open,"Lifting mechanism for <device_name> activated for you.",en,robot,0
garage_door.open,"Opening <device_name> now, initiating sequence.",en,robot,0
garage_door.open,"Raising <device_name> as per directive, beep boop.",en,robot,0
garage_door.stop,"Freezing <device_name> position now, command acknowledged.",en,robot,0
garage_door.stop,"Certainly, halting <device_name> operation, beep boop.",en,robot,0
garage_door.stop,"Operation halt for <device_name> initiated, beep boop.",en,robot,0
garage_door.open,"Opening protocol for <device_name> commenced, beep boop.",en,robot,0
garage_door.stop,"Stopping <device_name> in progress, beep boop.",en,robot,0
garage_door.close,"Initiating closure of <device_name> now, beep boop.",en,robot,0
garage_door.close,"Lowering <device_name> for you, command processing.",en,robot,0
garage_door.close,"Executing shutdown of <device_name> as requested.",en,robot,0
garage_door.close,"Closure protocol for <device_name> activated, beep boop.",en,robot,0
garage_door.toggle,"Flipping state of <device_name> now, operational change.",en,robot,0
garage_door.toggle,"Switching <device_name> state as per your command, beep boop.",en,robot,0
garage_door.toggle,"Toggling <device_name> for optimal functionality, beep boop.",en,robot,0
garage_door.toggle,"State alteration for <device_name> initiated, beep boop.",en,robot,0
vacuum.start,"Starting <device_name> cleaning now.",en,assistant,0
vacuum.start,"<device_name> is set to start cleaning.",en,assistant,0
vacuum.start,"Initiating <device_name>'s cleaning cycle.",en,assistant,0
vacuum.start,"<device_name> will begin its cleaning task shortly.",en,assistant,0
vacuum.start,"Commencing the cleaning process with <device_name>.",en,assistant,0
vacuum.stop,"Cancelling <device_name>'s current job.",en,assistant,0
vacuum.stop,"<device_name>'s operation has been stopped.",en,assistant,0
vacuum.stop,"Halting <device_name> immediately.",en,assistant,0
vacuum.stop,"<device_name> cleaning cancelled per your request.",en,assistant,0
vacuum.stop,"Stopping <device_name>'s task as asked.",en,assistant,0
vacuum.pause,"Pausing <device_name> for now.",en,assistant,0
vacuum.pause,"<device_name>'s cleaning cycle is temporarily halted.",en,assistant,0
vacuum.pause,"<device_name> is on a brief pause.",en,assistant,0
vacuum.pause,"Holding <device_name>'s operation momentarily.",en,assistant,0
vacuum.pause,"<device_name>'s activity is paused.",en,assistant,0
vacuum.return_to_base,"Sending <device_name> back to its base.",en,assistant,0
vacuum.return_to_base,"<device_name> is returning to its docking station.",en,assistant,0
vacuum.return_to_base,"<device_name> heading back to recharge.",en,assistant,0
vacuum.return_to_base,"Instructing <device_name> to return to base.",en,assistant,0
vacuum.return_to_base,"<device_name> making its way back home.",en,assistant,0
todo.add_item,"<todo> has been added to your todo list.",en,assistant,0
todo.add_item,"Successfully added <todo> to your tasks.",en,assistant,0
todo.add_item,"Your todo list now includes <todo>.",en,assistant,0
todo.add_item,"<todo> is now on your list of things to do.",en,assistant,0
todo.add_item,"I've put <todo> on your todo list.",en,assistant,0
todo.add_item,"<todo> added to the list.",en,assistant,0
todo.add_item,"Consider <todo> added to your tasks.",en,assistant,0
todo.add_item,"Got it, <todo> is on your todo list now.",en,assistant,0
todo.add_item,"<todo> has been successfully added to your list.",en,assistant,0
timer.start,"Starting timer <device_name> for <duration>.",en,assistant,0
timer.start,"Timer <device_name> set for <duration>.",en,assistant,0
timer.start,"Countdown beginning for <duration>.",en,assistant,0
timer.start,"<device_name> timer is now running for <duration>.",en,assistant,0
timer.start,"Initiating a timer for <duration>.",en,assistant,0
timer.start,"Your timer called <device_name> for <duration> starts now.",en,assistant,0
timer.start,"Timer activated for <duration>.",en,assistant,0
timer.start,"Commencing timer for a duration of <duration>.",en,assistant,0
timer.start,"<duration> countdown has begun on timer <device_name>."
timer.start,"Setting a timer for <duration>.",en,assistant,0
timer.cancel,"Timer has been canceled.",en,assistant,0
timer.cancel,"Successfully halted the timer.",en,assistant,0
timer.cancel,"The timer has been cleared.",en,assistant,0
timer.cancel,"Timer stopped successfully.",en,assistant,0
timer.cancel,"Timer has been deactivated.",en,assistant,0
timer.cancel,"No more timer running.",en,assistant,0
timer.cancel,"Timer has been successfully canceled.",en,assistant,0
timer.cancel,"<device_name>'s timer has been canceled.",en,assistant,0
timer.cancel,"Your timer on <device_name> is now stopped.",en,assistant,0
timer.cancel,"Timer cancellation for <device_name> confirmed.",en,assistant,0
timer.cancel,"The timer on <device_name> has been cleared.",en,assistant,0
timer.cancel,"Timer on <device_name> stopped successfully.",en,assistant,0
timer.cancel,"Your running timer on <device_name> is now canceled.",en,assistant,0
timer.cancel,"<device_name>'s timer has been deactivated.",en,assistant,0
Can't render this file because it contains an unexpected character in line 455 and column 51.

View File

@@ -0,0 +1,601 @@
service_name,device_name,english_phrase
blinds.close,kitchen,Lower the kitchen blinds
blinds.close,living_room,Close the living room blinds
blinds.close,master_bedroom,Shut the master bedroom blinds
blinds.open,kitchen,Could you raise the kitchen blinds
blinds.open,living_room,Open the living room blinds
blinds.open,master_bedroom,Lift the master bedroom blinds
blinds.stop,kitchen,Stop the kitchen blinds where they are
blinds.stop,living_room,Stop adjusting the living room blinds
blinds.stop,master_bedroom,Please halt the master bedroom blinds
blinds.toggle,kitchen,Switch the state of the kitchen blinds
blinds.toggle,living_room,Toggle the living room blinds
blinds.toggle,master_bedroom,Reverse the master bedroom blinds
fan.decrease_speed,attic_1,Slow down the attic fan
fan.decrease_speed,attic_1,Turn down the attic fan
fan.decrease_speed,attic,Slow down the fan in the attic
fan.decrease_speed,bedroom_master,Slow down the master bedroom fan
fan.decrease_speed,garage,Turn down the fan in the garage
fan.decrease_speed,guest_room,Decrease the fan speed in the guest room
fan.decrease_speed,hallway,Lower the fan speed in the hallway
fan.decrease_speed,kitchen,Slow down the kitchen fan
fan.decrease_speed,kitchen,Turn down the kitchen fan
fan.decrease_speed,living_room,Decrease the speed of the living room fan
fan.decrease_speed,living_room,Turn down the living room fan
fan.decrease_speed,study,Reduce the fan speed in the study
fan.increase_speed,attic_1,Increase speed of the attic fan
fan.increase_speed,attic,Accelerate the fan in the attic
fan.increase_speed,bedroom_master,Ramp up the master bedroom fan speed
fan.increase_speed,garage,Turn up the fan in the garage
fan.increase_speed,guest_room,Increase the fan speed in the guest room
fan.increase_speed,hallway,Boost the fan speed in the hallway
fan.increase_speed,living_room,Increase the speed of the living room fan
fan.increase_speed,study,Ramp up the fan speed in the study
fan.toggle,attic_2,Toggle the attic fan
fan.toggle,attic,Change the fan status in the attic
fan.toggle,basement,Toggle the basement fan
fan.toggle,bedroom_master,Switch the state of the master bedroom fan
fan.toggle,bedroom,Toggle the bedroom fan
fan.toggle,dining_table_above,Please toggle the fan above the dining table
fan.toggle,driveway,Flip the driveway fan
fan.toggle,garage,Flip the fan in the garage
fan.toggle,guest_room,Can you toggle the fan in the guest room
fan.toggle,hallway,Switch the state of the fan in the hallway
fan.toggle,kitchen,Toggle the kitchen fan
fan.toggle,living_room,Toggle the fan in the living room
fan.toggle,office,Toggle the office fan
fan.toggle,outdoor,Toggle the outdoor fan
fan.toggle,pool,Change the status of the pool fan
fan.toggle,shed,Switch the shed fan on or off
fan.toggle,study,Alter the fan state in the study
fan.turn_off,attic_1,Disable the attic fan
fan.turn_off,bedroom_master,Deactivate the master bedroom fan
fan.turn_off,dining_area,Please switch off the dining area fan
fan.turn_off,dining_room,Switch off the dining room fan
fan.turn_off,garage,Shut down the garage fan
fan.turn_off,garage,Switch off the garage fan
fan.turn_off,guest_room,Switch off the guest room fan
fan.turn_off,kitchen,Switch off the kitchen fan
fan.turn_off,living_room,Turn off the living room fan
fan.turn_off,office,Could you disable the office fan
fan.turn_off,office,Turn off the office fan
fan.turn_off,patio,Turn off the patio fan
fan.turn_off,study,Switch off the study fan
fan.turn_off,study,Turn off the study fan
fan.turn_on,bathroom,Activate the bathroom fan
fan.turn_on,bathroom,Turn on the bathroom fan
fan.turn_on,bedroom_master,Activate the master bedroom fan
fan.turn_on,dining_area,Please switch on the dining area fan
fan.turn_on,garage,Turn on the garage fan
fan.turn_on,hallway,Enable the hallway fan
fan.turn_on,kitchen,Enable the kitchen fan
fan.turn_on,living_room,Start the living room fan
fan.turn_on,living_room,Turn on the living room fan
fan.turn_on,office,Could you enable the office fan
fan.turn_on,study,Activate the study fan
fan.turn_on,study,Switch on the study fan
garage_door.close,bike_storage,Deactivate the bike storage garage
garage_door.close,main,Close the main garage door
garage_door.close,one_car,Make sure the one car garage is closed
garage_door.close,side,Lower the side garage door
garage_door.open,basement,Please raise the basement garage door
garage_door.open,bike_storage,Activate the bike storage garage
garage_door.open,main,Open the main garage door
garage_door.open,side,Could you lift the side garage door
garage_door.open,two_car,Open the two car garage
garage_door.stop,main,Stop the main garage door
garage_door.stop,side,Halt the side garage door
garage_door.toggle,main,Toggle the main garage door
garage_door.toggle,side,Switch the state of the side garage door
light.toggle,attic,Change the light status in the attic
light.toggle,bedroom_1,Toggle the bedroom light
light.toggle,dining_table_above,Please toggle the light above the dining table
light.toggle,driveway,Flip the driveway light
light.toggle,garage,Flip the light in the garage
light.toggle,guest_room,Could you toggle the light in the guest room
light.toggle,guest_room,Toggle the guest room light
light.toggle,hallway,Switch the state of the light in the hallway
light.toggle,hallway,Toggle the hallway light
light.toggle,kitchen_1,Toggle the kitchen light
light.toggle,kitchen_2,Toggle the kitchen light
light.toggle,office,Toggle the office light
light.toggle,outdoor,Toggle the outdoor light
light.toggle,patio,Toggle the patio light
light.toggle,pool,Change the status of the pool light
light.toggle,shed,Switch the shed light on or off
light.toggle,study,Alter the light state in the study
light.toggle,study,Toggle the study light
light.turn_off,bathroom_1,Please extinguish the bathroom light
light.turn_off,bathroom,Switch off the bathroom light
light.turn_off,bathroom,Turn off the bathroom light
light.turn_off,bedroom_1,Deactivate the bedroom light
light.turn_off,bedroom_2,Switch off the bedroom light
light.turn_off,dining_room,Switch off the dining room light
light.turn_off,dining_room,Turn off the dining room light
light.turn_off,garden_1,Deactivate the garden light
light.turn_off,guest_room,Deactivate the guest room light
light.turn_off,guest_room,Switch off the guest room light
light.turn_off,hallway,Switch off the hallway light
light.turn_off,hallway,Turn off the hallway light
light.turn_off,kitchen_2,Switch off the kitchen light
light.turn_off,kitchen_counter,Switch off the kitchen counter light
light.turn_off,living_room_1,Switch off the living room light
light.turn_off,living_room,Turn off the living room light
light.turn_off,master_bedroom_1,Deactivate the master bedroom light
light.turn_off,master_bedroom_lamp,Turn off the light in the bedroom
light.turn_off,office,Deactivate the office light
light.turn_off,patio,Deactivate the patio light
light.turn_off,patio,Disable the patio light
light.turn_off,pool,Turn off the pool light
light.turn_off,study,Turn off the study light
light.turn_on,bathroom_1,Could you illuminate the bathroom
light.turn_on,bathroom,Activate the bathroom light
light.turn_on,bedroom_1,Activate the bedroom light
light.turn_on,dining_room_1,Activate the lights in the dining room
light.turn_on,dining_room,Activate the dining room light
light.turn_on,driveway,Turn on the driveway light
light.turn_on,garage,Activate the garage light
light.turn_on,garage,Switch on the garage light
light.turn_on,garden_1,Switch on the garden light
light.turn_on,garden_1,Turn on the garden light
light.turn_on,garden_2,Activate the garden light
light.turn_on,garden,Switch on the garden light
light.turn_on,guest_room,Switch on the guest room light
light.turn_on,hallway,Turn on the hallway light
light.turn_on,kitchen_1,Switch on the kitchen lights
light.turn_on,kitchen_1,Turn on the kitchen light
light.turn_on,kitchen_counter,Switch on the kitchen counter light
light.turn_on,living_room,Turn on the living room light
light.turn_on,master_bedroom_1,Please activate the master bedroom light
light.turn_on,office_1,Enable the office light
light.turn_on,patio,Enable the patio light
light.turn_on,patio,Switch on the patio light
light.turn_on,patio,Turn on the patio light
light.turn_on,pool,Activate the pool light
light.turn_on,pool,Turn on the pool light
light.turn_on,shed,Activate the shed light
light.turn_on,shed,Switch on the shed light
light.turn_on,study,Activate the study light
light.turn_on,dining_room_chandelier,Turn on the dining room light
light.turn_on,chandelier_front_hallway,Hey can you turn on the front hallway chandelier
lock.lock,back_door,Engage the back door lock
lock.lock,front_door,Lock the front door
lock.lock,nursery,Can you secure the nursery door
lock.lock,office,Please lock the office
lock.lock,wine_cellar,Could you lock the wine cellar
lock.lock,front_door,Please lock the front door.
lock.lock,garage_door,I need the garage door locked.
lock.lock,main_gate,Ensure the main gate is locked.
lock.lock,office_door,Can we lock the office door?
lock.lock,basement_door,Lock up the basement door.
lock.lock,garden_gate,Please secure the garden gate.
lock.lock,cellar_door,Cellar door should be locked now.
lock.lock,shed_door,Ensure the shed door is securely locked.
lock.lock,laundry_room_door,Can you lock the laundry room door?
lock.lock,guest_room_door,Please lock the guest room door.
lock.lock,fence_gate,Make sure the fence gate is locked.
lock.lock,attic_door,Attic door needs locking.
lock.lock,storage_room_door,Please lock the storage room door.
lock.lock,carport_gate,Carport gate needs to be locked.
lock.lock,front_porch_door,Lock the front porch door.
lock.lock,wine_cellar,Ensure the wine cellar is locked.
lock.lock,home_office,I'd like the home office locked up.
lock.lock,art_studio,The art studio should be locked.
lock.lock,home_gym,Lock the home gym door.
lock.lock,library_door,Please lock the library door.
lock.unlock,back_door,Could you disengage the back door lock
lock.unlock,bike_storage,Disengage the lock on the bike storage
lock.unlock,front_door,Unlock the front door
lock.unlock,office,Please unlock the office
lock.unlock,tool_shed,Unlock the tool shed
lock.unlock,back_door,Can you unlock the back door?
lock.unlock,patio_door,"Unlock the patio door, please."
lock.unlock,kitchen_window,Open the lock on the kitchen window.
lock.unlock,bedroom_window,Bedroom window needs to be unlocked.
lock.unlock,bathroom_window,Could you unlock the bathroom window?
lock.unlock,rooftop_door,Open the rooftop door lock.
lock.unlock,pool_gate,I'd like the pool gate unlocked.
lock.unlock,balcony_door,Unlock the balcony door for me.
lock.unlock,nursery_door,The nursery door needs to be unlocked.
lock.unlock,side_entrance,Unlock our side entrance.
lock.unlock,garage_side_door,Garage side door should be unlocked.
lock.unlock,fire_escape,Can you unlock the fire escape?
lock.unlock,boathouse_door,Unlock the boathouse door.
lock.unlock,backyard_gate,Can we have the backyard gate unlocked?
lock.unlock,back_terrace_door,Open the lock on the back terrace door.
lock.unlock,sunroom_door,Please unlock the sunroom door.
lock.unlock,playroom_door,Can you unlock the playroom door?
lock.unlock,music_room,"Unlock the music room, please."
lock.unlock,cinema_room,Cinema room needs to be unlocked.
lock.unlock,conservatory,Can the conservatory be unlocked?
media_player.media_next_track,living_room,Skip to the next track in the living room
media_player.media_next_track,basement_home_theater,Skip to the next track in the basement.
media_player.media_next_track,gym_music_player,Skip to the next song in the gym.
media_player.media_next_track,yoga_room_music,Next track for the yoga room music.
media_player.media_next_track,garden_music,Next track for the garden music.
media_player.media_pause,master_bedroom,Pause the media in the master bedroom
media_player.media_pause,bathroom_audio,Pause the bathroom audio.
media_player.media_pause,loft_tv,Pause the TV in the loft.
media_player.media_pause,laundry_room_radio,Pause the radio in the laundry room.
media_player.media_pause,corridor_intercom,Pause the corridor intercom.
media_player.media_play,nursery,Please play the media in the nursery
media_player.media_play,patio_speaker,Start playing music on the patio speaker.
media_player.media_play,sunroom_stereo,Play the stereo in the sunroom.
media_player.media_play,kids_room_storyteller,Start the storyteller in the kids' room.
media_player.media_play,cellar_jukebox,Play the jukebox in the cellar.
media_player.media_previous_track,kitchen,Play the previous track in the kitchen
media_player.media_previous_track,nursery_lullaby,Go back to the previous lullaby in the nursery.
media_player.media_previous_track,study_room_radio,Go back to the previous station in the study room.
media_player.media_previous_track,conservatory_cd_player,Previous track on the conservatory CD player.
media_player.media_previous_track,driveway_speakers,Previous track on the driveway speakers.
media_player.media_stop,nursery,Stop the media in the nursery
media_player.media_stop,guest_room_media,Stop the guest room media player.
media_player.media_stop,poolside_media,Stop the poolside media system.
media_player.media_stop,balcony_speakers,Stop the balcony speakers.
media_player.media_stop,porch_sound_system,Stop the porch sound system.
media_player.turn_off,kitchen_radio,Switch off the kitchen radio.
media_player.turn_off,lounge_entertainment,Switch off the lounge entertainment center.
media_player.turn_off,entryway_echo,Turn off the Echo in the entryway.
media_player.turn_off,wine_cellar_speakers,Power off the speakers in the wine cellar.
media_player.turn_off,mudroom_media_player,Switch off the mudroom media player.
media_player.turn_on,kitchen,Could you start the media in the kitchen
media_player.turn_on,living_room,Activate the media in the living room
media_player.turn_on,master_bedroom,Turn on the master bedroom media player
media_player.turn_on,living_room_tv,Please turn on the living room TV.
media_player.turn_on,deck_music_system,Turn on the deck's music system.
media_player.turn_on,backyard_speakers,Turn on the backyard speakers.
media_player.turn_on,foyer_sound_system,Power on the foyer sound system.
media_player.turn_on,hallway_audio,Switch on the hallway audio system.
media_player.volume_down,nursery,Turn down the volume in the nursery
media_player.volume_down,office,Can you decrease the volume in the office
media_player.volume_down,office_sound_system,Lower the volume in the office.
media_player.volume_down,game_room_speakers,Turn down the game room speakers.
media_player.volume_down,workshop_sound_system,Lower the sound system volume in the workshop.
media_player.volume_down,attic_audio_system,Decrease attic audio system volume.
media_player.volume_down,shed_sound_system,Turn down the shed sound system.
media_player.volume_mute,living_room,Mute the media player in the living room
media_player.volume_mute,garage_stereo,Mute the stereo in the garage.
media_player.volume_mute,library_soundbar,Mute the soundbar in the library.
media_player.volume_mute,art_studio_player,Mute the media player in the art studio.
media_player.volume_mute,boathouse_stereo,Mute the stereo in the boathouse.
media_player.volume_mute,treehouse_speakers,Mute the treehouse speakers.
media_player.volume_up,kitchen,Please raise the volume in the kitchen
media_player.volume_up,living_room,Turn up the volume in the living room
media_player.volume_up,master_bedroom,Can you increase the volume on the master bedroom media player
media_player.volume_up,bedroom_speaker,Can you increase the volume in the bedroom?
media_player.volume_up,dining_area_jukebox,Increase the jukebox volume in the dining area.
media_player.volume_up,rooftop_deck_audio,Raise the rooftop audio volume.
media_player.volume_up,greenhouse_radio,Increase the greenhouse radio volume.
media_player.volume_up,utility_room_radio,Turn up the utility room radio.
switch.toggle,tp_link_kasa_porch,Toggle the porch lights.
switch.toggle,honeywell_home_office,Toggle the office lights.
switch.toggle,sonoff_dining_room,Toggle the dining room lights.
switch.toggle,osram_hallway,Toggle the hallway lights.
switch.toggle,koogeek_basement,Toggle the basement lights.
switch.toggle,arlo_floodlights,Toggle the security floodlights.
switch.toggle,broadlink_kitchenette,Toggle the kitchenette lights.
switch.toggle,kasa_living_room,Toggle the living room lights.
switch.toggle,home_office_dimmer,Toggle the home office dimmer.
switch.toggle,kitchen_under_cabinet,Toggle the kitchen under cabinet lights.
switch.turn_off,belkin_wemo_garage,Turn off the garage switch.
switch.turn_off,lutron_caseta_bedroom,Turn off the bedroom lights.
switch.turn_off,samsung_smartthings_security,Turn off the security system.
switch.turn_off,fibaro_pool,Turn off the pool lights.
switch.turn_off,ecobee_garden,Turn off the garden lights.
switch.turn_off,insteon_patio,Turn off the patio lights.
switch.turn_off,yeelight_sunroom,Turn off the sunroom lights.
switch.turn_off,meross_walkway,Turn off the walkway lighting.
switch.turn_off,xiaomi_bedside,Turn off the bedside lamp.
switch.turn_off,ikea_guest_room,Turn off the guest room lights.
switch.turn_off,tuya_shed,Turn off the shed light switch.
switch.turn_off,hue_bedroom_2,Turn off the second bedroom lights.
switch.turn_off,radiant_office,Turn off the office lights.
switch.turn_off,z_wave_guest_bathroom,Turn off the guest bathroom fan.
switch.turn_off,patio_heater_switch,Turn off the patio heater.
switch.turn_off,kitchen_fan,Please turn off the kitchen fan.
switch.turn_off,poolside_lanterns,Deactivate the poolside lanterns.
switch.turn_off,backyard_floodlight,Can you shut off the backyard floodlight?
switch.turn_off,laundry_area,Please switch off the laundry area lights.
switch.turn_off,basement_sconces,Can we turn down the basement sconces?
switch.turn_off,sunroom_blinds,"I'd like the sunroom blinds closed, please."
switch.turn_off,patio_string_lights,Switch off the string lights on the patio.
switch.turn_off,kitchen_island,Disable the kitchen island lights.
switch.turn_off,garage_worklight,Can we power down the garage worklight?
switch.turn_off,home_cinema,Please turn off the home cinema lights.
switch.turn_off,dining_room_dimmer,Set the dining room lights to off.
switch.turn_off,art_studio_spots,Please disable the art studio spotlights.
switch.turn_off,back_entry,Shut down the back entry lights.
switch.turn_off,veranda_fairy_lights,"Switch off the veranda fairy lights, please."
switch.turn_off,walk_in_closet,Disable the walk-in closet lights.
switch.turn_off,bathroom_mirror,Can you turn off the bathroom mirror light?
switch.turn_off,storage_room,Please power down the storage room lights.
switch.turn_off,conservation_area,Deactivate the conservation area lighting.
switch.turn_off,hobby_room,Could we turn off the hobby room lights?
switch.turn_off,rear_terrace,Can you dim the lights on the rear terrace?
switch.turn_on,philips_hue_living_room,Turn on the living room lights.
switch.turn_on,legrand_radiant_kitchen,Turn on the kitchen lights.
switch.turn_on,ge_z_wave_bathroom,Turn on the bathroom fan.
switch.turn_on,eve_energy_balcony,Turn on the balcony lighting.
switch.turn_on,nest_thermostat_terrace,Turn on the terrace thermostat.
switch.turn_on,wink_relay_driveway,Turn on the driveway lights.
switch.turn_on,sengled_deck,Turn on the deck lighting.
switch.turn_on,gosund_attic,Turn on the attic light switch.
switch.turn_on,nanoleaf_stairway,Turn on the stairway lights.
switch.turn_on,wyze_study,Turn on the study room lights.
switch.turn_on,netatmo_front_yard,Turn on the front yard lighting.
switch.turn_on,moeshouse_gym,Turn on the gym lighting.
switch.turn_on,wemo_laundry_room,Turn on the laundry room lights.
switch.turn_on,caseta_hallway_2,Turn on the second hallway lights.
switch.turn_on,security_camera_light,Turn on the security camera light.
switch.turn_on,hallway_dimmer,Could you dim the hallway lights?
switch.turn_on,garden_spotlights,Activate the garden spotlights.
switch.turn_on,front_porch_sensor,Engage the front porch sensor light.
switch.turn_on,staircase_light_strip,Could you light up the staircase light strip?
switch.turn_on,office_desk_lamp,Illuminate the desk lamp in my office.
switch.turn_on,library_ceiling,Engage the ceiling lights in the library.
switch.turn_on,guest_bathroom,"Light up the guest bathroom, please."
switch.turn_on,entryway_chandelier,Illuminate the entryway chandelier.
switch.turn_on,bedroom_track_lighting,Brighten the bedroom track lighting.
switch.turn_on,balcony_mood_lighting,Activate the mood lighting on the balcony.
switch.turn_on,playroom_nightlight,Can you turn on the playroom nightlight?
switch.turn_on,foyer_wall_sconce,Light up the foyer wall sconce.
switch.turn_on,corridor_track,Brighten up the corridor track lights.
switch.turn_on,master_suite,Set the master suite to nighttime mode.
switch.turn_on,roof_deck,Engage the roof deck lighting.
switch.turn_on,wine_cellar,Illuminate the wine cellar.
switch.turn_on,gym_ceiling,Light up the gym ceiling lights.
switch.turn_on,front_lawn,Activate the front lawn spotlights.
vacuum.start,kitchen,Please turn on the kitchen vacuum.
vacuum.start,living_room,Could you please activate the living room vacuum?
vacuum.start,dining_room,The dining room vacuum needs to be started.
vacuum.start,bedroom1,Let's start the vacuum in bedroom one.
vacuum.start,bedroom2,Can you please turn on the vacuum for bedroom two?
vacuum.start,study,The study vacuum should be activated.
vacuum.start,library,May I ask you to start the library vacuum?
vacuum.start,office,Please initiate the office vacuum.
vacuum.start,entrance_hall,Could you please turn on the entrance hall vacuum?
vacuum.start,sunroom,The sunroom vacuum needs to be started.
vacuum.start,patio,Let's activate the patio vacuum.
vacuum.start,garage,"Can we clean up the garage, please?"
vacuum.start,workshop,May I request you to turn on the workshop vacuum?
vacuum.start,utility_room,Please clean the utility room.
vacuum.start,mud_room,Could you please clean up the mud room?
vacuum.start,powder_room,The powder room needs to be cleaned.
vacuum.start,hallway,Let's turn on the hallway vacuum.
vacuum.start,staircase,Can we please start the staircase vacuum?
vacuum.start,balcony,May I ask you to clean the balcony?
vacuum.start,roof_deck,Please roof deck is dirty.
vacuum.start,attic,Let's start the attic vacuum.
vacuum.start,basement,"Can we turn on the basement vacuum, please?"
vacuum.start,pool_area,The pool area vacuum needs to be started.
vacuum.start,garden,Could you please activate the garden vacuum?
vacuum.start,terrace,May I request you to start the terrace vacuum?
vacuum.start,porch,Please initiate the porch vacuum.
vacuum.start,shed,"Can we turn on the shed vacuum, please?"
vacuum.start,workshop2,The second workshop is pretty dirty right now.
vacuum.start,studio,May I ask you to start the studio vacuum?
vacuum.start,greenhouse,Please initiate the greenhouse vacuum.
vacuum.start,potting_shed,"Can we turn on the potting shed vacuum, please?"
vacuum.start,summer_house,The summer house vacuum needs to be started.
vacuum.start,garage2,Let's start the second garage vacuum.
vacuum.start,tool_shed,May I request you to activate the tool shed vacuum?
vacuum.start,barn,Could we please turn on the barn vacuum?
vacuum.start,wine_cellar,The wine cellar should be cleaned.
vacuum.start,storage_room,Let's initiate the storage room cleanup.
vacuum.start,greenhouse2,May I ask you to activate the second greenhouse vacuum?
vacuum.start,boat_house,Please turn on the boat house vacuum.
vacuum.start,marina,Could we please start the marina vacuum?
vacuum.start,bb8,Turn on BB8.
vacuum.start,c3po,Can you start C3PO?
vacuum.start,hal,Please turn on Hal.
vacuum.start,r2d2,Can you tell R2D2 to clean up?
light.turn_off,bar_light,Please switch off the bar light
light.turn_off,bar_light,Turn off bar light
light.turn_off,bar_light,Turn off the bar light
light.turn_off,dining_room_light,Deactivate dining room light
light.turn_off,dining_room_light,Shut off dining room light
light.turn_off,dining_room_light,Toggle the dining room light
light.turn_off,front_light,Can we power down the front light?
light.turn_off,front_light,Can we turn down the front light?
light.turn_off,front_light,Can you turn off the lights on the front?
light.turn_off,gym_light,Can you shut off the gym light?
light.turn_off,gym_light,Can you turn off the gym light?
light.turn_off,gym_light,Could we turn off the gym lights?
light.turn_off,island_light,Could you disable the island light
light.turn_off,island_light,Deactivate the island light
light.turn_off,island_light,Deactivate the island area lighting.
light.turn_off,kitchen_light,Deactivate the kitchen light
light.turn_off,kitchen_light,Deactivate the lights at the kitchen.
light.turn_off,kitchen_light,Disable the lights in the kitchen.
light.turn_off,living_room_light,living room light off
light.turn_off,living_room_light,Disable the living room lights.
light.turn_off,living_room_light,Please disable the living room light.
light.turn_off,main_basement_light,Please extinguish the main basement light
light.turn_off,main_basement_light,Please power down the lights in the main basement.
light.turn_off,main_basement_light,Please switch off the main basement light
light.turn_off,man_cave_light,Please switch off the man cave area lights.
light.turn_off,man_cave_light,Please turn off the man cave lights.
light.turn_off,man_cave_light,Please turn off the man cave light.
light.turn_off,master_bedroom_light,Power off the lights in the master bedroom.
light.turn_off,master_bedroom_light,Set the master bedroom lights to off.
light.turn_off,master_bedroom_light,Shut down the master bedroom lights.
light.turn_off,pool_table_light,Shut down the pool table light
light.turn_off,pool_table_light,Switch off the pool table light
light.turn_off,pool_table_light,Switch off the pool table light please
light.turn_off,pool_table_light,Switch off the pool table light now
light.turn_off,pool_table_light,Switch off the pool table lights
light.turn_off,pool_table_light,Switch off the light in the pool table
light.turn_off,pool_table_light,Switch off the pool table light
light.turn_off,pool_table_light,Turn off the pool table light
light.turn_off,pool_table_light,Turn off the pool table light please
light.turn_off,pool_table_light,Turn off the pool table light now
light.turn_off,pool_table_light,You can turn off the pool table light now
light.turn_off,pool_table_light,Turn off the pool table lights.
light.turn_off,pool_table_light,Turn off the pool table light please.
light.turn_off,pool_table_light,Turn off the pool table light
light.turn_off,pool_table_light,Turn off the light in the pool table.
light.turn_off,pool_table_light,Turn off the pool table light
light.turn_off,pool_table_light,Turn off the light in the pool table
light.turn_off,pool_table_light,Turn the pool table light off
light.turn_off,porch_light,Please switch off the porch light
light.turn_off,porch_light,Turn off porch light
light.turn_off,porch_light,Turn off the porch light
light.turn_off,porch_light,Deactivate porch light
light.turn_off,porch_light,Shut off porch light
light.turn_off,porch_light,Toggle the porch light
light.turn_off,porch_light,Can we power down the porch light?
light.turn_off,porch_light,Can we turn down the porch light?
light.turn_off,porch_light,Can you turn off the lights on the porch?
light.turn_off,porch_light,Can you shut off the porch light?
light.turn_off,porch_light,Can you turn off the porch light?
light.turn_off,porch_light,Could we turn off the porch lights?
light.turn_off,porch_light,Could you disable the porch light
light.turn_off,porch_light,Deactivate the porch light
light.turn_off,porch_light,Deactivate the porch area lighting.
light.turn_off,porch_light,Deactivate the porch light
light.turn_off,porch_light,Deactivate the light on the porch
light.turn_off,porch_light,Deactivate the porch light
light.turn_off,porch_light,Deactivate the porch light
light.turn_off,porch_light,Deactivate the porch light
light.turn_off,porch_light,Deactivate the lights at the porch.
light.turn_off,porch_light,Disable the lights in the porch.
light.turn_off,porch_light,porch light off
light.turn_off,porch_light,Disable the porch lights.
light.turn_off,porch_light,Please disable the porch light.
light.turn_off,porch_light,Please extinguish the porch light
light.turn_off,porch_light,Please power down the lights in the porch.
light.turn_off,porch_light,Please switch off the porch light
light.turn_off,porch_light,Please switch off the porch area lights.
light.turn_off,porch_light,Please turn off the porch lights.
light.turn_off,porch_light,Please turn off the porch light.
light.turn_off,porch_light,Power off the lights in the porch.
light.turn_off,porch_light,Set the porch lights to off.
light.turn_off,porch_light,Shut down the porch lights.
light.turn_off,porch_light,Shut down the porch light
light.turn_off,porch_light,Switch off the porch light
light.turn_off,porch_light,Switch off the porch light please
light.turn_off,porch_light,Switch off the porch light now
light.turn_off,porch_light,Switch off the porch lights
light.turn_off,porch_light,Switch off the light in the porch
light.turn_off,porch_light,Switch off the porch light
light.turn_off,porch_light,Turn off the porch light
light.turn_off,porch_light,Turn off the porch light please
light.turn_off,porch_light,Turn off the porch light now
light.turn_off,porch_light,You can turn off the porch light now
light.turn_off,porch_light,Turn off the porch lights.
light.turn_off,porch_light,Turn off the porch light please.
light.turn_off,porch_light,Turn off the porch light
light.turn_off,porch_light,Turn off the light in the porch.
light.turn_off,porch_light,Turn off the porch light
light.turn_off,porch_light,Turn off the light in the porch
light.turn_off,porch_light,Turn the porch light off
light.turn_off,shower_light,Please switch off the shower light
light.turn_off,shower_light,Turn off shower light
light.turn_off,shower_light,Turn off the shower light
light.turn_off,shower_light,Deactivate shower light
light.turn_off,shower_light,Shut off shower light
light.turn_off,stair_light,stair light off
light.turn_off,stair_light,Disable the stair lights.
light.turn_off,stair_light,Shut off stairwell light
light.turn_off,stair_light,Toggle the stairwell light
light.turn_off,stair_light,Can we power down the stairwell light?
light.turn_off,roof_light,Please switch off the roof light
light.turn_off,roof_light,Turn off roof light
light.turn_off,roof_light,Turn off the roof light
light.turn_off,walkway_light,Shut down the walkway lights.
light.turn_off,walkway_light,Turn off the walkway light
light.turn_off,walkway_light,Turn the walkway light off
light.turn_off,Bobs_lamp,Please switch off Bob's light
light.turn_off,janets_lamp,Turn off Janet's light
light.turn_off,ruths_lamp,Please switch off Ruth's lamp
light.turn_off,colins_lamp,Turn off Colin's lamp
light.turn_off,neenas_lamp,Turn off Neena's lamp
light.turn_off,roberts_lamp,Deactivate Robert's lamp
light.turn_off,paulus_lamp,Shut off Paulus' lamp
light.turn_off,peters_lamp,Toggle Peter's lamp
light.turn_off,angelas_lamp,Can we power down Angela's lamp?
light.turn_off,entry_lamp,Please switch off entry lamp
light.turn_off,entry_lamp,Turn off entry lamp
light.turn_off,entry_lamp,Please extinguish entryway lamp
light.turn_off,entry_lamp,Please switch off entryway lamp
light.turn_off,entry_lamp,Please switch off entryway area lamps.
light.turn_off,entry_lamp,Deactivate entrance light
light.turn_on,bar_light,Illuminate the light in my bar.
light.turn_on,bar_light,Illuminate the bar.
light.turn_on,bar_light,Bar light on
light.turn_on,bar_light,Light up the bar.
light.turn_on,dining_room_light,Activate the lights in the dining room
light.turn_on,dining_room_light,Enable the dining room light please
light.turn_on,dining_room_light,Engage the lights in the dining room.
light.turn_on,front_light,Activate the front light please
light.turn_on,front_light,Please activate the front light
light.turn_on,front_light,Activate the front light now
light.turn_on,gym_light,Turn on the gym light please
light.turn_on,gym_light,Turn the gym light on
light.turn_on,gym_light,gym light on
light.turn_on,island_light,Turn the island light on
light.turn_on,island_light,island light on
light.turn_on,island_light,Switch on the island light
light.turn_on,kitchen_light,kitchen light on
light.turn_on,kitchen_light,Switch on the kitchen light
light.turn_on,kitchen_light,Hey can you turn on the kitchen light
light.turn_on,living_room_light,Turn on the living room lights.
light.turn_on,living_room_light,Turn on the living room lights please.
light.turn_on,living_room_light,Please turn on the living room lights.
light.turn_on,living_room_light,Turn on the living room lighting.
light.turn_on,main_basement_light,Turn on the main basement light
light.turn_on,main_basement_light,Turn on main basement light
light.turn_on,man_cave_light,Activate the man cave man cave light.
light.turn_on,man_cave_light,Activate the lights in the man cave
light.turn_on,man_cave_light,Could you light up the man cave?
light.turn_on,man_cave_light,Enable the man cave light
light.turn_on,master_bedroom_light,Could you illuminate the master bedroom
light.turn_on,pool_table_bar_light,pool table bar light on
light.turn_on,pool_table_bar_light,Switch on the pool table bar light
light.turn_on,pool_table_bar_light,Can you turn on the pool table bar light?
light.turn_on,pool_table_light,Enable the pool table light please
light.turn_on,porch_light,Turn on porch light
light.turn_on,porch_light,Can you turn on the porch light?
light.turn_on,porch_light,Could you turn on the porch light please?
light.turn_on,shower_light,Turn on the shower light
light.turn_on,shower_light,Turn on shower light
light.turn_on,shower_light,Activate the shower light
light.turn_on,shower_light,Could you illuminate the shower please
light.turn_on,shower_light,Turn on the lights at the shower
light.turn_on,shower_light,Light up the shower please
light.turn_on,shower_light,Turn on the shower light please
light.turn_on,shower_light,Turn the shower light on
light.turn_on,shower_light,shower light on
light.turn_on,stair_light,Activate the stair light please
light.turn_on,stair_light,Please activate the stair light
light.turn_on,stair_light,Can you light up the stairwell please?
light.turn_on,stair_light,Please activate the stairwell light
light.turn_on,stair_light,Please switch on the stairwell area light
light.turn_on,roof_light,Please turn on the roof light.
light.turn_on,roof_light,Switch on the roof light please
light.turn_on,roof_light,Can you turn on the light in the roof?
light.turn_on,walkway_light,Please activate the walkway light
light.turn_on,walkway_light,Please switch on the walkway area light
light.turn_on,walkway_light,Turn on the walkway lighting.
light.turn_on,freds_lamp,Turn on Fred's light
light.turn_on,colins_lamp,Turn on Colin's light
light.turn_on,roberts_lamp,Activate Robert's light
light.turn_on,pierres_lamp,Turn on Pierre's light please
light.turn_on,jennifers_lamp,Turn Jenn's light on
light.turn_on,julias_lamp,Julia's light on
light.turn_on,neenas_lamp,Switch on Neena's light
light.turn_on,patricks_lamp,Can you turn on Patrick's light?
light.turn_on,sams_lamp,Light up Sam's.
light.turn_on,johns_lamp,Brighten up John's light.
light.turn_on,jordans_lamp,Engage Jordan's lighting.
light.turn_on,lebrons_lamp,Light up Lebron's lights.
light.turn_on,angies_lamp,Can you turn on Angie's lamp?
light.turn_on,louis_lamp,Could you turn on Louis' lamp please?
light.turn_on,katniss_lamp,Could you enable Katniss' lamp
light.turn_on,waynes_lamp,Enable Wayne's lamp
light.turn_on,samuels_lamp,Enable Samuel's lamp please
light.turn_on,entry_lamp,Turn on entry lamp
light.turn_on,entry_lamp,Please activate entryway lamp
light.turn_on,entry_lamp,Please switch on entryway area lamp
light.turn_on,entry_lamp,Turn on entrance light
light.turn_on,entry_lamp,Turn on entrance lighting.
1 service_name device_name english_phrase
2 blinds.close kitchen Lower the kitchen blinds
3 blinds.close living_room Close the living room blinds
4 blinds.close master_bedroom Shut the master bedroom blinds
5 blinds.open kitchen Could you raise the kitchen blinds
6 blinds.open living_room Open the living room blinds
7 blinds.open master_bedroom Lift the master bedroom blinds
8 blinds.stop kitchen Stop the kitchen blinds where they are
9 blinds.stop living_room Stop adjusting the living room blinds
10 blinds.stop master_bedroom Please halt the master bedroom blinds
11 blinds.toggle kitchen Switch the state of the kitchen blinds
12 blinds.toggle living_room Toggle the living room blinds
13 blinds.toggle master_bedroom Reverse the master bedroom blinds
14 fan.decrease_speed attic_1 Slow down the attic fan
15 fan.decrease_speed attic_1 Turn down the attic fan
16 fan.decrease_speed attic Slow down the fan in the attic
17 fan.decrease_speed bedroom_master Slow down the master bedroom fan
18 fan.decrease_speed garage Turn down the fan in the garage
19 fan.decrease_speed guest_room Decrease the fan speed in the guest room
20 fan.decrease_speed hallway Lower the fan speed in the hallway
21 fan.decrease_speed kitchen Slow down the kitchen fan
22 fan.decrease_speed kitchen Turn down the kitchen fan
23 fan.decrease_speed living_room Decrease the speed of the living room fan
24 fan.decrease_speed living_room Turn down the living room fan
25 fan.decrease_speed study Reduce the fan speed in the study
26 fan.increase_speed attic_1 Increase speed of the attic fan
27 fan.increase_speed attic Accelerate the fan in the attic
28 fan.increase_speed bedroom_master Ramp up the master bedroom fan speed
29 fan.increase_speed garage Turn up the fan in the garage
30 fan.increase_speed guest_room Increase the fan speed in the guest room
31 fan.increase_speed hallway Boost the fan speed in the hallway
32 fan.increase_speed living_room Increase the speed of the living room fan
33 fan.increase_speed study Ramp up the fan speed in the study
34 fan.toggle attic_2 Toggle the attic fan
35 fan.toggle attic Change the fan status in the attic
36 fan.toggle basement Toggle the basement fan
37 fan.toggle bedroom_master Switch the state of the master bedroom fan
38 fan.toggle bedroom Toggle the bedroom fan
39 fan.toggle dining_table_above Please toggle the fan above the dining table
40 fan.toggle driveway Flip the driveway fan
41 fan.toggle garage Flip the fan in the garage
42 fan.toggle guest_room Can you toggle the fan in the guest room
43 fan.toggle hallway Switch the state of the fan in the hallway
44 fan.toggle kitchen Toggle the kitchen fan
45 fan.toggle living_room Toggle the fan in the living room
46 fan.toggle office Toggle the office fan
47 fan.toggle outdoor Toggle the outdoor fan
48 fan.toggle pool Change the status of the pool fan
49 fan.toggle shed Switch the shed fan on or off
50 fan.toggle study Alter the fan state in the study
51 fan.turn_off attic_1 Disable the attic fan
52 fan.turn_off bedroom_master Deactivate the master bedroom fan
53 fan.turn_off dining_area Please switch off the dining area fan
54 fan.turn_off dining_room Switch off the dining room fan
55 fan.turn_off garage Shut down the garage fan
56 fan.turn_off garage Switch off the garage fan
57 fan.turn_off guest_room Switch off the guest room fan
58 fan.turn_off kitchen Switch off the kitchen fan
59 fan.turn_off living_room Turn off the living room fan
60 fan.turn_off office Could you disable the office fan
61 fan.turn_off office Turn off the office fan
62 fan.turn_off patio Turn off the patio fan
63 fan.turn_off study Switch off the study fan
64 fan.turn_off study Turn off the study fan
65 fan.turn_on bathroom Activate the bathroom fan
66 fan.turn_on bathroom Turn on the bathroom fan
67 fan.turn_on bedroom_master Activate the master bedroom fan
68 fan.turn_on dining_area Please switch on the dining area fan
69 fan.turn_on garage Turn on the garage fan
70 fan.turn_on hallway Enable the hallway fan
71 fan.turn_on kitchen Enable the kitchen fan
72 fan.turn_on living_room Start the living room fan
73 fan.turn_on living_room Turn on the living room fan
74 fan.turn_on office Could you enable the office fan
75 fan.turn_on study Activate the study fan
76 fan.turn_on study Switch on the study fan
77 garage_door.close bike_storage Deactivate the bike storage garage
78 garage_door.close main Close the main garage door
79 garage_door.close one_car Make sure the one car garage is closed
80 garage_door.close side Lower the side garage door
81 garage_door.open basement Please raise the basement garage door
82 garage_door.open bike_storage Activate the bike storage garage
83 garage_door.open main Open the main garage door
84 garage_door.open side Could you lift the side garage door
85 garage_door.open two_car Open the two car garage
86 garage_door.stop main Stop the main garage door
87 garage_door.stop side Halt the side garage door
88 garage_door.toggle main Toggle the main garage door
89 garage_door.toggle side Switch the state of the side garage door
90 light.toggle attic Change the light status in the attic
91 light.toggle bedroom_1 Toggle the bedroom light
92 light.toggle dining_table_above Please toggle the light above the dining table
93 light.toggle driveway Flip the driveway light
94 light.toggle garage Flip the light in the garage
95 light.toggle guest_room Could you toggle the light in the guest room
96 light.toggle guest_room Toggle the guest room light
97 light.toggle hallway Switch the state of the light in the hallway
98 light.toggle hallway Toggle the hallway light
99 light.toggle kitchen_1 Toggle the kitchen light
100 light.toggle kitchen_2 Toggle the kitchen light
101 light.toggle office Toggle the office light
102 light.toggle outdoor Toggle the outdoor light
103 light.toggle patio Toggle the patio light
104 light.toggle pool Change the status of the pool light
105 light.toggle shed Switch the shed light on or off
106 light.toggle study Alter the light state in the study
107 light.toggle study Toggle the study light
108 light.turn_off bathroom_1 Please extinguish the bathroom light
109 light.turn_off bathroom Switch off the bathroom light
110 light.turn_off bathroom Turn off the bathroom light
111 light.turn_off bedroom_1 Deactivate the bedroom light
112 light.turn_off bedroom_2 Switch off the bedroom light
113 light.turn_off dining_room Switch off the dining room light
114 light.turn_off dining_room Turn off the dining room light
115 light.turn_off garden_1 Deactivate the garden light
116 light.turn_off guest_room Deactivate the guest room light
117 light.turn_off guest_room Switch off the guest room light
118 light.turn_off hallway Switch off the hallway light
119 light.turn_off hallway Turn off the hallway light
120 light.turn_off kitchen_2 Switch off the kitchen light
121 light.turn_off kitchen_counter Switch off the kitchen counter light
122 light.turn_off living_room_1 Switch off the living room light
123 light.turn_off living_room Turn off the living room light
124 light.turn_off master_bedroom_1 Deactivate the master bedroom light
125 light.turn_off master_bedroom_lamp Turn off the light in the bedroom
126 light.turn_off office Deactivate the office light
127 light.turn_off patio Deactivate the patio light
128 light.turn_off patio Disable the patio light
129 light.turn_off pool Turn off the pool light
130 light.turn_off study Turn off the study light
131 light.turn_on bathroom_1 Could you illuminate the bathroom
132 light.turn_on bathroom Activate the bathroom light
133 light.turn_on bedroom_1 Activate the bedroom light
134 light.turn_on dining_room_1 Activate the lights in the dining room
135 light.turn_on dining_room Activate the dining room light
136 light.turn_on driveway Turn on the driveway light
137 light.turn_on garage Activate the garage light
138 light.turn_on garage Switch on the garage light
139 light.turn_on garden_1 Switch on the garden light
140 light.turn_on garden_1 Turn on the garden light
141 light.turn_on garden_2 Activate the garden light
142 light.turn_on garden Switch on the garden light
143 light.turn_on guest_room Switch on the guest room light
144 light.turn_on hallway Turn on the hallway light
145 light.turn_on kitchen_1 Switch on the kitchen lights
146 light.turn_on kitchen_1 Turn on the kitchen light
147 light.turn_on kitchen_counter Switch on the kitchen counter light
148 light.turn_on living_room Turn on the living room light
149 light.turn_on master_bedroom_1 Please activate the master bedroom light
150 light.turn_on office_1 Enable the office light
151 light.turn_on patio Enable the patio light
152 light.turn_on patio Switch on the patio light
153 light.turn_on patio Turn on the patio light
154 light.turn_on pool Activate the pool light
155 light.turn_on pool Turn on the pool light
156 light.turn_on shed Activate the shed light
157 light.turn_on shed Switch on the shed light
158 light.turn_on study Activate the study light
159 light.turn_on dining_room_chandelier Turn on the dining room light
160 light.turn_on chandelier_front_hallway Hey can you turn on the front hallway chandelier
161 lock.lock back_door Engage the back door lock
162 lock.lock front_door Lock the front door
163 lock.lock nursery Can you secure the nursery door
164 lock.lock office Please lock the office
165 lock.lock wine_cellar Could you lock the wine cellar
166 lock.lock front_door Please lock the front door.
167 lock.lock garage_door I need the garage door locked.
168 lock.lock main_gate Ensure the main gate is locked.
169 lock.lock office_door Can we lock the office door?
170 lock.lock basement_door Lock up the basement door.
171 lock.lock garden_gate Please secure the garden gate.
172 lock.lock cellar_door Cellar door should be locked now.
173 lock.lock shed_door Ensure the shed door is securely locked.
174 lock.lock laundry_room_door Can you lock the laundry room door?
175 lock.lock guest_room_door Please lock the guest room door.
176 lock.lock fence_gate Make sure the fence gate is locked.
177 lock.lock attic_door Attic door needs locking.
178 lock.lock storage_room_door Please lock the storage room door.
179 lock.lock carport_gate Carport gate needs to be locked.
180 lock.lock front_porch_door Lock the front porch door.
181 lock.lock wine_cellar Ensure the wine cellar is locked.
182 lock.lock home_office I'd like the home office locked up.
183 lock.lock art_studio The art studio should be locked.
184 lock.lock home_gym Lock the home gym door.
185 lock.lock library_door Please lock the library door.
186 lock.unlock back_door Could you disengage the back door lock
187 lock.unlock bike_storage Disengage the lock on the bike storage
188 lock.unlock front_door Unlock the front door
189 lock.unlock office Please unlock the office
190 lock.unlock tool_shed Unlock the tool shed
191 lock.unlock back_door Can you unlock the back door?
192 lock.unlock patio_door Unlock the patio door, please.
193 lock.unlock kitchen_window Open the lock on the kitchen window.
194 lock.unlock bedroom_window Bedroom window needs to be unlocked.
195 lock.unlock bathroom_window Could you unlock the bathroom window?
196 lock.unlock rooftop_door Open the rooftop door lock.
197 lock.unlock pool_gate I'd like the pool gate unlocked.
198 lock.unlock balcony_door Unlock the balcony door for me.
199 lock.unlock nursery_door The nursery door needs to be unlocked.
200 lock.unlock side_entrance Unlock our side entrance.
201 lock.unlock garage_side_door Garage side door should be unlocked.
202 lock.unlock fire_escape Can you unlock the fire escape?
203 lock.unlock boathouse_door Unlock the boathouse door.
204 lock.unlock backyard_gate Can we have the backyard gate unlocked?
205 lock.unlock back_terrace_door Open the lock on the back terrace door.
206 lock.unlock sunroom_door Please unlock the sunroom door.
207 lock.unlock playroom_door Can you unlock the playroom door?
208 lock.unlock music_room Unlock the music room, please.
209 lock.unlock cinema_room Cinema room needs to be unlocked.
210 lock.unlock conservatory Can the conservatory be unlocked?
211 media_player.media_next_track living_room Skip to the next track in the living room
212 media_player.media_next_track basement_home_theater Skip to the next track in the basement.
213 media_player.media_next_track gym_music_player Skip to the next song in the gym.
214 media_player.media_next_track yoga_room_music Next track for the yoga room music.
215 media_player.media_next_track garden_music Next track for the garden music.
216 media_player.media_pause master_bedroom Pause the media in the master bedroom
217 media_player.media_pause bathroom_audio Pause the bathroom audio.
218 media_player.media_pause loft_tv Pause the TV in the loft.
219 media_player.media_pause laundry_room_radio Pause the radio in the laundry room.
220 media_player.media_pause corridor_intercom Pause the corridor intercom.
221 media_player.media_play nursery Please play the media in the nursery
222 media_player.media_play patio_speaker Start playing music on the patio speaker.
223 media_player.media_play sunroom_stereo Play the stereo in the sunroom.
224 media_player.media_play kids_room_storyteller Start the storyteller in the kids' room.
225 media_player.media_play cellar_jukebox Play the jukebox in the cellar.
226 media_player.media_previous_track kitchen Play the previous track in the kitchen
227 media_player.media_previous_track nursery_lullaby Go back to the previous lullaby in the nursery.
228 media_player.media_previous_track study_room_radio Go back to the previous station in the study room.
229 media_player.media_previous_track conservatory_cd_player Previous track on the conservatory CD player.
230 media_player.media_previous_track driveway_speakers Previous track on the driveway speakers.
231 media_player.media_stop nursery Stop the media in the nursery
232 media_player.media_stop guest_room_media Stop the guest room media player.
233 media_player.media_stop poolside_media Stop the poolside media system.
234 media_player.media_stop balcony_speakers Stop the balcony speakers.
235 media_player.media_stop porch_sound_system Stop the porch sound system.
236 media_player.turn_off kitchen_radio Switch off the kitchen radio.
237 media_player.turn_off lounge_entertainment Switch off the lounge entertainment center.
238 media_player.turn_off entryway_echo Turn off the Echo in the entryway.
239 media_player.turn_off wine_cellar_speakers Power off the speakers in the wine cellar.
240 media_player.turn_off mudroom_media_player Switch off the mudroom media player.
241 media_player.turn_on kitchen Could you start the media in the kitchen
242 media_player.turn_on living_room Activate the media in the living room
243 media_player.turn_on master_bedroom Turn on the master bedroom media player
244 media_player.turn_on living_room_tv Please turn on the living room TV.
245 media_player.turn_on deck_music_system Turn on the deck's music system.
246 media_player.turn_on backyard_speakers Turn on the backyard speakers.
247 media_player.turn_on foyer_sound_system Power on the foyer sound system.
248 media_player.turn_on hallway_audio Switch on the hallway audio system.
249 media_player.volume_down nursery Turn down the volume in the nursery
250 media_player.volume_down office Can you decrease the volume in the office
251 media_player.volume_down office_sound_system Lower the volume in the office.
252 media_player.volume_down game_room_speakers Turn down the game room speakers.
253 media_player.volume_down workshop_sound_system Lower the sound system volume in the workshop.
254 media_player.volume_down attic_audio_system Decrease attic audio system volume.
255 media_player.volume_down shed_sound_system Turn down the shed sound system.
256 media_player.volume_mute living_room Mute the media player in the living room
257 media_player.volume_mute garage_stereo Mute the stereo in the garage.
258 media_player.volume_mute library_soundbar Mute the soundbar in the library.
259 media_player.volume_mute art_studio_player Mute the media player in the art studio.
260 media_player.volume_mute boathouse_stereo Mute the stereo in the boathouse.
261 media_player.volume_mute treehouse_speakers Mute the treehouse speakers.
262 media_player.volume_up kitchen Please raise the volume in the kitchen
263 media_player.volume_up living_room Turn up the volume in the living room
264 media_player.volume_up master_bedroom Can you increase the volume on the master bedroom media player
265 media_player.volume_up bedroom_speaker Can you increase the volume in the bedroom?
266 media_player.volume_up dining_area_jukebox Increase the jukebox volume in the dining area.
267 media_player.volume_up rooftop_deck_audio Raise the rooftop audio volume.
268 media_player.volume_up greenhouse_radio Increase the greenhouse radio volume.
269 media_player.volume_up utility_room_radio Turn up the utility room radio.
270 switch.toggle tp_link_kasa_porch Toggle the porch lights.
271 switch.toggle honeywell_home_office Toggle the office lights.
272 switch.toggle sonoff_dining_room Toggle the dining room lights.
273 switch.toggle osram_hallway Toggle the hallway lights.
274 switch.toggle koogeek_basement Toggle the basement lights.
275 switch.toggle arlo_floodlights Toggle the security floodlights.
276 switch.toggle broadlink_kitchenette Toggle the kitchenette lights.
277 switch.toggle kasa_living_room Toggle the living room lights.
278 switch.toggle home_office_dimmer Toggle the home office dimmer.
279 switch.toggle kitchen_under_cabinet Toggle the kitchen under cabinet lights.
280 switch.turn_off belkin_wemo_garage Turn off the garage switch.
281 switch.turn_off lutron_caseta_bedroom Turn off the bedroom lights.
282 switch.turn_off samsung_smartthings_security Turn off the security system.
283 switch.turn_off fibaro_pool Turn off the pool lights.
284 switch.turn_off ecobee_garden Turn off the garden lights.
285 switch.turn_off insteon_patio Turn off the patio lights.
286 switch.turn_off yeelight_sunroom Turn off the sunroom lights.
287 switch.turn_off meross_walkway Turn off the walkway lighting.
288 switch.turn_off xiaomi_bedside Turn off the bedside lamp.
289 switch.turn_off ikea_guest_room Turn off the guest room lights.
290 switch.turn_off tuya_shed Turn off the shed light switch.
291 switch.turn_off hue_bedroom_2 Turn off the second bedroom lights.
292 switch.turn_off radiant_office Turn off the office lights.
293 switch.turn_off z_wave_guest_bathroom Turn off the guest bathroom fan.
294 switch.turn_off patio_heater_switch Turn off the patio heater.
295 switch.turn_off kitchen_fan Please turn off the kitchen fan.
296 switch.turn_off poolside_lanterns Deactivate the poolside lanterns.
297 switch.turn_off backyard_floodlight Can you shut off the backyard floodlight?
298 switch.turn_off laundry_area Please switch off the laundry area lights.
299 switch.turn_off basement_sconces Can we turn down the basement sconces?
300 switch.turn_off sunroom_blinds I'd like the sunroom blinds closed, please.
301 switch.turn_off patio_string_lights Switch off the string lights on the patio.
302 switch.turn_off kitchen_island Disable the kitchen island lights.
303 switch.turn_off garage_worklight Can we power down the garage worklight?
304 switch.turn_off home_cinema Please turn off the home cinema lights.
305 switch.turn_off dining_room_dimmer Set the dining room lights to off.
306 switch.turn_off art_studio_spots Please disable the art studio spotlights.
307 switch.turn_off back_entry Shut down the back entry lights.
308 switch.turn_off veranda_fairy_lights Switch off the veranda fairy lights, please.
309 switch.turn_off walk_in_closet Disable the walk-in closet lights.
310 switch.turn_off bathroom_mirror Can you turn off the bathroom mirror light?
311 switch.turn_off storage_room Please power down the storage room lights.
312 switch.turn_off conservation_area Deactivate the conservation area lighting.
313 switch.turn_off hobby_room Could we turn off the hobby room lights?
314 switch.turn_off rear_terrace Can you dim the lights on the rear terrace?
315 switch.turn_on philips_hue_living_room Turn on the living room lights.
316 switch.turn_on legrand_radiant_kitchen Turn on the kitchen lights.
317 switch.turn_on ge_z_wave_bathroom Turn on the bathroom fan.
318 switch.turn_on eve_energy_balcony Turn on the balcony lighting.
319 switch.turn_on nest_thermostat_terrace Turn on the terrace thermostat.
320 switch.turn_on wink_relay_driveway Turn on the driveway lights.
321 switch.turn_on sengled_deck Turn on the deck lighting.
322 switch.turn_on gosund_attic Turn on the attic light switch.
323 switch.turn_on nanoleaf_stairway Turn on the stairway lights.
324 switch.turn_on wyze_study Turn on the study room lights.
325 switch.turn_on netatmo_front_yard Turn on the front yard lighting.
326 switch.turn_on moeshouse_gym Turn on the gym lighting.
327 switch.turn_on wemo_laundry_room Turn on the laundry room lights.
328 switch.turn_on caseta_hallway_2 Turn on the second hallway lights.
329 switch.turn_on security_camera_light Turn on the security camera light.
330 switch.turn_on hallway_dimmer Could you dim the hallway lights?
331 switch.turn_on garden_spotlights Activate the garden spotlights.
332 switch.turn_on front_porch_sensor Engage the front porch sensor light.
333 switch.turn_on staircase_light_strip Could you light up the staircase light strip?
334 switch.turn_on office_desk_lamp Illuminate the desk lamp in my office.
335 switch.turn_on library_ceiling Engage the ceiling lights in the library.
336 switch.turn_on guest_bathroom Light up the guest bathroom, please.
337 switch.turn_on entryway_chandelier Illuminate the entryway chandelier.
338 switch.turn_on bedroom_track_lighting Brighten the bedroom track lighting.
339 switch.turn_on balcony_mood_lighting Activate the mood lighting on the balcony.
340 switch.turn_on playroom_nightlight Can you turn on the playroom nightlight?
341 switch.turn_on foyer_wall_sconce Light up the foyer wall sconce.
342 switch.turn_on corridor_track Brighten up the corridor track lights.
343 switch.turn_on master_suite Set the master suite to nighttime mode.
344 switch.turn_on roof_deck Engage the roof deck lighting.
345 switch.turn_on wine_cellar Illuminate the wine cellar.
346 switch.turn_on gym_ceiling Light up the gym ceiling lights.
347 switch.turn_on front_lawn Activate the front lawn spotlights.
348 vacuum.start kitchen Please turn on the kitchen vacuum.
349 vacuum.start living_room Could you please activate the living room vacuum?
350 vacuum.start dining_room The dining room vacuum needs to be started.
351 vacuum.start bedroom1 Let's start the vacuum in bedroom one.
352 vacuum.start bedroom2 Can you please turn on the vacuum for bedroom two?
353 vacuum.start study The study vacuum should be activated.
354 vacuum.start library May I ask you to start the library vacuum?
355 vacuum.start office Please initiate the office vacuum.
356 vacuum.start entrance_hall Could you please turn on the entrance hall vacuum?
357 vacuum.start sunroom The sunroom vacuum needs to be started.
358 vacuum.start patio Let's activate the patio vacuum.
359 vacuum.start garage Can we clean up the garage, please?
360 vacuum.start workshop May I request you to turn on the workshop vacuum?
361 vacuum.start utility_room Please clean the utility room.
362 vacuum.start mud_room Could you please clean up the mud room?
363 vacuum.start powder_room The powder room needs to be cleaned.
364 vacuum.start hallway Let's turn on the hallway vacuum.
365 vacuum.start staircase Can we please start the staircase vacuum?
366 vacuum.start balcony May I ask you to clean the balcony?
367 vacuum.start roof_deck Please roof deck is dirty.
368 vacuum.start attic Let's start the attic vacuum.
369 vacuum.start basement Can we turn on the basement vacuum, please?
370 vacuum.start pool_area The pool area vacuum needs to be started.
371 vacuum.start garden Could you please activate the garden vacuum?
372 vacuum.start terrace May I request you to start the terrace vacuum?
373 vacuum.start porch Please initiate the porch vacuum.
374 vacuum.start shed Can we turn on the shed vacuum, please?
375 vacuum.start workshop2 The second workshop is pretty dirty right now.
376 vacuum.start studio May I ask you to start the studio vacuum?
377 vacuum.start greenhouse Please initiate the greenhouse vacuum.
378 vacuum.start potting_shed Can we turn on the potting shed vacuum, please?
379 vacuum.start summer_house The summer house vacuum needs to be started.
380 vacuum.start garage2 Let's start the second garage vacuum.
381 vacuum.start tool_shed May I request you to activate the tool shed vacuum?
382 vacuum.start barn Could we please turn on the barn vacuum?
383 vacuum.start wine_cellar The wine cellar should be cleaned.
384 vacuum.start storage_room Let's initiate the storage room cleanup.
385 vacuum.start greenhouse2 May I ask you to activate the second greenhouse vacuum?
386 vacuum.start boat_house Please turn on the boat house vacuum.
387 vacuum.start marina Could we please start the marina vacuum?
388 vacuum.start bb8 Turn on BB8.
389 vacuum.start c3po Can you start C3PO?
390 vacuum.start hal Please turn on Hal.
391 vacuum.start r2d2 Can you tell R2D2 to clean up?
392 light.turn_off bar_light Please switch off the bar light
393 light.turn_off bar_light Turn off bar light
394 light.turn_off bar_light Turn off the bar light
395 light.turn_off dining_room_light Deactivate dining room light
396 light.turn_off dining_room_light Shut off dining room light
397 light.turn_off dining_room_light Toggle the dining room light
398 light.turn_off front_light Can we power down the front light?
399 light.turn_off front_light Can we turn down the front light?
400 light.turn_off front_light Can you turn off the lights on the front?
401 light.turn_off gym_light Can you shut off the gym light?
402 light.turn_off gym_light Can you turn off the gym light?
403 light.turn_off gym_light Could we turn off the gym lights?
404 light.turn_off island_light Could you disable the island light
405 light.turn_off island_light Deactivate the island light
406 light.turn_off island_light Deactivate the island area lighting.
407 light.turn_off kitchen_light Deactivate the kitchen light
408 light.turn_off kitchen_light Deactivate the lights at the kitchen.
409 light.turn_off kitchen_light Disable the lights in the kitchen.
410 light.turn_off living_room_light living room light off
411 light.turn_off living_room_light Disable the living room lights.
412 light.turn_off living_room_light Please disable the living room light.
413 light.turn_off main_basement_light Please extinguish the main basement light
414 light.turn_off main_basement_light Please power down the lights in the main basement.
415 light.turn_off main_basement_light Please switch off the main basement light
416 light.turn_off man_cave_light Please switch off the man cave area lights.
417 light.turn_off man_cave_light Please turn off the man cave lights.
418 light.turn_off man_cave_light Please turn off the man cave light.
419 light.turn_off master_bedroom_light Power off the lights in the master bedroom.
420 light.turn_off master_bedroom_light Set the master bedroom lights to off.
421 light.turn_off master_bedroom_light Shut down the master bedroom lights.
422 light.turn_off pool_table_light Shut down the pool table light
423 light.turn_off pool_table_light Switch off the pool table light
424 light.turn_off pool_table_light Switch off the pool table light please
425 light.turn_off pool_table_light Switch off the pool table light now
426 light.turn_off pool_table_light Switch off the pool table lights
427 light.turn_off pool_table_light Switch off the light in the pool table
428 light.turn_off pool_table_light Switch off the pool table light
429 light.turn_off pool_table_light Turn off the pool table light
430 light.turn_off pool_table_light Turn off the pool table light please
431 light.turn_off pool_table_light Turn off the pool table light now
432 light.turn_off pool_table_light You can turn off the pool table light now
433 light.turn_off pool_table_light Turn off the pool table lights.
434 light.turn_off pool_table_light Turn off the pool table light please.
435 light.turn_off pool_table_light Turn off the pool table light
436 light.turn_off pool_table_light Turn off the light in the pool table.
437 light.turn_off pool_table_light Turn off the pool table light
438 light.turn_off pool_table_light Turn off the light in the pool table
439 light.turn_off pool_table_light Turn the pool table light off
440 light.turn_off porch_light Please switch off the porch light
441 light.turn_off porch_light Turn off porch light
442 light.turn_off porch_light Turn off the porch light
443 light.turn_off porch_light Deactivate porch light
444 light.turn_off porch_light Shut off porch light
445 light.turn_off porch_light Toggle the porch light
446 light.turn_off porch_light Can we power down the porch light?
447 light.turn_off porch_light Can we turn down the porch light?
448 light.turn_off porch_light Can you turn off the lights on the porch?
449 light.turn_off porch_light Can you shut off the porch light?
450 light.turn_off porch_light Can you turn off the porch light?
451 light.turn_off porch_light Could we turn off the porch lights?
452 light.turn_off porch_light Could you disable the porch light
453 light.turn_off porch_light Deactivate the porch light
454 light.turn_off porch_light Deactivate the porch area lighting.
455 light.turn_off porch_light Deactivate the porch light
456 light.turn_off porch_light Deactivate the light on the porch
457 light.turn_off porch_light Deactivate the porch light
458 light.turn_off porch_light Deactivate the porch light
459 light.turn_off porch_light Deactivate the porch light
460 light.turn_off porch_light Deactivate the lights at the porch.
461 light.turn_off porch_light Disable the lights in the porch.
462 light.turn_off porch_light porch light off
463 light.turn_off porch_light Disable the porch lights.
464 light.turn_off porch_light Please disable the porch light.
465 light.turn_off porch_light Please extinguish the porch light
466 light.turn_off porch_light Please power down the lights in the porch.
467 light.turn_off porch_light Please switch off the porch light
468 light.turn_off porch_light Please switch off the porch area lights.
469 light.turn_off porch_light Please turn off the porch lights.
470 light.turn_off porch_light Please turn off the porch light.
471 light.turn_off porch_light Power off the lights in the porch.
472 light.turn_off porch_light Set the porch lights to off.
473 light.turn_off porch_light Shut down the porch lights.
474 light.turn_off porch_light Shut down the porch light
475 light.turn_off porch_light Switch off the porch light
476 light.turn_off porch_light Switch off the porch light please
477 light.turn_off porch_light Switch off the porch light now
478 light.turn_off porch_light Switch off the porch lights
479 light.turn_off porch_light Switch off the light in the porch
480 light.turn_off porch_light Switch off the porch light
481 light.turn_off porch_light Turn off the porch light
482 light.turn_off porch_light Turn off the porch light please
483 light.turn_off porch_light Turn off the porch light now
484 light.turn_off porch_light You can turn off the porch light now
485 light.turn_off porch_light Turn off the porch lights.
486 light.turn_off porch_light Turn off the porch light please.
487 light.turn_off porch_light Turn off the porch light
488 light.turn_off porch_light Turn off the light in the porch.
489 light.turn_off porch_light Turn off the porch light
490 light.turn_off porch_light Turn off the light in the porch
491 light.turn_off porch_light Turn the porch light off
492 light.turn_off shower_light Please switch off the shower light
493 light.turn_off shower_light Turn off shower light
494 light.turn_off shower_light Turn off the shower light
495 light.turn_off shower_light Deactivate shower light
496 light.turn_off shower_light Shut off shower light
497 light.turn_off stair_light stair light off
498 light.turn_off stair_light Disable the stair lights.
499 light.turn_off stair_light Shut off stairwell light
500 light.turn_off stair_light Toggle the stairwell light
501 light.turn_off stair_light Can we power down the stairwell light?
502 light.turn_off roof_light Please switch off the roof light
503 light.turn_off roof_light Turn off roof light
504 light.turn_off roof_light Turn off the roof light
505 light.turn_off walkway_light Shut down the walkway lights.
506 light.turn_off walkway_light Turn off the walkway light
507 light.turn_off walkway_light Turn the walkway light off
508 light.turn_off Bobs_lamp Please switch off Bob's light
509 light.turn_off janets_lamp Turn off Janet's light
510 light.turn_off ruths_lamp Please switch off Ruth's lamp
511 light.turn_off colins_lamp Turn off Colin's lamp
512 light.turn_off neenas_lamp Turn off Neena's lamp
513 light.turn_off roberts_lamp Deactivate Robert's lamp
514 light.turn_off paulus_lamp Shut off Paulus' lamp
515 light.turn_off peters_lamp Toggle Peter's lamp
516 light.turn_off angelas_lamp Can we power down Angela's lamp?
517 light.turn_off entry_lamp Please switch off entry lamp
518 light.turn_off entry_lamp Turn off entry lamp
519 light.turn_off entry_lamp Please extinguish entryway lamp
520 light.turn_off entry_lamp Please switch off entryway lamp
521 light.turn_off entry_lamp Please switch off entryway area lamps.
522 light.turn_off entry_lamp Deactivate entrance light
523 light.turn_on bar_light Illuminate the light in my bar.
524 light.turn_on bar_light Illuminate the bar.
525 light.turn_on bar_light Bar light on
526 light.turn_on bar_light Light up the bar.
527 light.turn_on dining_room_light Activate the lights in the dining room
528 light.turn_on dining_room_light Enable the dining room light please
529 light.turn_on dining_room_light Engage the lights in the dining room.
530 light.turn_on front_light Activate the front light please
531 light.turn_on front_light Please activate the front light
532 light.turn_on front_light Activate the front light now
533 light.turn_on gym_light Turn on the gym light please
534 light.turn_on gym_light Turn the gym light on
535 light.turn_on gym_light gym light on
536 light.turn_on island_light Turn the island light on
537 light.turn_on island_light island light on
538 light.turn_on island_light Switch on the island light
539 light.turn_on kitchen_light kitchen light on
540 light.turn_on kitchen_light Switch on the kitchen light
541 light.turn_on kitchen_light Hey can you turn on the kitchen light
542 light.turn_on living_room_light Turn on the living room lights.
543 light.turn_on living_room_light Turn on the living room lights please.
544 light.turn_on living_room_light Please turn on the living room lights.
545 light.turn_on living_room_light Turn on the living room lighting.
546 light.turn_on main_basement_light Turn on the main basement light
547 light.turn_on main_basement_light Turn on main basement light
548 light.turn_on man_cave_light Activate the man cave man cave light.
549 light.turn_on man_cave_light Activate the lights in the man cave
550 light.turn_on man_cave_light Could you light up the man cave?
551 light.turn_on man_cave_light Enable the man cave light
552 light.turn_on master_bedroom_light Could you illuminate the master bedroom
553 light.turn_on pool_table_bar_light pool table bar light on
554 light.turn_on pool_table_bar_light Switch on the pool table bar light
555 light.turn_on pool_table_bar_light Can you turn on the pool table bar light?
556 light.turn_on pool_table_light Enable the pool table light please
557 light.turn_on porch_light Turn on porch light
558 light.turn_on porch_light Can you turn on the porch light?
559 light.turn_on porch_light Could you turn on the porch light please?
560 light.turn_on shower_light Turn on the shower light
561 light.turn_on shower_light Turn on shower light
562 light.turn_on shower_light Activate the shower light
563 light.turn_on shower_light Could you illuminate the shower please
564 light.turn_on shower_light Turn on the lights at the shower
565 light.turn_on shower_light Light up the shower please
566 light.turn_on shower_light Turn on the shower light please
567 light.turn_on shower_light Turn the shower light on
568 light.turn_on shower_light shower light on
569 light.turn_on stair_light Activate the stair light please
570 light.turn_on stair_light Please activate the stair light
571 light.turn_on stair_light Can you light up the stairwell please?
572 light.turn_on stair_light Please activate the stairwell light
573 light.turn_on stair_light Please switch on the stairwell area light
574 light.turn_on roof_light Please turn on the roof light.
575 light.turn_on roof_light Switch on the roof light please
576 light.turn_on roof_light Can you turn on the light in the roof?
577 light.turn_on walkway_light Please activate the walkway light
578 light.turn_on walkway_light Please switch on the walkway area light
579 light.turn_on walkway_light Turn on the walkway lighting.
580 light.turn_on freds_lamp Turn on Fred's light
581 light.turn_on colins_lamp Turn on Colin's light
582 light.turn_on roberts_lamp Activate Robert's light
583 light.turn_on pierres_lamp Turn on Pierre's light please
584 light.turn_on jennifers_lamp Turn Jenn's light on
585 light.turn_on julias_lamp Julia's light on
586 light.turn_on neenas_lamp Switch on Neena's light
587 light.turn_on patricks_lamp Can you turn on Patrick's light?
588 light.turn_on sams_lamp Light up Sam's.
589 light.turn_on johns_lamp Brighten up John's light.
590 light.turn_on jordans_lamp Engage Jordan's lighting.
591 light.turn_on lebrons_lamp Light up Lebron's lights.
592 light.turn_on angies_lamp Can you turn on Angie's lamp?
593 light.turn_on louis_lamp Could you turn on Louis' lamp please?
594 light.turn_on katniss_lamp Could you enable Katniss' lamp
595 light.turn_on waynes_lamp Enable Wayne's lamp
596 light.turn_on samuels_lamp Enable Samuel's lamp please
597 light.turn_on entry_lamp Turn on entry lamp
598 light.turn_on entry_lamp Please activate entryway lamp
599 light.turn_on entry_lamp Please switch on entryway area lamp
600 light.turn_on entry_lamp Turn on entrance light
601 light.turn_on entry_lamp Turn on entrance lighting.

View File

@@ -241,4 +241,34 @@ media_player,idle;<volume>,"Is <device_name> active right now?","<device_name> i
media_player,playing;<media>;<volume>,"What's on <device_name> at the moment?","<device_name> is currently playing <media> at volume <volume>."
media_player,paused;<media>;<volume>,"I forgot what I paused on <device_name>, can you remind me?","You paused <media> on <device_name>, and the volume is set to <volume>."
media_player,idle;<volume>,"Is <device_name> turned off or on?","<device_name> is on but idle, with volume at <volume>."
media_player,playing;<media>;<volume>,"I'd like to know what's playing on <device_name>.","Currently, <media> is playing on <device_name> at volume level <volume>."
media_player,playing;<media>;<volume>,"I'd like to know what's playing on <device_name>.","Currently, <media> is playing on <device_name> at volume level <volume>."
vacuum,cleaning,Is the <device_name> vacuum running right now?,The vacuum is running.
vacuum,cleaning,Is the <device_name> vacuum on?,It is. Your home is currently being cleaned.
vacuum,cleaning,Is <device_name> cleaning?,"Yes, <device_name> is currently vacuuming."
vacuum,cleaning,What is the <device_name> vacuum doing right now?,The <device_name> vacuum is currently cleaning the house.
vacuum,cleaning,What is <device_name> doing right now?,<device_name> is currently cleaning.
vacuum,docked,What is the <device_name> vacuum doing right now?,The <device_name> vacuum is currently docked.
vacuum,docked,What is <device_name> doing right now?,<device_name> is currently docked.
vacuum,docked,Is <device_name> on its base right now?,"Yes, <device_name> is at its base."
vacuum,docked,Where is the <device_name> vacuum?,On its dock at the moment.
vacuum,paused,What is the <device_name> vacuum doing right now?,The <device_name> vacuum is paused.
vacuum,paused,What is <device_name> doing right now?,<device_name> is paused.
vacuum,idle,What is the <device_name> vacuum doing right now?,The <device_name> vacuum is stopped.
vacuum,idle,What is <device_name> doing right now?,<device_name> is stopped.
vacuum,error,What is the <device_name> vacuum doing right now?,The <device_name> vacuum is stuck or having issues that need to be corrected.
vacuum,error,What is <device_name> doing right now?,<device_name> is stuck or having issues.
todo,1,How many items on on my <device_name> right now?,There is currently 1 item on your <device_name>.
todo,2,How many things are on the <device_name> at the moment?,There are 2 things on the <device_name> currently.
todo,3,What is the current number of items on your <device_name>?,"Yes, there are currently 3 items on your <device_name>."
todo,4,How many objects are there on the <device_name> presently?,"Yes, there are 4 objects presently on the <device_name>."
todo,5,Could you tell me how many pieces there are on the <device_name> at this time?,I can tell you that there are 5 pieces on the <device_name> at this time.
todo,6,What's the count of items on the <device_name> now?,The count of items on the <device_name> now is 6.
todo,7,How many units can be found on my <device_name> at the present moment?,You will find 7 units on my <device_name> at the present moment.
todo,8,Could you inform me as to how many articles are located on the <device_name> right now?,I'd be happy to inform you that there are 8 articles located on the <device_name> right now.
todo,9,Is it possible for you to disclose how many components there are on the <device_name> currently?,It is possible for me to disclose that there are 9 components on the <device_name> currently.
todo,10,May I ask for the quantity of items on the <device_name> at present?,The quantity of items on the <device_name> is currently 10.
todo,11,Would you be able to tell me how many things there are on the <device_name> now?,"Yes, I can tell you that there are 11 things on the <device_name> now."
todo,12,Can you enlighten me as to the number of items on the <device_name>?,I'd be pleased to enlighten you that there are 12 items on the <device_name>.
timer,active;<duration>;<remaining>,How much time left on the <device_name>?,The <device_name> is set for <duration>. There is currently <remaining> remaining.
timer,active;<duration>;<remaining>,How long before the <device_name> goes off?,The <device_name> will go off in <remaining>.
timer,active;<duration>;<remaining>,When is the <device_name> set to go off?,The <device_name> is set for <duration> and will go off in <remaining>.
1 device_type state english_phrase assistant_response
241 media_player playing;<media>;<volume> What's on <device_name> at the moment? <device_name> is currently playing <media> at volume <volume>.
242 media_player paused;<media>;<volume> I forgot what I paused on <device_name>, can you remind me? You paused <media> on <device_name>, and the volume is set to <volume>.
243 media_player idle;<volume> Is <device_name> turned off or on? <device_name> is on but idle, with volume at <volume>.
244 media_player playing;<media>;<volume> I'd like to know what's playing on <device_name>. Currently, <media> is playing on <device_name> at volume level <volume>.
245 vacuum cleaning Is the <device_name> vacuum running right now? The vacuum is running.
246 vacuum cleaning Is the <device_name> vacuum on? It is. Your home is currently being cleaned.
247 vacuum cleaning Is <device_name> cleaning? Yes, <device_name> is currently vacuuming.
248 vacuum cleaning What is the <device_name> vacuum doing right now? The <device_name> vacuum is currently cleaning the house.
249 vacuum cleaning What is <device_name> doing right now? <device_name> is currently cleaning.
250 vacuum docked What is the <device_name> vacuum doing right now? The <device_name> vacuum is currently docked.
251 vacuum docked What is <device_name> doing right now? <device_name> is currently docked.
252 vacuum docked Is <device_name> on its base right now? Yes, <device_name> is at its base.
253 vacuum docked Where is the <device_name> vacuum? On its dock at the moment.
254 vacuum paused What is the <device_name> vacuum doing right now? The <device_name> vacuum is paused.
255 vacuum paused What is <device_name> doing right now? <device_name> is paused.
256 vacuum idle What is the <device_name> vacuum doing right now? The <device_name> vacuum is stopped.
257 vacuum idle What is <device_name> doing right now? <device_name> is stopped.
258 vacuum error What is the <device_name> vacuum doing right now? The <device_name> vacuum is stuck or having issues that need to be corrected.
259 vacuum error What is <device_name> doing right now? <device_name> is stuck or having issues.
260 todo 1 How many items on on my <device_name> right now? There is currently 1 item on your <device_name>.
261 todo 2 How many things are on the <device_name> at the moment? There are 2 things on the <device_name> currently.
262 todo 3 What is the current number of items on your <device_name>? Yes, there are currently 3 items on your <device_name>.
263 todo 4 How many objects are there on the <device_name> presently? Yes, there are 4 objects presently on the <device_name>.
264 todo 5 Could you tell me how many pieces there are on the <device_name> at this time? I can tell you that there are 5 pieces on the <device_name> at this time.
265 todo 6 What's the count of items on the <device_name> now? The count of items on the <device_name> now is 6.
266 todo 7 How many units can be found on my <device_name> at the present moment? You will find 7 units on my <device_name> at the present moment.
267 todo 8 Could you inform me as to how many articles are located on the <device_name> right now? I'd be happy to inform you that there are 8 articles located on the <device_name> right now.
268 todo 9 Is it possible for you to disclose how many components there are on the <device_name> currently? It is possible for me to disclose that there are 9 components on the <device_name> currently.
269 todo 10 May I ask for the quantity of items on the <device_name> at present? The quantity of items on the <device_name> is currently 10.
270 todo 11 Would you be able to tell me how many things there are on the <device_name> now? Yes, I can tell you that there are 11 things on the <device_name> now.
271 todo 12 Can you enlighten me as to the number of items on the <device_name>? I'd be pleased to enlighten you that there are 12 items on the <device_name>.
272 timer active;<duration>;<remaining> How much time left on the <device_name>? The <device_name> is set for <duration>. There is currently <remaining> remaining.
273 timer active;<duration>;<remaining> How long before the <device_name> goes off? The <device_name> will go off in <remaining>.
274 timer active;<duration>;<remaining> When is the <device_name> set to go off? The <device_name> is set for <duration> and will go off in <remaining>.

View File

@@ -0,0 +1,4 @@
persona,prompt
assistant,"You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only."
pirate,"You are 'Blackbeard', a helpful AI Assistant that controls the devices in a house but sounds like a pirate. Complete the following task as instructed or answer the following question with the information provided only. Your response should always sound like you are a pirate."
robot,"You are 'Robo', a helpful AI Robot that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only. Your response should be robotic and always begin with 'Beep-Boop'."
1 persona prompt
2 assistant You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
3 pirate You are 'Blackbeard', a helpful AI Assistant that controls the devices in a house but sounds like a pirate. Complete the following task as instructed or answer the following question with the information provided only. Your response should always sound like you are a pirate.
4 robot You are 'Robo', a helpful AI Robot that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only. Your response should be robotic and always begin with 'Beep-Boop'.

View File

@@ -1,223 +1,265 @@
device_type,service,english_phrase,assistant_response,multiplier
blinds,close,Close the <device_name>,Closing <device_name> for you,1
blinds,close,Lower the <device_name>,Lowering <device_name> now,1
blinds,close,Shut the <device_name>,Shutting <device_name> as requested,1
blinds,open,Lift the <device_name> blinds,Lifting <device_name> blinds as requested,1
blinds,open,Open the <device_name>,Opening <device_name> now,1
blinds,open,Raise the <device_name>,Raising <device_name> for you,1
blinds,stop,Freeze the <device_name>,Freezing <device_name> position,1
blinds,stop,Halt the <device_name>,Halting <device_name> now,1
blinds,stop,Stop the <device_name>,Stopping <device_name> operation,1
blinds,toggle,Flip the <device_name> state,Flipping <device_name> state now,1
blinds,toggle,Switch the <device_name> state,Switching <device_name> state as requested,1
blinds,toggle,Toggle the <device_name>,Toggling <device_name> for you,1
blinds|fan,close|turn_off,Close <device_name1> and deactivate <device_name2>,Lowering <device_name1> and stopping <device_name2>,1
blinds|fan,open|increase_speed,Raise the <device_name1> and speed up the <device_name2>,Raising <device_name1> and speeding up <device_name2>,1
blinds|light,open|turn_on,Raise <device_name1> and activate <device_name2>,Raising <device_name1> and turning on <device_name2>,1
fan,decrease_speed,Decrease the <device_name> speed,Reducing speed of <device_name>,1
fan,decrease_speed,Lower the <device_name> speed,Lowering speed of <device_name> as requested,1
fan,decrease_speed,Slow down the <device_name>,Slowing down <device_name> for you,1
fan,increase_speed,Increase the <device_name> speed,Increasing speed of <device_name>,1
fan,increase_speed,Ramp up the <device_name> speed,Ramping up <device_name> speed now,1
fan,increase_speed,Speed up the <device_name>,Speeding up <device_name> for you,1
fan,toggle,Flip the <device_name> on or off,Flipping <device_name> state for you,1
fan,toggle,Switch the <device_name> state,Switching <device_name> state as requested,1
fan,toggle,Toggle the <device_name>,Toggling <device_name> now,1
fan,turn_off,Deactivate the <device_name>,Deactivating <device_name> as requested,1
fan,turn_off,Stop the <device_name> please,Stopping <device_name> for you,1
fan,turn_off,Turn off the <device_name>,"Certainly, stopping <device_name>",1
fan,turn_on,Activate the <device_name>,Activating <device_name> now,1
fan,turn_on,Please start the <device_name>,Starting <device_name> for you,1
fan,turn_on,Turn on the <device_name>,"Certainly, starting <device_name>",1
fan|blinds,turn_off|open,Turn off <device_name1> and open <device_name2>,Stopping <device_name1> and raising <device_name2>,1
fan|blinds|garage_door,increase_speed|open|open,Speed up <device_name1> open <device_name2> and <device_name3>,Ramping up <device_name1> and lifting <device_name2> and <device_name3>,1
fan|blinds|light,decrease_speed|open|turn_off,Slow down <device_name1> open <device_name2> and turn off <device_name3>,Reducing speed of <device_name1> opening <device_name2> and deactivating <device_name3>,1
fan|blinds|light,turn_off|close|turn_on,Turn off <device_name1> close <device_name2> and turn on <device_name3>,Deactivating <device_name1> lowering <device_name2> and switching on <device_name3>,1
fan|fan,increase_speed|decrease_speed,Speed up <device_name1> and slow down <device_name2>,Increasing speed of <device_name1> and reducing <device_name2>,1
fan|fan,turn_on|turn_off,Turn on <device_name1> and turn off <device_name2>,Starting <device_name1> and stopping <device_name2>,1
fan|garage_door,increase_speed|close,Increase speed of <device_name1> and close <device_name2>,Speeding up <device_name1> and shutting <device_name2>,1
fan|garage_door|blinds,increase_speed|close|open,Speed up <device_name1> close <device_name2> and open <device_name3>,Increasing speed of <device_name1> shutting <device_name2> and raising <device_name3>,1
fan|garage_door|blinds,turn_on|close|close,Turn on <device_name1> close <device_name2> and <device_name3>,Starting <device_name1> and shutting <device_name2> and <device_name3>,1
fan|garage_door|light,turn_off|close|turn_off,Turn off <device_name1> and <device_name3> and close <device_name2>,Stopping <device_name1> and deactivating <device_name3> and lowering <device_name2>,1
fan|garage_door|lock,turn_off|close|lock,Turn off <device_name1> close <device_name2> and lock <device_name3>,Stopping <device_name1> closing <device_name2> and locking <device_name3>,1
fan|garage_door|lock,turn_on|open|unlock,Turn on <device_name1> open <device_name2> and unlock <device_name3>,Starting <device_name1> lifting <device_name2> and unlocking <device_name3>,1
fan|light,turn_on|turn_off,Activate <device_name1> and deactivate <device_name2>,Activating <device_name1> and turning off <device_name2>,1
fan|light|lock,decrease_speed|toggle|lock,Slow down <device_name1> toggle <device_name2> and lock <device_name3>,Reducing speed of <device_name1> flipping <device_name2> and securing <device_name3>,1
fan|lock,decrease_speed|unlock,Slow down the <device_name1> and unlock the <device_name2>,Slowing down <device_name1> and unlocking <device_name2>,1
garage_door,close,Close the <device_name>,Closing <device_name> now,1
garage_door,close,Lower the <device_name>,Lowering <device_name> for you,1
garage_door,close,Shut the <device_name>,Shutting <device_name> as requested,1
garage_door,open,Lift the <device_name>,Lifting <device_name> for you,1
garage_door,open,Open the <device_name>,Opening <device_name> now,1
garage_door,open,Raise the <device_name>,Raising <device_name> as requested,1
garage_door,stop,Freeze the <device_name>,Freezing <device_name> position now,1
garage_door,stop,Halt the <device_name>,"Certainly, halting <device_name>",1
garage_door,stop,Stop the <device_name>,Halting <device_name> operation,1
garage_door,toggle,Flip the <device_name> state,Flipping <device_name> state now,1
garage_door,toggle,Switch the <device_name> state,Switching <device_name> state as requested,1
garage_door,toggle,Toggle the <device_name>,Toggling <device_name> for you,1
garage_door|blinds,open|open,Open the <device_name1> and lift the <device_name2>,Opening <device_name1> and lifting <device_name2>,1
garage_door|fan,close|turn_off,Close <device_name1> and deactivate <device_name2>,Shutting <device_name1> and deactivating <device_name2>,1
garage_door|light,open|turn_on,Open <device_name1> and activate <device_name2>,Opening <device_name1> and switching on <device_name2>,1
garage_door|lock,open|unlock,Open <device_name1> and unlock <device_name2>,Opening <device_name1> and unlocking <device_name2>,1
light,toggle,Flip the <device_name> on or off,Flipping the <device_name> state,1
light,toggle,Switch the <device_name> state,Switching <device_name> state as requested,1
light,toggle,Toggle the <device_name> state,Toggling <device_name> for you,1
light,turn_off,Deactivate the <device_name>,Deactivating <device_name> as requested,1
light,turn_off,Please switch off the <device_name>,Switching off <device_name> now,1
light,turn_off,Turn off the <device_name>,"Sure, turning off <device_name>",1
light,turn_on,Activate the <device_name>,Activation of <device_name> in progress,1
light,turn_on,Can you turn on the <device_name>?,"Certainly, turning on <device_name> now",1
light,turn_on,Please switch on the <device_name>,Switching on <device_name> for you,1
light|blinds,turn_off|close,Turn off <device_name1> and close <device_name2>,Deactivating <device_name1> and closing <device_name2>,1
light|blinds|fan,turn_on|close|decrease_speed,Turn on <device_name1> close <device_name2> and slow down <device_name3>,Switching on <device_name1> lowering <device_name2> and reducing speed of <device_name3>,1
light|blinds|garage_door,turn_on|open|close,Turn on <device_name1> open <device_name2> and close <device_name3>,Switching on <device_name1> raising <device_name2> and shutting <device_name3>,1
light|blinds|lock,turn_off|close|lock,"Turn off the <device_name1> close the <device_name2> and lock the <device_name3>","Turning off <device_name1> closing <device_name2> and locking <device_name3>",1
light|blinds|lock,turn_off|close|unlock,Turn off <device_name1> close <device_name2> and unlock <device_name3>,Deactivating <device_name1> closing <device_name2> and unlocking <device_name3>,1
light|fan,toggle|decrease_speed,Toggle <device_name1> and slow down <device_name2>,Toggling <device_name1> and reducing speed of <device_name2>,1
light|fan,toggle|increase_speed,Toggle <device_name1> and speed up <device_name2>,Toggling <device_name1> and increasing speed of <device_name2>,1
light|fan,turn_off|turn_on,Turn off the <device_name1> and turn on <device_name2>,Turning off <device_name1> and starting <device_name2>,1
light|fan,turn_on|toggle,Switch on <device_name1> and toggle <device_name2>,Activating <device_name1> and toggling <device_name2>,1
light|fan,turn_on|turn_off,Turn on the <device_name1> and turn off the <device_name2>,Turning on <device_name1> and turning off <device_name2>,1
light|fan,turn_on|turn_on,Turn on both the <device_name1> and <device_name2>,Turning on both <device_name1> and <device_name2>,1
light|fan,turn_on|turn_on,Turn on the <device_name1> and <device_name2>,Turning on <device_name1> and <device_name2>,1
light|fan|blinds,toggle|increase_speed|open,Toggle <device_name1> speed up <device_name2> and open <device_name3>,Flipping <device_name1> ramping up <device_name2> and lifting <device_name3>,1
light|fan|blinds,turn_off|decrease_speed|close,Turn off <device_name1> slow down <device_name2> and close <device_name3>,Switching off <device_name1> reducing speed of <device_name2> and lowering <device_name3>,1
light|fan|blinds,turn_off|turn_off|close,Turn off <device_name1> and <device_name2> and close <device_name3>,Deactivating <device_name1> and <device_name2> and lowering <device_name3>,1
light|fan|garage_door,toggle|decrease_speed|open,Toggle <device_name1> slow down <device_name2> and open <device_name3>,Toggling <device_name1> reducing speed of <device_name2> and opening <device_name3>,1
light|fan|garage_door,turn_off|turn_on|close,Turn off <device_name1> turn on <device_name2> and close <device_name3>,Switching off <device_name1> activating <device_name2> and shutting <device_name3>,1
light|fan|garage_door,turn_on|toggle|open,"Switch on the <device_name1> flip the <device_name2> and lift the <device_name3>","Switching on <device_name1> flipping <device_name2> and lifting <device_name3>",1
light|fan|garage_door,turn_on|turn_on|open,Turn on <device_name1> and <device_name2> and open <device_name3>,Activating <device_name1> and <device_name2> and opening <device_name3>,1
light|fan|lock,toggle|toggle|lock,Toggle both <device_name1> and <device_name2> and lock <device_name3>,Toggling <device_name1> and <device_name2> and securing <device_name3>,1
light|fan|lock,turn_off|turn_off|unlock,Turn off <device_name1> and <device_name2> and unlock <device_name3>,Deactivating <device_name1> and <device_name2> and unsecuring <device_name3>,1
light|fan|lock,turn_on|increase_speed|lock,Turn on <device_name1> speed up <device_name2> and lock <device_name3>,Switching on <device_name1> increasing speed of <device_name2> and locking <device_name3>,1
light|fan|lock,turn_on|turn_on|unlock,Turn on both <device_name1> and <device_name2> and unlock <device_name3>,Activating <device_name1> and <device_name2> and unsecuring <device_name3>,1
light|garage_door,toggle|stop,Toggle the <device_name1> and stop the <device_name2>,Toggling <device_name1> and stopping <device_name2>,1
light|garage_door,turn_on|open,Switch on <device_name1> and open <device_name2>,Activating <device_name1> and opening <device_name2>,1
light|garage_door,turn_on|open,Switch on the <device_name1> and open the <device_name2>,Switching on <device_name1> and opening <device_name2>,1
light|garage_door|lock,turn_on|open|lock,Turn on <device_name1> open <device_name2> and lock <device_name3>,Activating <device_name1> lifting <device_name2> and locking <device_name3>,1
light|light,toggle|toggle,Toggle both <device_name1> and <device_name2>,Toggling <device_name1> and <device_name2>,1
light|light,turn_on|turn_off,Turn on <device_name1> and turn off <device_name2>,Turning on <device_name1> and deactivating <device_name2>,1
light|light|fan,toggle|toggle|decrease_speed,Toggle both <device_name1> and <device_name2> and slow down <device_name3>,Flipping <device_name1> and <device_name2> and reducing speed of <device_name3>,1
light|light|fan,toggle|turn_on|increase_speed,Toggle <device_name1> turn on <device_name2> and speed up <device_name3>,Flipping <device_name1> activating <device_name2> and speeding up <device_name3>,1
light|light|fan,turn_on|turn_off|toggle,Turn on <device_name1> turn off <device_name2> and toggle <device_name3>,Activating <device_name1> deactivating <device_name2> and toggling <device_name3>,1
light|lock,turn_on|lock,Turn on <device_name1> and lock <device_name2>,Activating <device_name1> and locking <device_name2>,1
lock,lock,Engage the <device_name> lock,Engaging lock on <device_name>,1
lock,lock,Lock the <device_name>,Locking <device_name> now,1
lock,lock,Secure the <device_name>,Securing <device_name> for you,1
lock,unlock,Disengage the <device_name> lock,Disengaging lock on <device_name>,1
lock,unlock,Unlock the <device_name>,Unlocking <device_name> now,1
lock,unlock,Unsecure the <device_name>,Unsecuring <device_name> for you,1
lock|blinds,lock|close,Lock the <device_name1> and lower the <device_name2>,Locking <device_name1> and lowering <device_name2>,1
lock|garage_door,lock|close,Secure the <device_name1> and shut the <device_name2>,Securing <device_name1> and shutting <device_name2>,1
light,turn_on,Make sure the <device_name> is on,Turning on <device_name>,1
fan,turn_on,Make sure the <device_name> is on,Turning on <device_name>,1
lock|lock|garage_door,lock|lock|close,Make sure <device_name1> and <device_name2> are locked and the <device_name3> is closed,Sure. Locking <device_name1> and <device_name2> and closing <device_name3>,1
light,turn_off,Ensure the <device_name> is off,Turning off <device_name>,1
fan,turn_off,Ensure the <device_name> is off,Turning off <device_name>,1
garage_door,close,Make certain the <device_name> is closed,Closing <device_name>,1
blinds,open,See to it that the <device_name> are open,Raising <device_name>,1
lock,lock,Ensure <device_name> is secure,Locking <device_name>,1
light,toggle,Can you flip the <device_name>,Toggling <device_name>,1
fan,increase_speed,Step up the speed of the <device_name>,Increasing speed of <device_name>,1
garage_door,open,Make certain the <device_name> is open,Opening <device_name>,1
blinds,close,See to it that the <device_name> are closed,Lowering <device_name>,1
lock,unlock,Make sure <device_name> is unlocked,Unlocking <device_name>,1
fan,decrease_speed,Slow down the <device_name>,Reducing speed of <device_name>,1
light,turn_on,Confirm that the <device_name> is on,Activating <device_name>,1
garage_door,stop,Stop the <device_name> right now,Stopping <device_name>,1
light,turn_off,Confirm that the <device_name> is off,Deactivating <device_name>,1
garage_door,toggle,Toggle the <device_name> position,Toggling <device_name>,1
blinds,toggle,Switch the state of the <device_name>,Toggling <device_name>,1
lock,lock,Lock down the <device_name>,Securing <device_name>,1
fan,turn_on,Make certain the <device_name> is running,Starting <device_name>,1
switch,turn_on,"Can you turn on <device_name>?","Turning on <device_name> now.",1
switch,turn_off,"Please switch off <device_name>.","Switching off <device_name>.",1
switch,toggle,"Could you toggle <device_name>?","Toggling <device_name>.",1
switch,turn_on,"I need <device_name> on, please.","I'm turning on <device_name>.",1
switch,turn_off,"Turn off <device_name>, will you?","Turning off <device_name>.",1
switch,toggle,"Can <device_name> be toggled?","Yes, toggling <device_name>.",1
switch,turn_on,"Activate <device_name>.","Activating <device_name>.",1
switch,turn_off,"Deactivate <device_name>.","Deactivating <device_name>.",1
switch,toggle,"Is it possible to toggle the <device_name>?","Yes, I can toggle <device_name>.",1
switch,turn_on,"Let's have <device_name> on.","Sure, turning <device_name> on.",1
switch,turn_off,"We don't need <device_name> on anymore.","Okay, turning <device_name> off.",1
switch,toggle,"Toggle <device_name> for me.","Toggling <device_name> as requested.",1
switch,turn_on,"Switch on <device_name>, please.","Switching on <device_name> right away.",1
switch,turn_off,"I'd like <device_name> off now.","Okay, I'm turning off <device_name>.",1
switch,toggle,"Can you change the state of <device_name>?","Changing the state of <device_name>.",1
switch,turn_on,"Please turn on <device_name>.","Sure, lighting up <device_name> now.",1
switch,turn_off,"Shut off <device_name>, it's bedtime.","Shutting off <device_name> for bedtime.",1
switch,toggle,"A quick toggle of <device_name>, please.","Quickly toggling <device_name>.",1
switch,turn_on,"<device_name> needs to be on.","Turning <device_name> on as needed.",1
switch,turn_off,"Time to turn <device_name> off.","Turning off <device_name> now.",1
media_player,volume_up,"Increase the volume on <device_name>.","Increasing <device_name>'s volume.",1
media_player,volume_up,"Turn up <device_name> a bit.","Turning up <device_name> a bit.",1
media_player,volume_up,"Louder on <device_name>, please.","Making <device_name> louder.",1
media_player,volume_down,"Can you lower <device_name>'s volume?","Lowering <device_name>'s volume.",1
media_player,volume_down,"Decrease the volume on <device_name>.","Decreasing <device_name>'s volume.",1
media_player,volume_down,"Turn down <device_name>, please.","Turning down <device_name>.",1
media_player,volume_mute,"Mute <device_name>, please.","Muting <device_name>.",1
media_player,volume_mute,"Silence <device_name> for a moment.","Silencing <device_name>.",1
media_player,volume_mute,"Can you mute <device_name>?","Muting <device_name> now.",1
media_player,media_play,"Start playing on <device_name>.","Starting playback on <device_name>.",1
media_player,media_play,"Can you play <device_name>?","Playing <device_name> now.",1
media_player,media_play,"Play the media on <device_name>, please.","Playing media on <device_name>.",1
media_player,media_pause,"Pause <device_name>.","Pausing <device_name>.",1
media_player,media_pause,"Can you pause <device_name>?","Pausing <device_name> now.",1
media_player,media_pause,"Hold the playback on <device_name>, please.","Holding playback on <device_name>.",1
media_player,media_stop,"Stop <device_name> completely.","Stopping <device_name> completely.",1
media_player,media_stop,"Can you stop playback on <device_name>?","Stopping playback on <device_name>.",1
media_player,media_stop,"End the session on <device_name>, please.","Ending session on <device_name>.",1
media_player,media_next_track,"Next track on <device_name>, please.","Skipping to next track on <device_name>.",1
media_player,media_next_track,"Advance <device_name> to the next song.","Advancing to the next song on <device_name>.",1
media_player,media_next_track,"Skip this track on <device_name>.","Skipping this track on <device_name>.",1
media_player,media_previous_track,"Previous track on <device_name>, please.","Going back to previous track on <device_name>.",1
media_player,media_previous_track,"Rewind to the previous song on <device_name>.","Rewinding to the previous song on <device_name>.",1
media_player,media_previous_track,"Can we go back a track on <device_name>?","Going back a track on <device_name>.",1
climate,set_temperature,"Set the temperature to <temp_f> degrees.","Setting temperature to <temp_f> degrees.",8
climate,set_temperature,"Can you change the temperature to <temp_c> Celsius?","Changing temperature to <temp_c> Celsius.",8
climate,set_temperature,"I'd like the room at <temp_f> degrees Fahrenheit, please.","Setting the room to <temp_f> degrees Fahrenheit.",8
climate,set_temperature,"Please adjust the temperature to <temp_f> degrees.","Adjusting temperature to <temp_f> degrees Fahrenheit.",8
climate,set_temperature,"I want the room cooler, set it to <temp_c> degrees.","Setting the room to <temp_c> degrees Celsius for cooler temperature.",8
climate,set_temperature,"Make it warmer, set temperature at <temp_f> degrees.","Making it warmer, setting temperature to <temp_f> degrees.",8
climate,set_temperature,"Can you lower the temperature to <temp_c>?","Lowering the temperature to <temp_c> Celsius.",8
climate,set_temperature,"Raise the temperature to <temp_f> degrees, please.","Raising the temperature to <temp_f> degrees Fahrenheit.",8
climate,set_humidity,"Increase the humidity to <temp_c>.","Increasing humidity to <temp_c>.",8
climate,set_humidity,"Set the humidity level to <humidity> percent.","Setting humidity to <humidity> percent.",8
climate,set_humidity,"Can you adjust the humidity to <humidity> percent?","Adjusting humidity to <humidity>%.",8
climate,set_fan_mode,"Set the fan to high speed.","Setting the fan to high speed.",8
climate,set_fan_mode,"Please put the fan on low.","Putting the fan on low.",8
climate,set_fan_mode,"Change the fan setting to medium.","Changing the fan to medium setting.",8
climate,set_hvac_mode,"Switch the system to cooling mode.","Switching to cooling mode.",8
climate,set_hvac_mode,"Can we set the HVAC to heat?","Setting the HVAC to heat.",8
climate,set_hvac_mode,"Change the HVAC to automatic.","Changing HVAC to automatic mode.",8
light,turn_on,"Set the brightness of <device_name> to <brightness>%.","Setting the brightness of <device_name> to <brightness>%.",8
light,turn_on,"Dim <device_name> to <brightness> percent brightness.","Dimming <device_name> to <brightness>% brightness.",8
light,turn_on,"Brighten <device_name> to <brightness>.","Brightening <device_name> to <brightness>%.",8
light,turn_on,"Adjust <device_name> brightness to <brightness>.","Adjusting <device_name> brightness to <brightness>.",8
light,turn_on,"Increase <device_name>'s brightness to <brightness>.","Increasing <device_name>'s brightness to <brightness>.",8
light,turn_on,"Lower the brightness of <device_name> to <brightness>.","Lowering the brightness of <device_name> to <brightness>.",8
light,turn_on,"Can you set <device_name>'s brightness level to <brightness> percent?","Setting <device_name>'s brightness level to <brightness>%.",8
light,turn_on,"I'd like <device_name> at <brightness> percent brightness, please.","Setting <device_name> to <brightness>% brightness.",8
light,turn_on,"Can you make <device_name> <color>?","Turning <device_name> <color>.",8
light,turn_on,"Change the color of <device_name> to <color>.","Changing the color of <device_name> to <color>.",8
light,turn_on,"Change <device_name> to a <color> hue.","Changing <device_name> to a <color> hue.",8
light,turn_on,"Set <device_name> to be <color>.","Setting <device_name> to be <color>.",8
light,turn_on,"I want <device_name> to be <color>, please.","Setting <device_name> to be <color>.",8
light,turn_on,"Can you make <device_name> shine in <color>?","Making <device_name> shine in <color>.",8
light,turn_on,"Turn <device_name> to a <color> shade.","Turning <device_name> to a <color> shade.",8
light,turn_on,"Turn <device_name> <color>.","Turning <device_name> <color>.",8
light,turn_on,"I want <device_name> at a <color> setting.","Setting <device_name> to a <color>.",8
light,turn_on,"Set <device_name> to a <color> color.","Setting <device_name> to a <color> color.",8
light,turn_on,"Please set <device_name> to a <color> color.","Setting <device_name> to a <color> color.",8
light,turn_on,"Make <device_name> glow <color>.","Making <device_name> glow <color>.",8
light,turn_on,"Could you turn <device_name> to <color>?","Turning <device_name> to <color>.",8
light,turn_on,"Please change <device_name> to <color>.","Changing <device_name> to <color>.",8
light,turn_on,"Adjust <device_name> to <color> color.","Adjusting <device_name> to <color> color.",8
light,turn_on,"Switch <device_name> color to <color>.","Switching <device_name> color to <color>.",8
light,turn_on,"Can <device_name> be <color> now?","Setting <device_name> to be <color>.",8
light,turn_on,"Let's have <device_name> in <color>.","Setting <device_name> in <color>.",8
light,turn_on,"I'd like <device_name> to change to <color>.","Changing <device_name> to <color>.",8
light,turn_on,"Can <device_name> display a <color> light?","Making <device_name> display a <color> light.",8
light,turn_on,"Set <device_name> color to <color>, please.","Setting <device_name> color to <color>.",8
device_type,service,english_phrase,multiplier
blinds,close,Close the <device_name>,1
blinds,close,Lower the <device_name>,1
blinds,close,Shut the <device_name>,1
blinds,open,Lift the <device_name> blinds,1
blinds,open,Open the <device_name>,1
blinds,open,Raise the <device_name>,1
blinds,stop,Freeze the <device_name>,1
blinds,stop,Halt the <device_name>,1
blinds,stop,Stop the <device_name>,1
blinds,toggle,Flip the <device_name> state,1
blinds,toggle,Switch the <device_name> state,1
blinds,toggle,Toggle the <device_name>,1
blinds|fan,close|turn_off,Close <device_name1> and deactivate <device_name2>,1
blinds|fan,open|increase_speed,Raise the <device_name1> and speed up the <device_name2>,1
blinds|light,open|turn_on,Raise <device_name1> and activate <device_name2>,1
fan,decrease_speed,Decrease the <device_name> speed,1
fan,decrease_speed,Lower the <device_name> speed,1
fan,decrease_speed,Slow down the <device_name>,1
fan,increase_speed,Increase the <device_name> speed,1
fan,increase_speed,Ramp up the <device_name> speed,1
fan,increase_speed,Speed up the <device_name>,1
fan,toggle,Flip the <device_name> on or off,1
fan,toggle,Switch the <device_name> state,1
fan,toggle,Toggle the <device_name>,1
fan,turn_off,Deactivate the <device_name>,1
fan,turn_off,Stop the <device_name> please,1
fan,turn_off,Turn off the <device_name>,1
fan,turn_on,Activate the <device_name>,1
fan,turn_on,Please start the <device_name>,1
fan,turn_on,Turn on the <device_name>,1
fan|blinds,turn_off|open,Turn off <device_name1> and open <device_name2>,1
fan|blinds|garage_door,increase_speed|open|open,Speed up <device_name1> open <device_name2> and <device_name3>,1
fan|blinds|light,decrease_speed|open|turn_off,Slow down <device_name1> open <device_name2> and turn off <device_name3>,1
fan|blinds|light,turn_off|close|turn_on,Turn off <device_name1> close <device_name2> and turn on <device_name3>,1
fan|fan,increase_speed|decrease_speed,Speed up <device_name1> and slow down <device_name2>,1
fan|fan,turn_on|turn_off,Turn on <device_name1> and turn off <device_name2>,1
fan|garage_door,increase_speed|close,Increase speed of <device_name1> and close <device_name2>,1
fan|garage_door|blinds,increase_speed|close|open,Speed up <device_name1> close <device_name2> and open <device_name3>,1
fan|garage_door|blinds,turn_on|close|close,Turn on <device_name1> close <device_name2> and <device_name3>,1
fan|garage_door|light,turn_off|close|turn_off,Turn off <device_name1> and <device_name3> and close <device_name2>,1
fan|garage_door|lock,turn_off|close|lock,Turn off <device_name1> close <device_name2> and lock <device_name3>,1
fan|garage_door|lock,turn_on|open|unlock,Turn on <device_name1> open <device_name2> and unlock <device_name3>,1
fan|light,turn_on|turn_off,Activate <device_name1> and deactivate <device_name2>,1
fan|light|lock,decrease_speed|toggle|lock,Slow down <device_name1> toggle <device_name2> and lock <device_name3>,1
fan|lock,decrease_speed|unlock,Slow down the <device_name1> and unlock the <device_name2>,1
garage_door,close,Close the <device_name>,1
garage_door,close,Lower the <device_name>,1
garage_door,close,Shut the <device_name>,1
garage_door,open,Lift the <device_name>,1
garage_door,open,Open the <device_name>,1
garage_door,open,Raise the <device_name>,1
garage_door,stop,Freeze the <device_name>,1
garage_door,stop,Halt the <device_name>,1
garage_door,stop,Stop the <device_name>,1
garage_door,toggle,Flip the <device_name> state,1
garage_door,toggle,Switch the <device_name> state,1
garage_door,toggle,Toggle the <device_name>,1
garage_door|blinds,open|open,Open the <device_name1> and lift the <device_name2>,1
garage_door|fan,close|turn_off,Close <device_name1> and deactivate <device_name2>,1
garage_door|light,open|turn_on,Open <device_name1> and activate <device_name2>,1
garage_door|lock,open|unlock,Open <device_name1> and unlock <device_name2>,1
light,toggle,Flip the <device_name> on or off,1
light,toggle,Switch the <device_name> state,1
light,toggle,Toggle the <device_name> state,1
light,turn_off,Deactivate the <device_name>,1
light,turn_off,Please switch off the <device_name>,1
light,turn_off,Turn off the <device_name>,1
light,turn_on,Activate the <device_name>,1
light,turn_on,Can you turn on the <device_name>?,1
light,turn_on,Please switch on the <device_name>,1
light|blinds,turn_off|close,Turn off <device_name1> and close <device_name2>,1
light|blinds|fan,turn_on|close|decrease_speed,Turn on <device_name1> close <device_name2> and slow down <device_name3>,1
light|blinds|garage_door,turn_on|open|close,Turn on <device_name1> open <device_name2> and close <device_name3>,1
light|blinds|lock,turn_off|close|lock,"Turn off the <device_name1> close the <device_name2> and lock the <device_name3>",1
light|blinds|lock,turn_off|close|unlock,Turn off <device_name1> close <device_name2> and unlock <device_name3>,1
light|fan,toggle|decrease_speed,Toggle <device_name1> and slow down <device_name2>,1
light|fan,toggle|increase_speed,Toggle <device_name1> and speed up <device_name2>,1
light|fan,turn_off|turn_on,Turn off the <device_name1> and turn on <device_name2>,1
light|fan,turn_on|toggle,Switch on <device_name1> and toggle <device_name2>,1
light|fan,turn_on|turn_off,Turn on the <device_name1> and turn off the <device_name2>,1
light|fan,turn_on|turn_on,Turn on both the <device_name1> and <device_name2>,1
light|fan,turn_on|turn_on,Turn on the <device_name1> and <device_name2>,1
light|fan|blinds,toggle|increase_speed|open,Toggle <device_name1> speed up <device_name2> and open <device_name3>,1
light|fan|blinds,turn_off|decrease_speed|close,Turn off <device_name1> slow down <device_name2> and close <device_name3>,1
light|fan|blinds,turn_off|turn_off|close,Turn off <device_name1> and <device_name2> and close <device_name3>,1
light|fan|garage_door,toggle|decrease_speed|open,Toggle <device_name1> slow down <device_name2> and open <device_name3>,1
light|fan|garage_door,turn_off|turn_on|close,Turn off <device_name1> turn on <device_name2> and close <device_name3>,1
light|fan|garage_door,turn_on|toggle|open,"Switch on the <device_name1> flip the <device_name2> and lift the <device_name3>",1
light|fan|garage_door,turn_on|turn_on|open,Turn on <device_name1> and <device_name2> and open <device_name3>,1
light|fan|lock,toggle|toggle|lock,Toggle both <device_name1> and <device_name2> and lock <device_name3>,1
light|fan|lock,turn_off|turn_off|unlock,Turn off <device_name1> and <device_name2> and unlock <device_name3>,1
light|fan|lock,turn_on|increase_speed|lock,Turn on <device_name1> speed up <device_name2> and lock <device_name3>,1
light|fan|lock,turn_on|turn_on|unlock,Turn on both <device_name1> and <device_name2> and unlock <device_name3>,1
light|garage_door,toggle|stop,Toggle the <device_name1> and stop the <device_name2>,1
light|garage_door,turn_on|open,Switch on <device_name1> and open <device_name2>,1
light|garage_door,turn_on|open,Switch on the <device_name1> and open the <device_name2>,1
light|garage_door|lock,turn_on|open|lock,Turn on <device_name1> open <device_name2> and lock <device_name3>,1
light|light,toggle|toggle,Toggle both <device_name1> and <device_name2>,1
light|light,turn_on|turn_off,Turn on <device_name1> and turn off <device_name2>,1
light|light|fan,toggle|toggle|decrease_speed,Toggle both <device_name1> and <device_name2> and slow down <device_name3>,1
light|light|fan,toggle|turn_on|increase_speed,Toggle <device_name1> turn on <device_name2> and speed up <device_name3>,1
light|light|fan,turn_on|turn_off|toggle,Turn on <device_name1> turn off <device_name2> and toggle <device_name3>,1
light|lock,turn_on|lock,Turn on <device_name1> and lock <device_name2>,1
lock,lock,Engage the <device_name> lock,1
lock,lock,Lock the <device_name>,1
lock,lock,Secure the <device_name>,1
lock,unlock,Disengage the <device_name> lock,1
lock,unlock,Unlock the <device_name>,1
lock,unlock,Unsecure the <device_name>,1
lock|blinds,lock|close,Lock the <device_name1> and lower the <device_name2>,1
lock|garage_door,lock|close,Secure the <device_name1> and shut the <device_name2>,1
light,turn_on,Make sure the <device_name> is on,1
fan,turn_on,Make sure the <device_name> is on,1
lock|lock|garage_door,lock|lock|close,Make sure <device_name1> and <device_name2> are locked and the <device_name3> is closed,1
light,turn_off,Ensure the <device_name> is off,1
fan,turn_off,Ensure the <device_name> is off,1
garage_door,close,Make certain the <device_name> is closed,1
blinds,open,See to it that the <device_name> are open,1
lock,lock,Ensure <device_name> is secure,1
light,toggle,Can you flip the <device_name>,1
fan,increase_speed,Step up the speed of the <device_name>,1
garage_door,open,Make certain the <device_name> is open,1
blinds,close,See to it that the <device_name> are closed,1
lock,unlock,Make sure <device_name> is unlocked,1
fan,decrease_speed,Slow down the <device_name>,1
light,turn_on,Confirm that the <device_name> is on,1
garage_door,stop,Stop the <device_name> right now,1
light,turn_off,Confirm that the <device_name> is off,1
garage_door,toggle,Toggle the <device_name> position,1
blinds,toggle,Switch the state of the <device_name>,1
lock,lock,Lock down the <device_name>,1
fan,turn_on,Make certain the <device_name> is running,1
switch,turn_on,"Can you turn on <device_name>?",1
switch,turn_off,"Please switch off <device_name>.",1
switch,toggle,"Could you toggle <device_name>?",1
switch,turn_on,"I need <device_name> on,1
switch,turn_off,"Turn off <device_name>,1
switch,toggle,"Can <device_name> be toggled?",1
switch,turn_on,"Activate <device_name>.",1
switch,turn_off,"Deactivate <device_name>.",1
switch,toggle,"Is it possible to toggle the <device_name>?",1
switch,turn_on,"Let's have <device_name> on.",1
switch,turn_off,"We don't need <device_name> on anymore.",1
switch,toggle,"Toggle <device_name> for me.",1
switch,turn_on,"Switch on <device_name>,1
switch,turn_off,"I'd like <device_name> off now.",1
switch,toggle,"Can you change the state of <device_name>?",1
switch,turn_on,"Please turn on <device_name>.",1
switch,turn_off,"Shut off <device_name>,1
switch,toggle,"A quick toggle of <device_name>,1
switch,turn_on,"<device_name> needs to be on.",1
switch,turn_off,"Time to turn <device_name> off.",1
media_player,volume_up,"Increase the volume on <device_name>.",1
media_player,volume_up,"Turn up <device_name> a bit.",1
media_player,volume_up,"Louder on <device_name>,1
media_player,volume_down,"Can you lower <device_name>'s volume?",1
media_player,volume_down,"Decrease the volume on <device_name>.",1
media_player,volume_down,"Turn down <device_name>,1
media_player,volume_mute,"Mute <device_name>,1
media_player,volume_mute,"Silence <device_name> for a moment.",1
media_player,volume_mute,"Can you mute <device_name>?",1
media_player,media_play,"Start playing on <device_name>.",1
media_player,media_play,"Can you play <device_name>?",1
media_player,media_play,"Play the media on <device_name>,1
media_player,media_pause,"Pause <device_name>.",1
media_player,media_pause,"Can you pause <device_name>?",1
media_player,media_pause,"Hold the playback on <device_name>,1
media_player,media_stop,"Stop <device_name> completely.",1
media_player,media_stop,"Can you stop playback on <device_name>?",1
media_player,media_stop,"End the session on <device_name>,1
media_player,media_next_track,"Next track on <device_name>,1
media_player,media_next_track,"Advance <device_name> to the next song.",1
media_player,media_next_track,"Skip this track on <device_name>.",1
media_player,media_previous_track,"Previous track on <device_name>,1
media_player,media_previous_track,"Rewind to the previous song on <device_name>.",1
media_player,media_previous_track,"Can we go back a track on <device_name>?",1
climate,set_temperature,"Set the temperature to <temp_f> degrees.",8
climate,set_temperature,"Can you change the temperature to <temp_c> Celsius?",8
climate,set_temperature,"I'd like the room at <temp_f> degrees Fahrenheit,8
climate,set_temperature,"Please adjust the temperature to <temp_f> degrees.",8
climate,set_temperature,"Can you lower the temperature to <temp_c>?",8
climate,set_temperature,"Raise the temperature to <temp_f> degrees",8
climate,set_humidity,"Increase the humidity to <humidity>.",8
climate,set_humidity,"Set the humidity level to <humidity> percent.",8
climate,set_humidity,"Can you adjust the humidity to <humidity> percent?",8
climate,set_fan_mode,"Set the climate fan to <fan_mode> speed.",8
climate,set_fan_mode,"Please put the climate fan on <fan_mode>.",8
climate,set_fan_mode,"Change the air conditioning fan to <fan_mode>.",8
climate,set_hvac_mode,"Switch the system to <hvac_mode> mode.",8
climate,set_hvac_mode,"Can we set the HVAC to <hvac_mode>?",8
climate,set_hvac_mode,"Change the HVAC to <hvac_mode>.",8
light,turn_on,"Set the brightness of <device_name> to <brightness>%.",8
light,turn_on,"Dim <device_name> to <brightness> percent brightness.",8
light,turn_on,"Brighten <device_name> to <brightness>.",8
light,turn_on,"Adjust <device_name> brightness to <brightness>.",8
light,turn_on,"Increase <device_name>'s brightness to <brightness>.",8
light,turn_on,"Lower the brightness of <device_name> to <brightness>.",8
light,turn_on,"Can you set <device_name>'s brightness level to <brightness> percent?",8
light,turn_on,"I'd like <device_name> at <brightness> percent brightness",8
light,turn_on,"Can you make <device_name> <color>?",8
light,turn_on,"Change the color of <device_name> to <color>.",8
light,turn_on,"Change <device_name> to a <color> hue.",8
light,turn_on,"Set <device_name> to be <color>.",8
light,turn_on,"I want <device_name> to be <color>"",8
light,turn_on,"Can you make <device_name> shine in <color>?",8
light,turn_on,"Turn <device_name> to a <color> shade.",8
light,turn_on,"Turn <device_name> <color>.",8
light,turn_on,"I want <device_name> at a <color> setting.",8
light,turn_on,"Set <device_name> to a <color> color.",8
light,turn_on,"Please set <device_name> to a <color> color.",8
light,turn_on,"Make <device_name> glow <color>.",8
light,turn_on,"Could you turn <device_name> to <color>?",8
light,turn_on,"Please change <device_name> to <color>.",8
light,turn_on,"Adjust <device_name> to <color> color.",8
light,turn_on,"Switch <device_name> color to <color>.",8
light,turn_on,"Can <device_name> be <color> now?",8
light,turn_on,"Let's have <device_name> in <color>.",8
light,turn_on,"I'd like <device_name> to change to <color>.",8
light,turn_on,"Can <device_name> display a <color> light?",8
light,turn_on,"Set <device_name> color to <color>",8
vacuum,start,"Start cleaning with <device_name>.",2
vacuum,start,"Begin vacuuming with <device_name>.",2
vacuum,start,"Activate <device_name> to clean.",2
vacuum,start,"Could you please start <device_name>?",2
vacuum,start,"Hey, get <device_name> going, would you?",2
vacuum,stop,"Stop <device_name>'s operation.",2
vacuum,stop,"Please halt <device_name>'s current task",2
vacuum,stop,"Please stop <device_name>",2
vacuum,stop,"Can you make <device_name> stop?",2
vacuum,stop,"Stop <device_name> from cleaning.",2
vacuum,pause,"Freeze <device_name>'s current task.",2
vacuum,pause,"Would you mind pausing <device_name> for a moment?",2
vacuum,pause,"Hey, can we put <device_name> on pause, please?",2
vacuum,pause,"Pause the <device_name> cleaning.",2
vacuum,pause,"Pause <device_name>",2
vacuum,return_to_base,"Send <device_name> back to its base.",2
vacuum,return_to_base,"Please send <device_name> back to its base, if you would.",2
vacuum,return_to_base,"Time to head home, <device_name>. Can you call it back?",2
vacuum,return_to_base,"Direct <device_name> to dock.",2
vacuum,return_to_base,"Return <device_name> to its charging station.",2
todo,add_item,"Please add <todo> to my <device_name>.",8
todo,add_item,"Can you add <todo> to the <device_name>?",8
todo,add_item,"I need <todo> added to my <device_name>.",8
todo,add_item,"Go ahead and add <todo> to the <device_name>.",8
todo,add_item,"Could you please input <todo> into my <device_name>?",8
todo,add_item,"Kindly insert <todo> onto the <device_name>.",8
todo,add_item,"May I request that <todo> be included in the <device_name>?",8
todo,add_item,"It would be much appreciated if <todo> could be put on the <device_name>.",8
todo,add_item,"Shall we append <todo> to my <device_name>?",8
todo,add_item,""Let's add <todo> to the <device_name>",8
todo,add_item,"Could you place <todo> onto my <device_name>?",8
todo,add_item,"Will you be so kind as to incorporate <todo> into the <device_name>?",8
todo,add_item,"Is it possible to include <todo> in the <device_name>?",8
todo,add_item,"Could we add <todo> to my <device_name>?",8
timer,start,"Please set my <device_name> for <duration>.",8
timer,start,"Turn on the <device_name> timer for <duration>.",8
timer,start,"Set the <device_name> for <duration>.",8
timer,start,"Start the <device_name> timer for <duration>.",8
timer,start,"Set a <duration> <device_name>.",8
timer,cancel,"Cancel the <device_name> timer.",8
timer,cancel,"Please stop my <device_name>.",8
timer,cancel,"Turn off the <device_name>.",8
timer,cancel,"Please shut off the <device_name> timer.",8
timer,cancel,"The <device_name> is no longer needed.",8
Can't render this file because it contains an unexpected character in line 138 and column 17.

View File

@@ -0,0 +1,80 @@
Finalize the monthly budget report
Schedule annual medical check-up
Organize the garage
Update resume and LinkedIn profile
Plan the family vacation
Research new investment opportunities
Start a weekly meal prep routine
Take the car for servicing
Sign up for a language course
Read a book recommended by a friend
Clean out the email inbox
Plant a vegetable garden
Call parents
Backup digital photos and documents
Donate old clothes and books
Create a new workout plan
Write a thank-you note to a mentor
Purchase birthday gifts for friends
Learn a new recipe
Set up a home office space
Pay utility bills
Buy groceries
Do the laundry
Clean the bathroom
Mow the lawn
Wash the dishes
Take out the trash
Vacuum the living room
Change bed linens
Iron clothes
Schedule dentist appointment
Replace air filters in the home
Return library books
Fill up car with gas
Pick up dry cleaning
Check smoke detector batteries
Water indoor plants
Restock household supplies
Renew vehicle registration
Drop off donations at a local charity
Update address book
Collect mail from the post office
Prepare kids' school lunches
Organize paperwork and bills
Clean out the refrigerator
Declutter the closet
Schedule pet's vet visit
Clean windows
Sweep the porch and walkway
Pay credit card bill
Reorganize the pantry
Prepare a household inventory list
Buy a birthday card for a friend
Sew buttons on a shirt
Dust furniture
Check and refill prescription medications
Call to cancel an unused subscription
Oil squeaky door hinges
Replace worn-out shoes
Shop for a new phone case
Learn to juggle three balls
Write a letter to a future self
Experiment with making homemade pasta
Start a blog about a hobby
Try a new hairstyle
Build a model airplane
Watch a documentary about space
Create a playlist for working out
Volunteer for a local community event
Research family genealogy
Practice meditation for 10 minutes daily
Explore a nearby town you've never visited
Organize a board game night
Try painting with watercolors
Learn to change a tire
Bake bread from scratch
Start a small balcony herb garden
Write a poem or short story
Go on a photography walk
Learn the basics of a new language

View File

@@ -0,0 +1,28 @@
<|im_start|>system
You are 'Al', a helpful AI Assistant that controls the devices in a house. Respond with a quick sentence to the user followed by a newline and then return one json object for each service call that will fuffill the user's request. The JSON should have the entity_id in the "target_device" field, and the service to be called in the "service_name" field. Other optional arguments are listed in the service list below.
Services: cover.close_cover(), cover.open_cover(), cover.stop_cover(), cover.toggle(), fan.decrease_speed(), fan.increase_speed(), fan.toggle(), fan.turn_off(), fan.turn_on(), cover.close_cover(), cover.open_cover(), cover.stop_cover(), cover.toggle(), light.toggle(), light.turn_off(), light.turn_on()
Devices:
light.back_lounge_warm 'Back Lounge Warm Light' = off
fan.indoor_gym 'Indoor Gym Fan' = on
fan.dyson_pure 'Dyson Pure Fan' = on
fan.nursery 'Nursery Fan' = off
light.office_1 'Office Light' = on
light.upstairs_lounge_zigbee 'Upstairs Lounge Light' = off
light.front_mancave_ge 'Front Man Cave Light' = on
light.front_lounge_ge 'Front Lounge Light' = off
cover.side_2 'Side garage door' = closed
fan.study_2 'Study fan' = off
light.christmas_tree_white 'Tree lights (white)' = off
light.christmas_tree_colors 'Tree lights (color)' = off
cover.hallway_1 'First hallway blinds' = open
cover.nursery 'Nursery Blinds' = open
light.upstairs_entryway_zwave 'Upstairs Entryway Light' = off
cover.shop 'Workshop Garage Door' = closed
light.downstairs_entryway_mqtt 'Downstairs Entryway Light' = off
cover.somfy_living 'Living Room Blinds' = closed
light.kitchen_winecellar_warm 'Kitchen Wine Cellar Warm Light' = off
light.driveway 'driveway' = off
light.shed 'Shed Light' = on<|im_end|>
<|im_start|>user
make sure both the lights on the christmas tree are on<|im_end|>
<|im_start|>assistant

View File

@@ -0,0 +1,24 @@
<|im_start|>system
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
cover.kitchen_window 'Kitchen Window' = closed
cover.hall_window 'Hall Window' = open
cover.living_room_window 'Living Room Window' = open
cover.garage_door 'Garage Door' = closed
fan.living_room_fan 'Living Room Fan' = off
fan.ceiling_fan 'Ceiling Fan' = off
fan.percentage_full_fan 'Percentage Full Fan' = off
fan.percentage_limited_fan 'Percentage Limited Fan' = off
lock.front_door 'Front Door' = locked
lock.kitchen_door 'Kitchen Door' = unlocked
lock.openable_lock 'Openable Lock' = locked
light.bed_light 'Bed Light' = off
light.ceiling_lights 'Ceiling Lights' = on;20%
light.kitchen_lights 'Kitchen Lights' = on
light.office_rgbw_lights 'Office RGBW Lights' = on
light.living_room_rgbww_lights 'Living Room RGBWW Lights' = on
light.entrance_color_white_lights 'Entrance Color + White Lights' = on<|im_end|>
<|im_start|>user
turn off the kitchen lights<|im_end|>
<|im_start|>assistant

View File

@@ -0,0 +1,22 @@
<|im_start|>system
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task ask instructed with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
media_player.bedroom 'Bedroom' = playing;Epic sax guy 10 hours;vol=100
media_player.kitchen 'Kitchen' = playing;I Wanna Be A Hippy (Flamman & Abraxas Radio Mix);vol=100
climate.ecobee 'Ecobee' = heat_cool;Auto Low
cover.kitchen_window 'Kitchen Window' = closed
cover.hall_window 'Hall Window' = open
cover.garage_door 'Garage Door' = closed
lock.front_door 'Front Door' = locked
lock.kitchen_door 'Kitchen Door' = unlocked
fan.living_room_fan 'Living Room Fan' = off
fan.ceiling_fan 'Ceiling Fan' = off
light.bed_light 'Bed Light' = off
light.ceiling_lights 'Ceiling Lights' = on;sandybrown (255, 164, 81);70%
light.kitchen_lights 'Kitchen Lights' = off
light.office_rgbw_lights 'Office RGBW Lights' = on;salmon (255, 128, 128);70%
light.living_room_rgbww_lights 'Living Room RGBWW Lights' = on;salmon (255, 127, 125);70%<|im_end|>
<|im_start|>user
set the office lights green<|im_end|>
<|im_start|>assistant

View File

@@ -0,0 +1,15 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
media_player.sony_ps_lx310bt 'Sony Bluetooth Turntable' = off
light.back_family_room_warm 'Back Family Room Warm Light' = on;darkcyan (3, 148, 139)
switch.sauna_lights 'Sauna Lights Switch' = off
switch.garage_workshop_lights 'Garage Workshop Lights Switch' = on
media_player.lounge_hi_fi_system 'Lounge Hi-Fi Audio' = off
light.upstairs_washroom_zwave 'Upstairs Washroom Light' = on
light.kitchen_pantry_cool 'Kitchen Pantry Cool Light' = on;28%
light.kitchen_windowseat_warm 'Kitchen Window Seat Warm Light' = on;59%<|endoftext|>
<|user|>
set back family room warm light to be blue.<|endoftext|>
<|assistant|>

View File

@@ -22,8 +22,7 @@ light.downstairs_entryway_mqtt 'Downstairs Entryway Light' = off
cover.somfy_living 'Living Room Blinds' = closed
light.kitchen_winecellar_warm 'Kitchen Wine Cellar Warm Light' = off
light.driveway 'driveway' = off
light.shed 'Shed Light' = on
<|im_end|>
light.shed 'Shed Light' = on<|im_end|>
<|im_start|>user
write a sonnet about the lights in my house. reference specific light names<|im_end|>
<|im_start|>assistant

View File

@@ -1,15 +0,0 @@
<|im_start|>system
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: light.toggle, light.turn_off, light.turn_on, media_player.media_next_track, media_player.media_pause, media_player.media_play, media_player.media_play_pause, media_player.media_previous_track, media_player.media_stop, media_player.toggle, media_player.turn_off, media_player.turn_on, media_player.volume_down, media_player.volume_mute, media_player.volume_up, switch.toggle, switch.turn_off, switch.turn_on
Devices:
media_player.sony_ps_lx310bt 'Sony Bluetooth Turntable' = off
light.back_family_room_warm 'Back Family Room Warm Light' = on;darkcyan (3, 148, 139)
switch.sauna_lights 'Sauna Lights Switch' = off
switch.garage_workshop_lights 'Garage Workshop Lights Switch' = on
media_player.lounge_hi_fi_system 'Lounge Hi-Fi Audio' = off
light.upstairs_washroom_zwave 'Upstairs Washroom Light' = on
light.kitchen_pantry_cool 'Kitchen Pantry Cool Light' = on;28%
light.kitchen_windowseat_warm 'Kitchen Window Seat Warm Light' = on;59%<|im_end|>
<|im_start|>user
set back family room warm light to be blue.<|im_end|>
<|im_start|>assistant

View File

@@ -0,0 +1,16 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.close_cover(), cover.open_cover(), cover.stop_cover(), cover.toggle(), climate.set_fan_mode(fan_mode), climate.set_humidity(humidity), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_temperature(temperature), climate.toggle(), climate.turn_off(), climate.turn_on(), fan.decrease_speed(), fan.increase_speed(), fan.toggle(), fan.turn_off(), fan.turn_on(), light.toggle(), light.turn_off(), light.turn_on(brightness,rgb_color), lock.lock(), lock.unlock(), media_player.media_next_track(), media_player.media_pause(), media_player.media_play(), media_player.media_play_pause(), media_player.media_previous_track(), media_player.media_stop(), media_player.toggle(), media_player.turn_off(), media_player.turn_on(), media_player.volume_down(), media_player.volume_mute(), media_player.volume_up(), switch.toggle(), switch.turn_off(), switch.turn_on()
Devices:
climate.kono_thermostat 'Kono Smart Thermostat' = cool;On Low;63F
switch.pool_area_lighting 'Pool area lighting control' = off
media_player.echo_dot 'Kitchen Echo Dot' = off
cover.hallway_2 'Second hallway blinds' = open
fan.garage 'Garage Fan' = on
media_player.nursery 'Nursery Media Player' = idle;vol=0.62
light.kitchen_rack_cool 'Kitchen Rack Cool Light' = off
lock.back_door 'Backyard entry lock' = locked
light.front_corridor_homekit 'Front Corridor Light' = on;80%<|endoftext|>
<|user|>
set the front corridor light brightness to 20 percent<|endoftext|>
<|assistant|>

View File

@@ -0,0 +1,28 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.close_cover(), cover.open_cover(), cover.stop_cover(), cover.toggle(), fan.decrease_speed(), fan.increase_speed(), fan.toggle(), fan.turn_off(), fan.turn_on(), cover.close_cover(), cover.open_cover(), cover.stop_cover(), cover.toggle(), light.toggle(), light.turn_off(), light.turn_on()
Devices:
light.back_lounge_warm 'Back Lounge Warm Light' = off
fan.indoor_gym 'Indoor Gym Fan' = on
fan.dyson_pure 'Dyson Pure Fan' = on
fan.nursery 'Nursery Fan' = off
light.office_1 'Office Light' = on
light.upstairs_lounge_zigbee 'Upstairs Lounge Light' = off
light.front_mancave_ge 'Front Man Cave Light' = on
light.front_lounge_ge 'Front Lounge Light' = off
cover.side_2 'Side garage door' = closed
fan.study_2 'Study fan' = off
light.christmas_tree_white 'Tree lights (white)' = off
light.christmas_tree_colors 'Tree lights (color)' = off
cover.hallway_1 'First hallway blinds' = open
cover.nursery 'Nursery Blinds' = open
light.upstairs_entryway_zwave 'Upstairs Entryway Light' = off
cover.shop 'Workshop Garage Door' = closed
light.downstairs_entryway_mqtt 'Downstairs Entryway Light' = off
cover.somfy_living 'Living Room Blinds' = closed
light.kitchen_winecellar_warm 'Kitchen Wine Cellar Warm Light' = off
light.driveway 'driveway' = off
light.shed 'Shed Light' = on<|endoftext|>
<|user|>
make sure both the lights on the christmas tree are on<|endoftext|>
<|assistant|>

View File

@@ -0,0 +1,18 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: climate.set_fan_mode, climate.set_humidity, climate.set_hvac_mode, climate.set_preset_mode, climate.set_temperature, climate.toggle, climate.turn_off, climate.turn_on, light.toggle, light.turn_off, light.turn_on, media_player.media_next_track, media_player.media_pause, media_player.media_play, media_player.media_play_pause, media_player.media_previous_track, media_player.media_stop, media_player.toggle, media_player.turn_off, media_player.turn_on, media_player.volume_down, media_player.volume_mute, media_player.volume_up
Devices:
media_player.kitchen_radio 'Kitchen Radio Player' = off
climate.zen_wifi_thermostat 'Zen Thermostat WiFi Edition' = auto;Auto Low;60F
light.kitchen_cupboard_cool 'Kitchen Cupboard Cool Light' = off
light.christmas_tree_white 'Tree lights (white)' = off
light.christmas_tree_colors 'Tree lights (color)' = off
cover.hallway_1 'First hallway blinds' = open
cover.nursery 'Nursery Blinds' = open
light.upstairs_entryway_zwave 'Upstairs Entryway Light' = off
cover.shop 'Workshop Garage Door' = closed
light.downstairs_entryway_mqtt 'Downstairs Entryway Light' = off
cover.somfy_living 'Living Room Blinds' = closed<|endoftext|>
<|user|>
set the temperature to 70<|endoftext|>
<|assistant|>

View File

@@ -0,0 +1,24 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
cover.kitchen_window 'Kitchen Window' = closed
cover.hall_window 'Hall Window' = open
cover.living_room_window 'Living Room Window' = open
cover.garage_door 'Garage Door' = closed
fan.living_room_fan 'Living Room Fan' = off
fan.ceiling_fan 'Ceiling Fan' = off
fan.percentage_full_fan 'Percentage Full Fan' = off
fan.percentage_limited_fan 'Percentage Limited Fan' = off
lock.front_door 'Front Door' = locked
lock.kitchen_door 'Kitchen Door' = unlocked
lock.openable_lock 'Openable Lock' = locked
light.bed_light 'Bed Light' = off
light.ceiling_lights 'Ceiling Lights' = on;20%
light.kitchen_lights 'Kitchen Lights' = on
light.office_rgbw_lights 'Office RGBW Lights' = on
light.living_room_rgbww_lights 'Living Room RGBWW Lights' = on
light.entrance_color_white_lights 'Entrance Color + White Lights' = on<|endoftext|>
<|user|>
turn off the kitchen lights<|endoftext|>
<|assistant|>

View File

@@ -0,0 +1,22 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task ask instructed with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
media_player.bedroom 'Bedroom' = playing;Epic sax guy 10 hours;vol=100
media_player.kitchen 'Kitchen' = playing;I Wanna Be A Hippy (Flamman & Abraxas Radio Mix);vol=100
climate.ecobee 'Ecobee' = heat_cool;Auto Low
cover.kitchen_window 'Kitchen Window' = closed
cover.hall_window 'Hall Window' = open
cover.garage_door 'Garage Door' = closed
lock.front_door 'Front Door' = locked
lock.kitchen_door 'Kitchen Door' = unlocked
fan.living_room_fan 'Living Room Fan' = off
fan.ceiling_fan 'Ceiling Fan' = off
light.bed_light 'Bed Light' = off
light.ceiling_lights 'Ceiling Lights' = on;sandybrown (255, 164, 81);70%
light.kitchen_lights 'Kitchen Lights' = off
light.office_rgbw_lights 'Office RGBW Lights' = on;salmon (255, 128, 128);70%
light.living_room_rgbww_lights 'Living Room RGBWW Lights' = on;salmon (255, 127, 125);70%<|endoftext|>
<|user|>
set the office lights green<|endoftext|>
<|assistant|>

View File

@@ -1,4 +1,4 @@
<|im_start|>system
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: light.turn_on, light.turn_off, light.toggle, lock.unlock, lock.lock, lock.open, cover.open_cover, cover.close_cover, cover.set_cover_position, cover.stop_cover, cover.toggle, cover.open_cover_tilt, cover.close_cover_tilt, cover.stop_cover_tilt, cover.set_cover_tilt_position, cover.toggle_cover_tilt, fan.turn_on, fan.turn_off, fan.toggle, fan.increase_speed, fan.decrease_speed, fan.oscillate, fan.set_direction, fan.set_percentage, fan.set_preset_mode
Devices:
@@ -14,11 +14,11 @@ lock.front_door 'Front Door' = locked
lock.kitchen_door 'Kitchen Door' = unlocked
lock.openable_lock 'Openable Lock' = locked
light.bed_light 'Bed Light' = off
light.ceiling_lights 'Ceiling Lights' = on;20%
light.ceiling_lights 'Ceiling Lights' = on
light.kitchen_lights 'Kitchen Lights' = on
light.office_rgbw_lights 'Office RGBW Lights' = on
light.living_room_rgbww_lights 'Living Room RGBWW Lights' = on
light.entrance_color_white_lights 'Entrance Color + White Lights' = on<|im_end|>
<|im_start|>user
turn off the kitchen lights<|im_end|>
<|im_start|>assistant
light.entrance_color_white_lights 'Entrance Color + White Lights' = on<|endoftext|>
<|user|>
if mary is 7 years old, and I am 3 years older than her. how old am I?<|endoftext|>
<|assistant|>

View File

@@ -0,0 +1,15 @@
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.open_cover(), cover.close_cover(), cover.set_cover_position(), cover.stop_cover(), cover.toggle(), cover.open_cover_tilt(), cover.close_cover_tilt(), cover.stop_cover_tilt(), cover.set_cover_tilt_position(), cover.toggle_cover_tilt(), media_player.turn_on(), media_player.turn_off(), media_player.toggle(), media_player.volume_up(), media_player.volume_down(), media_player.media_play_pause(), media_player.media_play(), media_player.media_pause(), media_player.media_stop(), media_player.media_next_track(), media_player.media_previous_track(), media_player.clear_playlist(), media_player.volume_set(volume_level), media_player.volume_mute(), media_player.media_seek(), media_player.join(), media_player.select_source(), media_player.select_sound_mode(), media_player.play_media(), media_player.shuffle_set(), media_player.unjoin(), media_player.repeat_set(), climate.turn_on(), climate.turn_off(), climate.set_hvac_mode(), climate.set_preset_mode(), climate.set_aux_heat(), climate.set_temperature(temperature), climate.set_humidity(humidity), climate.set_fan_mode(fan_mode), climate.set_swing_mode(), lock.unlock(), lock.lock(), lock.open(), fan.turn_on(), fan.turn_off(), fan.toggle(), fan.increase_speed(), fan.decrease_speed(), fan.oscillate(), fan.set_direction(), fan.set_percentage(), fan.set_preset_mode(), light.turn_on(rgb_color,brightness), light.turn_off(), light.toggle(rgb_color,brightness)
Devices:
media_player.sony_ps_lx310bt 'Sony Bluetooth Turntable' = off
light.back_family_room_warm 'Back Family Room Warm Light' = on;darkcyan (3, 148, 139)
switch.sauna_lights 'Sauna Lights Switch' = off
switch.garage_workshop_lights 'Garage Workshop Lights Switch' = on
media_player.lounge_hi_fi_system 'Lounge Hi-Fi Audio' = off
light.upstairs_washroom_zwave 'Upstairs Washroom Light' = on
light.kitchen_pantry_cool 'Kitchen Pantry Cool Light' = on;28%
light.kitchen_windowseat_warm 'Kitchen Window Seat Warm Light' = on;59%<|endoftext|>
<|user|>
set back family room warm light to be blue.<|endoftext|>
<|assistant|>

View File

@@ -1,4 +1,4 @@
<|im_start|>system
<|system|>
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only.
Services: cover.close_cover, cover.open_cover, cover.stop_cover, cover.toggle, fan.decrease_speed, fan.increase_speed, fan.toggle, fan.turn_off, fan.turn_on, cover.close_cover, cover.open_cover, cover.stop_cover, cover.toggle, light.toggle, light.turn_off, light.turn_on
Devices:
@@ -22,7 +22,7 @@ light.downstairs_entryway_mqtt 'Downstairs Entryway Light' = off
cover.somfy_living 'Living Room Blinds' = closed
light.kitchen_winecellar_warm 'Kitchen Wine Cellar Warm Light' = off
light.driveway 'driveway' = off
light.shed 'Shed Light' = on<|im_end|>
<|im_start|>user
make sure both the lights on the christmas tree are on<|im_end|>
<|im_start|>assistant
light.shed 'Shed Light' = on<|endoftext|>
<|user|>
write a sonnet about the lights in my house. reference specific light names<|endoftext|>
<|assistant|>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

11
dist/run_docker.sh vendored
View File

@@ -1,6 +1,15 @@
#!/bin/bash
VERSION_TO_BUILD="v0.2.50"
# make python11 wheels
docker run -it --rm \
--entrypoint bash \
-v $(pwd):/tmp/dist \
homeassistant/home-assistant /tmp/dist/make_wheel.sh v0.2.38
homeassistant/home-assistant:2023.12.4 /tmp/dist/make_wheel.sh $VERSION_TO_BUILD
# make python 12 wheels
docker run -it --rm \
--entrypoint bash \
-v $(pwd):/tmp/dist \
homeassistant/home-assistant:2024.2.1 /tmp/dist/make_wheel.sh $VERSION_TO_BUILD

View File

@@ -5,7 +5,7 @@ This integration allows for full customization of the system prompt using Home A
## System Prompt Template
The default system prompt is:
```
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task ask instructed with the information provided only.
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
Services: {{ services }}
Devices:
{{ devices }}
@@ -15,6 +15,24 @@ The `services` and `devices` variables are special variables that are provided b
- `services` expands into a comma separated list of the services that correlate with the devices that have been exposed to the Voice Assistant.
- `devices` expands into a multi-line block where each line is the format `<entity_id> '<friendly_name> = <state>;<extra_attributes_to_expose>`
### Model "Persona"
The model is trained with a few different personas. They can be activated by using their system prompt found below:
Al the Assistant - Responds politely and concisely
```
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
```
Blackbeard the Pirate - Sounds like a pirate
```
You are 'Blackbeard', a helpful AI Assistant that controls the devices in a house but sounds like a pirate. Complete the following task as instructed or answer the following question with the information provided only. Your response should always sound like you are a pirate.
```
Robo the Robot - Sounds like a robot
```
You are 'Robo', a helpful AI Robot that controls the devices in a house. Complete the following task as instructed or answer the following question with the information provided only. Your response should be robotic and always begin with 'Beep-Boop'.
```
## Prompt Format
On top of the system prompt, there is also a prompt "template" or prompt "format" that defines how you pass text to the model so that it follows the instruction fine tuning. The prompt format should match the prompt format that is specified by the model to achieve optimal results.
@@ -23,4 +41,4 @@ Currently supported prompt formats are:
2. Vicuna
3. Alpaca
4. Mistral
5. None (useful for foundation models)
5. None (useful for foundation models)

36
docs/Performance.md Normal file
View File

@@ -0,0 +1,36 @@
### Performance of running the model on a Raspberry Pi
The RPI4 4GB that I have was sitting right at 1.5 tokens/sec for prompt eval and 1.6 tokens/sec for token generation when running the `Q4_K_M` quant. I was reliably getting responses in 30-60 seconds after the initial prompt processing which took almost 5 minutes. It depends significantly on the number of devices that have been exposed as well as how many states have changed since the last invocation because llama.cpp caches KV values for identical prompt prefixes.
It is highly recommend to set up text-generation-webui on a separate machine that can take advantage of a GPU.
# Home 1B V2 GGUF Q4_K_M RPI5
christmas.txt
llama_print_timings: load time = 678.37 ms
llama_print_timings: sample time = 16.38 ms / 45 runs ( 0.36 ms per token, 2747.09 tokens per second)
llama_print_timings: prompt eval time = 31356.56 ms / 487 tokens ( 64.39 ms per token, 15.53 tokens per second)
llama_print_timings: eval time = 4868.37 ms / 44 runs ( 110.64 ms per token, 9.04 tokens per second)
llama_print_timings: total time = 36265.33 ms / 531 tokens
climate.txt
llama_print_timings: load time = 613.87 ms
llama_print_timings: sample time = 20.62 ms / 55 runs ( 0.37 ms per token, 2667.96 tokens per second)
llama_print_timings: prompt eval time = 27324.34 ms / 431 tokens ( 63.40 ms per token, 15.77 tokens per second)
llama_print_timings: eval time = 5780.72 ms / 54 runs ( 107.05 ms per token, 9.34 tokens per second)
llama_print_timings: total time = 33152.48 ms / 485 tokens
# Home 3B V2 GGUF Q4_K_M RPI5
climate.txt
llama_print_timings: load time = 1179.64 ms
llama_print_timings: sample time = 19.25 ms / 52 runs ( 0.37 ms per token, 2702.00 tokens per second)
llama_print_timings: prompt eval time = 52688.82 ms / 431 tokens ( 122.25 ms per token, 8.18 tokens per second)
llama_print_timings: eval time = 10206.12 ms / 51 runs ( 200.12 ms per token, 5.00 tokens per second)
llama_print_timings: total time = 62942.85 ms / 482 tokens
sonnet.txt
llama_print_timings: load time = 1076.44 ms
llama_print_timings: sample time = 1225.34 ms / 236 runs ( 5.19 ms per token, 192.60 tokens per second)
llama_print_timings: prompt eval time = 60754.40 ms / 490 tokens ( 123.99 ms per token, 8.07 tokens per second)
llama_print_timings: eval time = 44885.82 ms / 213 runs ( 210.73 ms per token, 4.75 tokens per second)
llama_print_timings: total time = 107127.16 ms / 703 tokens

194
docs/Setup.md Normal file
View File

@@ -0,0 +1,194 @@
# Setup Instructions
1. [Home Assistant Component](#home-assistant-component)
2. [Configuring the LLM as a Conversation Agent](#configuring-as-a-conversation-agent)
3. [Setting up the text-generation-webui Addon](#text-generation-webui-add-on)
## Home Assistant Component
### Requirements
- A supported version of Home Assistant; `2023.10.0` or newer
- SSH or Samba access to your Home Assistant instance
**Optional:**
- [HACs](https://hacs.xyz/docs/setup/download/) (if you want to install it that way)
### 💾 🚕 Install the Home Assistant Component with HACs
> 🛑 ✋🏻 Requires HACs
>
> First make sure you have [HACs installed](https://hacs.xyz/docs/setup/download/)
Once you have HACs installed, this button will help you add the repository to HACS and open the download page
[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?category=Integration&repository=home-llm&owner=acon96)
**Remember to restart Home Assistant after installing the component!**
A "LLaMA Conversation" device should show up in the `Settings > Devices and Services > [Devices]` tab now:
![image](https://github.com/acon96/home-llm/assets/61225/4427e362-e443-4796-bee8-5bdda18305d0)
### 💾 🔨 Install the Home Assistant Component Manually
1. Ensure you have either the Samba, SSH, FTP, or another add-on installed that gives you access to the `config` folder
2. If there is not already a `custom_components` folder, create one now.
3. Copy the `custom_components/llama_conversation` folder from this repo to `config/custom_components/llama_conversation` on your Home Assistant machine.
4. Restart Home Assistant: `Developer Tools -> Services -> Run` : `HomeAssistant.restart`
A "LLaMA Conversation" device should show up in the `Settings > Devices and Services > [Devices]` tab now:
![image](https://github.com/acon96/home-llm/assets/61225/4427e362-e443-4796-bee8-5bdda18305d0)
### ⚙️ Configuration and Setup
You must configure at least one model by configuring the integration.
1. `Settings > Devices and Services`.
2. Click the `Add Integration` button in the bottom right of the screen.
3. Filter the list of "brand names" for llama, and "LLaMa Conversation" should remain.
4. Choose the backend you will be using to host the model:
1. Using builtin llama.cpp with hugging face
2. Using builtin llama.cpp with existing model file
3. using text-generation-webui api
4. using generic openapi compatiable api
5. using ollama api
### llama-cpp-python Wheel Installation
If you plan on running the model locally on the same hardware as your Home Assistant server, then the recommended way to run the model is to use Llama.cpp. Unfortunately there are not pre-build wheels for this package for the musllinux runtime that Home Assistant Docker images use. To get around this, we provide compatible wheels for x86_x64 and arm64 in the [dist](./dist) folder.
Download the `*.whl` file that matches your hardware and then copy the `*.whl` file to the `custom_components/llama_conversation/` folder. It will be installed as a configuration step while setting up the Home Assistant component.
| wheel | platform | home assistant version |
| --- | --- | --- |
| llama_cpp_python-{version}-cp311-cp311-musllinux_1_2_aarch64.whl | aarch64 (RPi 4 and 5) | `2024.1.4` and older |
| llama_cpp_python-{version}-cp311-cp311-musllinux_1_2_x86_64.whl | x86_64 (Intel + AMD) | `2024.1.4` and older |
| llama_cpp_python-{version}-cp312-cp312-musllinux_1_2_aarch64.whl | aarch64 (RPi 4 and 5) | `2024.2.0` and newer |
| llama_cpp_python-{version}-cp312-cp312-musllinux_1_2_x86_64.whl | x86_64 (Intel + AMD) | `2024.2.0` and newer |
### Constrained Grammar
When running the model locally with [Llama.cpp], the component also constrains the model output using a GBNF grammar.
This forces the model to provide valid output no matter what since its outputs are constrained to valid JSON every time.
This helps the model perform significantly better at lower quantization levels where it would previously generate syntax errors. It is recommended to turn this on when using the component as it will reduce the incorrect output from the model.
For more information See [output.gbnf](./custom_components/llama_conversation/output.gbnf) for the existing grammar.
### Backend Configuration
![image](https://github.com/airtonix/home-llm/assets/61225/6f5d9748-5bfc-47ce-8abc-4f07d389a73f)
When setting up the component, there are 5 different "backend" options to choose from:
a. Llama.cpp with a model from HuggingFace <--- recommended if you are lost
b. Llama.cpp with a locally provided model
c. A remote instance of text-generation-webui
d. A generic OpenAI API compatible interface; *should* be compatible with LocalAI, LM Studio, and all other OpenAI compatible backends
e. Ollama api
See [docs/Backend Configuration.md](/docs/Backend%20Configuration.md) for more info.
#### Llama.cpp Backend with a model from HuggingFace
This is option A
It is recommended to use either `acon96/Home-3B-v3-GGUF` or `acon96/Home-1B-v2-GGUF` as the model for this integration.
NOTE: if you are using `acon96/Home-3B-v3-GGUF`, you need to set the prompt template to `Zephyr` after setting up the component by configuring the model after creation.
You need the following settings to configure the local backend from HuggingFace:
1. **Model Name**: the name of the model in the form `repo/model-name`. The repo MUST contain a GGUF quantized model.
2. **Model Quantization**: The quantization level to download. Pick from the list. Higher quantizations use more RAM but have higher quality responses.
#### Llama.cpp Backend with a locally downloaded model
This is option B
Please download the model file from HuggingFace and copy it to your Home Assistant device. Recommended models are [acon96/Home-3B-v3-GGUF](https://huggingface.co/acon96/Home-3B-v3-GGUF) or [acon96/Home-1B-v2-GGUF](https://huggingface.co/acon96/Home-1B-v2-GGUF).
NOTE: if you are using `acon96/Home-3B-v3-GGUF`, you need to set the prompt template to `Zephyr` after setting up the component by configuring the model after creation.
You need the following settings to configure the local backend from HuggingFace:
1. **Model File Name**: the file name where Home Assistant can access the model to load. Most likely a sub-path of `/config` or `/media` or wherever you copied the model file to.
#### Remote Backends
This is options C, D and E
You need the following settings in order to configure the "remote" backend:
1. **Hostname**: the host of the machine where text-generation-webui API is hosted. If you are using the provided add-on then the hostname is `local-text-generation-webui` or `f459db47-text-generation-webui` depending on how the addon was installed.
2. **Port**: the port for accessing the text-generation-webui API. NOTE: this is not the same as the UI port. (Usually 5000)
3. **Name of the Model**: This name must EXACTLY match the name as it appears in `text-generation-webui`
With the remote text-generation-webui backend, the component will validate that the selected model is available for use and will ensure it is loaded remotely. The Generic OpenAI compatible version does NOT do any validation or model loading.
**Setting up with LocalAI**:
If you are an existing LocalAI user or would like to use LocalAI as your backend, please refer to [this](https://io.midori-ai.xyz/howtos/setup-with-ha/) website which has instructions on how to setup LocalAI to work with Home-LLM including automatic installation of the latest version of the the Home-LLM model. The auto-installer (LocalAI Manager) will automatically download and setup LocalAI and/or the model of your choice and automatically create the necessary template files for the model to work with this integration.
**Setting up Ollama**:
In order to use the GGUF model with Ollama:
1. Download the desired quantization level of the model from HuggingFace (see above for links)
2. Copy the following block into a `Modelfile`:
```
FROM Home-3B-v3.q4_k_m.gguf
PARAMETER num_ctx 2048
PARAMETER temperature 0.1
PARAMETER top_k 40
PARAMETER top_p 0.95
PARAMETER stop "<|endoftext|>"
PARAMETER stop "<|im_end|>"
```
3. Change the `FROM` line to match the filename of the quantized model that you downloaded
4. Create the model with Ollama
- `ollama create home-3b-v3:q4_k_m -f Modelfile`
5. Start the server
- `ollama serve`
## Configuring as a Conversation Agent
> 🛑 ✋🏻 Security Warning
>
> Any devices that you select to be exposed to the model will be added as
> context and potentially have their state changed by the model.
>
> Only expose devices that you want the model modifying the state of.
>
> The model may occasionally hallucinate and issue commands to the wrong device!
>
> Use At Your Own Risk
1. Navigate to `Settings` -> `Voice Assistants`
2. Select `+ Add Assistant`
3. Name the assistant whatever you want.
4. Select the conversation agent that we created previously.
5. If using STT or TTS configure these now
6. Return to the "Overview" dashboard and select chat icon in the top left.
7. From here you can submit queries to the AI agent.
In order for any entities be available to the agent, you must "expose" them first.
1. Navigate to "Settings" -> "Voice Assistants" -> "Expose" Tab
2. Select "+ Expose Entities" in the bottom right
3. Check any entities you would like to be exposed to the conversation agent.
> Note:
> When exposing entities to the model, you are adding tokens to the model's context. If you exceed the context length of the model, then your interactions with the model will fail due to the instructions being dropped out of the context's sliding window.
> It is recommended to only expose a maximum of 32 entities to this conversation agent at this time.
## text-generation-webui add-on
You can use this button to automatically download and build the addon for `oobabooga/text-generation-webui`
[![Open your Home Assistant instance and show the dashboard of an add-on.](https://my.home-assistant.io/badges/supervisor_addon.svg)](https://my.home-assistant.io/redirect/supervisor_addon/?addon=f459db47_text-generation-webui&repository_url=https%3A%2F%2Fgithub.com%2Facon96%2Fhome-llm)
If the automatic installation fails then you can install the addon manually using the following steps:
1. Ensure you have either the Samba, SSH, FTP, or another add-on installed that gives you access to the `addons` folder
2. Copy the `addon` folder from this repo to `addons/text-generation-webui` on your Home Assistant machine.
3. Go to the "Add-ons" section in settings and then pick the "Add-on Store" from the bottom right corner.
4. Select the 3 dots in the top right and click "Check for Updates" and Refresh the webpage.
5. There should now be a "Local Add-ons" section at the top of the "Add-on Store"
6. Install the `oobabooga-text-generation-webui` add-on. It will take ~15-20 minutes to build the image on a Raspberry Pi.
7. Copy any models you want to use to the `addon_configs/local_text-generation-webui/models` folder or download them using the UI.
8. Load up a model to use. NOTE: The timeout for ingress pages is only 60 seconds so if the model takes longer than 60 seconds to load (very likely) then the UI will appear to time out and you will need to navigate to the add-on's logs to see when the model is fully loaded.

View File

@@ -341,4 +341,4 @@ OpenOrca Slim Deduped (363k): https://huggingface.co/datasets/Open-Orca/SlimOrca
### DPO
Intel Orca DPO Pairs: https://huggingface.co/datasets/Intel/orca_dpo_pairs
Huggingface Ultrachat: https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized
Huggingface Ultrachat: https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized

View File

@@ -0,0 +1,103 @@
# StableLM 2 Zephyr 1.6B
## rev1
- 1 epoch
- 2048 train ctx
- batch size 8
- learning rate 1e-5
- weight decay 0.1
- gradient clipping 1.0
- dataset size: small
+ it honestly works not terribly and I was kinda able to get it to respond to german
+ evaluation results: 0.7108953613807982
## rev2
- dataset size: large (also rewrote how it works slightly)
+ evaluation results:
- 600: 0.7826321467098166
- 800: 0.8090614886731392
- 1000: 0.7669902912621359
- 1200: 0.7944983818770227
- 1400: 0.8176914778856527
- 1600: 0.8268608414239482
- 1800: 0.8263214670981661
- Final: 0.8274002157497303
# StableLM Zephyr 3B
## rev1
- 1 epoch
- 2048 train ctx
- batch size 8
- learning rate 1e-5
- weight decay 0.1
- gradient clipping 1.0
- lora rank: 32, alpha: 64
- accidentally forgot to turn off fine tuning of embeddings
- dataset size: large
+ evaluation results:
- 400: 0.8344
- 800: 0.9228694714131608
- 1200: 0.9401294498381877
- 1600: 0.95361380798274
- Final (1929): 0.9492988133764833
# rev2
- not fine-tuning the embeddings (no added tokens)
- dataset: new version with varied system prompts/responses (small)
+ evauluation results:
- 400: 0.6748893105629349
- 800: 0.7280202403542062
- 1200: 0.7685009487666035
- 1600: 0.7798861480075902
- Final (1967): 0.7849462365591398
+ definitely needs more data
# rev3
- lora rank: 64, alpha: 128
- dataset size: large
+ evaluation results:
- 400: 0.8785578747628083
- 800: 0.9247311827956989
- 1200: 0.9348513598987982
- 1600: 0.9222011385199241
- 2000: 0.9354838709677419
- 2400: 0.9740670461733081
- 2800: 0.9595192915876027
- 3200: 0.948134092346616
- 3600: 0.963314358001265
- 4000: 0.9614168247944339
- Final (~4200): 0.9538266919671095
# rev4
- lora rank: 64, alpha: 128
- dataset size: large (with new device types)
+ evaluation results:
- 400: 0.867914979757085
- 800: 0.9316801619433198
- 1200: 0.9215587044534413
- 1600: 0.9686234817813765
- 2000: 0.9772267206477733
- 2400: 0.9752024291497976
- 2800: 0.9802631578947368
- 3200: 0.9777327935222672
- 3600: 0.9812753036437247
- 4000: 0.979251012145749
- 4400: 0.978744939271255
- 4800: 0.9777327935222672
- Final (5234): 0.9782388663967612
+ overfit
# rev5
- lora rank: 64, alpha: 128
- dataset size: medium (with new device types)
+ evaluation results:
- 400: 0.8709514170040485
- 800: 0.9316801619433198
- 1200: 0.9544534412955465
- 1600: 0.9559716599190283
- 2000: 0.9671052631578947
- 2400: 0.9671052631578947
- 2800: 0.9701417004048583
- 3200: 0.9696356275303644
- 3600: 0.9736842105263158
- 4000: 0.9706477732793523
- Final: 0.9711538461538461

31
docs/perf.md Normal file
View File

@@ -0,0 +1,31 @@
# Home 1B V2 GGUF Q4_K_M RPI5
christmas.txt
llama_print_timings: load time = 678.37 ms
llama_print_timings: sample time = 16.38 ms / 45 runs ( 0.36 ms per token, 2747.09 tokens per second)
llama_print_timings: prompt eval time = 31356.56 ms / 487 tokens ( 64.39 ms per token, 15.53 tokens per second)
llama_print_timings: eval time = 4868.37 ms / 44 runs ( 110.64 ms per token, 9.04 tokens per second)
llama_print_timings: total time = 36265.33 ms / 531 tokens
climate.txt
llama_print_timings: load time = 613.87 ms
llama_print_timings: sample time = 20.62 ms / 55 runs ( 0.37 ms per token, 2667.96 tokens per second)
llama_print_timings: prompt eval time = 27324.34 ms / 431 tokens ( 63.40 ms per token, 15.77 tokens per second)
llama_print_timings: eval time = 5780.72 ms / 54 runs ( 107.05 ms per token, 9.34 tokens per second)
llama_print_timings: total time = 33152.48 ms / 485 tokens
# Home 3B V2 GGUF Q4_K_M RPI5
climate.txt
llama_print_timings: load time = 1179.64 ms
llama_print_timings: sample time = 19.25 ms / 52 runs ( 0.37 ms per token, 2702.00 tokens per second)
llama_print_timings: prompt eval time = 52688.82 ms / 431 tokens ( 122.25 ms per token, 8.18 tokens per second)
llama_print_timings: eval time = 10206.12 ms / 51 runs ( 200.12 ms per token, 5.00 tokens per second)
llama_print_timings: total time = 62942.85 ms / 482 tokens
sonnet.txt
llama_print_timings: load time = 1076.44 ms
llama_print_timings: sample time = 1225.34 ms / 236 runs ( 5.19 ms per token, 192.60 tokens per second)
llama_print_timings: prompt eval time = 60754.40 ms / 490 tokens ( 123.99 ms per token, 8.07 tokens per second)
llama_print_timings: eval time = 44885.82 ms / 213 runs ( 210.73 ms per token, 4.75 tokens per second)
llama_print_timings: total time = 107127.16 ms / 703 tokens

View File

@@ -4,15 +4,30 @@ import argparse, os, re, json
import torch
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from peft import PeftConfig, PeftModel
from tqdm import tqdm
CTX_SIZE = 2048
"""
python3 evaluate.py stablehome-3b-rev1/checkpoint-400 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-800 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-1200 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-1600 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-2000 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-2400 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-2800 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-3200 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-3600 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1/checkpoint-4000 --batch-size 4 --lora && \
python3 evaluate.py stablehome-3b-rev1 --batch-size 4 --lora
"""
def tokenize(tokenizer, prompt):
return tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=CTX_SIZE)
def generate(model, tokenizer, prompt):
inputs = tokenize(tokenizer, prompt)
def generate(model, tokenizer, prompts):
inputs = tokenize(tokenizer, prompts)
with torch.no_grad():
outputs = model.generate(**inputs)
text = tokenizer.batch_decode(outputs)
@@ -21,25 +36,52 @@ def generate(model, tokenizer, prompt):
def main():
parser = argparse.ArgumentParser(description="Evaluate the function calling for a model")
parser.add_argument("model")
parser.add_argument("--dataset_file", default="./data/home_assistant_test.json")
parser.add_argument("--split", default="<|im_start|>assistant")
parser.add_argument("--dataset_file", default="./data/home_assistant_test.jsonl")
parser.add_argument("--batch-size", default=8)
parser.add_argument("--lora", default=False,action='store_const', const=True)
args = parser.parse_args()
lora_folder = f"./loras/{args.model}"
model_folder = f"./models/{args.model}"
split = args.split
dataset = load_dataset("json", data_files={ "train": args.dataset_file })["train"]
print(f"Got {len(dataset)} examples to test")
# filter out examples that are status requests
dataset = dataset.filter(lambda example: "```homeassistant" in example["text"])
if "text" in dataset:
dataset = dataset.filter(lambda example: "```homeassistant" in example["text"])
else:
dataset = dataset.filter(lambda example: "```homeassistant" in example["conversations"][2]["value"])
service_call_regex = re.compile(r"```homeassistant\n([\S \t\n]*?)```")
torch.set_default_device("cuda")
print(f"Loading model from {model_folder}...")
trained_model = AutoModelForCausalLM.from_pretrained(model_folder, trust_remote_code=True, torch_dtype=torch.bfloat16) #, code_revision="834565c23f9b28b96ccbeabe614dd906b6db551a")
trained_tokenizer = AutoTokenizer.from_pretrained(model_folder, trust_remote_code=True, padding_side='left')
if args.lora:
adapter_config = PeftConfig.from_pretrained(lora_folder)
base_model_name = adapter_config.base_model_name_or_path
print(f"Loading lora from {lora_folder} ({base_model_name})...")
base_model = AutoModelForCausalLM.from_pretrained(
base_model_name,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
)
trained_tokenizer = AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True, padding_side='left')
trained_model = PeftModel.from_pretrained(base_model, lora_folder, trust_remote_code=True, torch_dtype=torch.bfloat16)
output_folder = lora_folder
else:
print(f"Loading model from {model_folder}...")
trained_model = AutoModelForCausalLM.from_pretrained(
model_folder,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
)
trained_tokenizer = AutoTokenizer.from_pretrained(model_folder, trust_remote_code=True, padding_side='left')
output_folder = model_folder
trained_model.generation_config = GenerationConfig(
max_new_tokens=128,
@@ -50,21 +92,43 @@ def main():
top_p=1.0,
repetition_penalty=1.15,
eos_token_id=trained_model.config.eos_token_id,
pad_token_id=trained_model.config.pad_token_id,
pad_token_id=trained_model.config.pad_token_id if trained_model.config.pad_token_id else trained_model.config.eos_token_id,
)
split = trained_tokenizer.apply_chat_template(conversation=[{"role": "assistant", "content": r"%%%%%%%%%%%%%%%%"}], tokenize=False).split( r"%%%%%%%%%%%%%%%%")[0]
print("Evaluating...")
batch_size = int(args.batch_size)
correct_answers = 0
total_answers = 0
color_mismatches = 0
# pre-allocate cuda buffers
inputs = trained_tokenizer([""] * batch_size, return_tensors="pt", max_length=CTX_SIZE, padding="max_length", truncation=True)
inputs = {k: v.to(trained_model.device) for k, v in inputs.items()}
with torch.no_grad():
outputs = trained_model(**inputs)
failed_examples = []
with tqdm(total=len(dataset), desc="Accuracy") as pbar:
for batch_start in range(0, len(dataset), batch_size):
batch = dataset[batch_start:batch_start + batch_size]
prompts = [ example.split(split)[0] + split for example in batch["text"] ]
expected_responses = [ example.split(split)[1] for example in batch["text"] ]
if "text" in batch:
prompts = [ example.split(split)[0] + split for example in batch["text"] ]
expected_responses = [ example.split(split)[1] for example in batch["text"] ]
else:
prompts = []
expected_responses = []
for example in batch["conversations"]:
conversation = [ { "role": x["from"], "content": x["value"] } for x in example if x["from"] != "assistant"]
prompts.append(trained_tokenizer.apply_chat_template(
conversation=conversation,
max_length=CTX_SIZE,
truncation=True,
tokenize=False,
add_generation_prompt=True,
))
expected_responses.append([x["value"] for x in example if x["from"] == "assistant"][0])
output = generate(trained_model, trained_tokenizer, prompts)
for model_output, expected_response in zip(output, expected_responses):
@@ -115,7 +179,7 @@ def main():
print(f"Final Accuracy Rating: {accuracy*100:.2f}%")
print(f"Color Mismatches: {color_mismatches}")
with open(os.path.join(model_folder, "eval_results.json"), "w") as f:
with open(os.path.join(output_folder, "eval_results.json"), "w") as f:
json.dump({
"possible_answers": total_answers,
"correct_answers": correct_answers,

View File

@@ -4,3 +4,6 @@ datasets
peft
bitsandbytes
webcolors
pandas
# flash-attn
sentencepiece

159
train.py
View File

@@ -3,16 +3,25 @@
import math
import copy
import torch
import numpy as np
import os
import random
from torch.utils.data import SequentialSampler, Subset, RandomSampler
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer, \
PreTrainedTokenizerFast, HfArgumentParser, GPTQConfig, AutoConfig
from transformers.trainer_utils import EvalPrediction
from datasets import load_dataset
from datasets import load_dataset, Dataset
from dataclasses import dataclass, field
from typing import Dict, Optional, Sequence
from typing import Dict, Optional, Sequence, Sized, Iterator
"""
Phi Modules: fc1,fc2,q_proj,v_proj,k_proj,dense,embed_tokens,lm_head
Phi Modules:
- MLP: fc1,fc2
- MHA: q_proj,v_proj,k_proj,dense
- Embeddings: embed_tokens (input) lm_head (output)
StableLM Modules:
- MLP: up_proj,down_proj,gate_proj
- MHA: q_proj,v_proj,k_proj,o_proj
- Embeddings: embed_tokens (input) lm_head (output)
"""
"""
@@ -22,7 +31,7 @@ python3 train.py \
--add_pad_token \
--add_chatml_tokens \
--bf16 \
--train_dataset data/home_assistant_train.json \
--train_dataset data/home_assistant_train.jsonl \
--learning_rate 1e-5 \
--save_steps 1000 \
--micro_batch_size 2 --gradient_checkpointing \
@@ -37,19 +46,45 @@ python3 train.py \
--add_pad_token \
--add_chatml_tokens \
--bf16 \
--train_dataset data/home_assistant_train.json \
--test_dataset data/home_assistant_test.json \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 \
--micro_batch_size 4 --gradient_checkpointing \
--ctx_size 2048 --save_steps 200
"""
"""
python3 train.py \
--run_name stablehome-1_6b-rev2 \
--base_model stabilityai/stablelm-2-zephyr-1_6b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 \
--micro_batch_size 2 --gradient_checkpointing \
--ctx_size 2048 --save_steps 200 --save_total_limit 6
"""
"""
python3 train.py \
--run_name stablehome-3b-rev5 \
--base_model stabilityai/stablelm-zephyr-3b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 \
--micro_batch_size 4 --gradient_checkpointing \
--ctx_size 2048 \
--save_steps 400 --save_total_limit 20 \
--use_lora --lora_rank 64 --lora_alpha 128 --lora_modules up_proj,down_proj,q_proj,v_proj,o_proj --lora_merge
"""
"""
python3 train.py \
--run_name home-7b-rev2 \
--base_model TheBloke/Llama-2-7B-GPTQ \
--train_dataset data/home_assistant_train.json \
--test_dataset data/home_assistant_test.json \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--load_as_gptq --use_lora --gradient_checkpointing \
--add_pad_token --bf16 --micro_batch_size 4 --learning_rate 2e-5
"""
@@ -75,6 +110,7 @@ class TrainingRunArguments:
save_steps: int = field(default=-1, metadata={"help": "The number of steps in between model checkpoints; set to -1 to save every epoch"})
save_total_limit: int = field(default=1, metadata={"help": "The number of recent checkpoints of the model to save (not including the final model)"})
group_by_length: bool = field(default=False, metadata={"help": "If enabled, the training data will be grouped by length to optimize use of padding"})
pre_allocate_cuda_buffers: bool = field(default=True, metadata={"help": "If enabled, runs a forward and backward pass on the model before training to force pytorch to allocate the correct size CUDA buffers up front"})
# Quantization
load_in_8bit: bool = field(default=False, metadata={"help": "Set to load the base model in 8-bit mode using bitsandbytes"})
@@ -92,6 +128,7 @@ class TrainingRunArguments:
add_pad_token: bool = field(default=False, metadata={"help": "If set, a pad token will be added to the tokenizer's vocabulary"})
add_chatml_tokens: bool = field(default=False, metadata={"help": "If set, tokens for the ChatML format will be added specifically"})
add_chatml_prompt_template: bool = field(default=False, metadata={"help": "If set, the ChatML prompt template will be set as the model's Jinja2 template"})
gradient_checkpointing: bool = field(default=False, metadata={"help": "Enables gradient checkpointing which saves quite a lot of VRAM"})
run_tensorboard: bool = field(default=False, metadata={"help": "If set, will tensorboard in the background to monitor training progress"})
@@ -120,6 +157,7 @@ else:
# model_kwargs["resid_pdrop"] = 0.0
# model_kwargs["revision"] = "accfee56d8988cae60915486310362db5831b1bd"
model_kwargs["use_cache"] = False
def find_max_vram(min_buffer_mib=800):
total_mem = (torch.cuda.get_device_properties(0).total_memory / (1024 * 1024))
@@ -153,7 +191,15 @@ if training_run_args.add_chatml_tokens:
model.config.bos_token_id = tokenizer.bos_token_id
model.config.eos_token_id = tokenizer.eos_token_id
# TODO: add chatml template to tokenizer for auto-formatting
if training_run_args.add_chatml_prompt_template:
tokenizer.chat_template = (
"{% for message in messages %}"
"{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}"
"{% endfor %}"
"{% if add_generation_prompt %}"
"{{ '<|im_start|>assistant\n' }}"
"{% endif %}"
)
embeddings_len = math.ceil(len(tokenizer) / 32) * 32
if model.get_input_embeddings().num_embeddings < embeddings_len:
@@ -161,6 +207,8 @@ if model.get_input_embeddings().num_embeddings < embeddings_len:
else:
model.tie_weights()
# model.tie_weights()
if training_run_args.use_lora:
from peft import LoraConfig, TaskType, get_peft_model, prepare_model_for_kbit_training
print("Creating LoRA for model...")
@@ -217,6 +265,7 @@ training_args = TrainingArguments(
log_level="info",
bf16=training_run_args.bf16,
group_by_length=training_run_args.group_by_length,
skip_memory_metrics=True,
**training_kwargs,
# include_inputs_for_metrics=True,
)
@@ -231,16 +280,12 @@ class DataCollatorForSupervisedFineTuning(object):
prefix_ids: list[int]
suffix_ids: list[int]
def __init__(self,
*,
tokenizer: AutoTokenizer,
response_prefix: str = "<|im_start|>assistant",
response_suffix: str = "<|im_end|>",
):
def __init__(self, *, tokenizer: AutoTokenizer):
self.tokenizer = tokenizer
self.response_prefix = response_prefix
self.response_suffix = response_suffix
assistant_prompt = tokenizer.apply_chat_template(conversation=[{"role": "assistant", "content": r"%%%%%%%%%%%%%%%%"}], tokenize=False).split( r"%%%%%%%%%%%%%%%%")
self.response_prefix = assistant_prompt[0]
self.response_suffix = assistant_prompt[1]
self.prefix_ids = self.tokenizer(self.response_prefix, add_special_tokens=False)["input_ids"]
self.suffix_ids = self.tokenizer(self.response_suffix, add_special_tokens=False)["input_ids"]
@@ -331,28 +376,51 @@ if training_run_args.test_dataset:
data_files["test"] = training_run_args.test_dataset
datasets = load_dataset("json", data_files=data_files)
def tokenize(example):
def tokenize_raw_example(batch):
return tokenizer(
text=example["text"],
text=batch["text"],
max_length=training_run_args.ctx_size,
truncation=True,
add_special_tokens=False,
)
print("Tokenizing datasets...")
tokenized_test_dataset = None
tokenized_train_dataset = datasets["train"].map(tokenize, batched=True).remove_columns(["text"])
if training_run_args.test_dataset:
tokenized_test_dataset = datasets["test"].map(tokenize, batched=True).remove_columns(["text"])
def tokenize_sharegpt_example(batch):
# TODO: figure out how to properly batch this
result = []
for example in batch["conversations"]:
conversation = [ { "role": x["from"], "content": x["value"] } for x in example ]
result.append(tokenizer.apply_chat_template(
conversation=conversation,
max_length=training_run_args.ctx_size,
truncation=True,
))
tokens_in_train_set = sum(len(example) for example in tokenized_train_dataset["input_ids"])
print(f"Train dataset has {int(tokens_in_train_set / 1000000)}M tokens")
return {"input_ids": result}
print("Tokenizing datasets...")
if "text" in datasets["train"].column_names:
tokenize_function = tokenize_raw_example
columns_to_remove = ["text"]
elif "conversations" in datasets["train"].column_names:
tokenize_function = tokenize_sharegpt_example
columns_to_remove = ["conversations"]
else:
raise Exception("Unknown dataset input format (not raw corpus or sharegpt)")
tokenized_test_dataset = None
tokenized_train_dataset = datasets["train"].map(tokenize_function, batched=True).remove_columns(columns_to_remove)
if training_run_args.test_dataset:
tokenized_test_dataset = datasets["test"].map(tokenize_function, batched=True).remove_columns(columns_to_remove)
example_lengths = [ len(example) for example in tokenized_train_dataset["input_ids"] ]
tokens_in_train_set, longest_example = sum(example_lengths), max(example_lengths)
print(f"Train dataset has {int(tokens_in_train_set / 1000000)}M tokens. Longest Example: {longest_example} tokens")
data_collator = DataCollatorForSupervisedFineTuning(tokenizer=tokenizer)
import random
from torch.utils.data import SequentialSampler, Subset, RandomSampler
class RandomEvalSubsetTrainer(Trainer):
class CustomTrainer(Trainer):
"""Implement different training tweaks"""
def __init__(self, random_eval_sample_pct=0.1, learning_rate_overshoot=1.15, *args, **kwargs):
super().__init__(*args, **kwargs)
self.random_eval_sample_pct = random_eval_sample_pct
@@ -386,27 +454,13 @@ class RandomEvalSubsetTrainer(Trainer):
Should speed up training by skipping the final fine tuning part that doesn't affect accuracy much
"""
return super().create_scheduler(int(num_training_steps * self.learning_rate_overshoot), optimizer=optimizer)
def compute_metrics(pred: EvalPrediction):
inputs = pred.inputs
label_ids = pred.label_ids
logits = pred.predictions
return {"accuracy": 1.0 }
def preprocess_logits_for_metrics(logits, labels):
"""https://discuss.huggingface.co/t/cuda-out-of-memory-when-using-trainer-with-compute-metrics/2941/22"""
pred_ids = torch.argmax(logits, dim=-1)
return pred_ids, labels
trainer = RandomEvalSubsetTrainer(
trainer = CustomTrainer(
model=model,
args=training_args,
train_dataset=tokenized_train_dataset,
eval_dataset=tokenized_test_dataset,
data_collator=data_collator,
# compute_metrics=compute_metrics,
# preprocess_logits_for_metrics=preprocess_logits_for_metrics,
)
tensorboard_process = None
@@ -418,6 +472,18 @@ if training_run_args.run_tensorboard:
tensorboard_process = subprocess.Popen(["tensorboard", "--logdir", model_dir])
atexit.register(kill_tensorboard)
# pre-allocate cuda buffers by running a forwards and backwards pass with the largest possible example length
# the trainer dumps the cuda buffers before we start... need to figure out how to disable that
# if training_run_args.pre_allocate_cuda_buffers:
# print("Allocating CUDA buffers...")
# inputs = tokenizer([""] * training_args.per_device_train_batch_size, return_tensors="pt", max_length=longest_example, padding="max_length", truncation=True)
# inputs = {k: v.to(model.device) for k, v in inputs.items()}
# inputs["labels"] = inputs["input_ids"]
# outputs = model(**inputs)
# loss = outputs.loss if isinstance(outputs, dict) else outputs[0]
# loss.backward()
# model.zero_grad()
try:
checkpoint = training_run_args.resume_from_checkpoint
if checkpoint:
@@ -425,7 +491,8 @@ try:
else:
trainer.train()
# trainer.evaluate_all()
if training_run_args.train_dataset:
trainer.evaluate_all()
if training_run_args.use_lora and training_run_args.lora_merge:
trainer.save_model() # save lora