mirror of
https://github.com/acon96/home-llm.git
synced 2026-01-10 14:18:00 -05:00
Merge branch 'develop' into feature/dataset-customization
This commit is contained in:
@@ -144,6 +144,8 @@ See [docs/Backend Configuration.md](/docs/Backend%20Configuration.md) for more i
|
||||
**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.
|
||||
|
||||
NOTE: Home Assistant recently moved from Python 3.11 to Python 3.12. If you are using HA 2024.1.4 and prior, use the `cp311` wheels and if you are using HA 2024.2.1 or newer then use the `cp312` wheels.
|
||||
|
||||
**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.
|
||||
|
||||
@@ -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
|
||||
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,
|
||||
@@ -165,34 +150,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."""
|
||||
|
||||
@@ -459,7 +416,7 @@ class LLaMAAgent(AbstractConversationAgent):
|
||||
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 +445,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")
|
||||
|
||||
|
||||
@@ -1,24 +1,18 @@
|
||||
"""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.data_entry_flow import (
|
||||
AbortFlow,
|
||||
@@ -37,6 +31,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,
|
||||
@@ -167,62 +162,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."""
|
||||
|
||||
@@ -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": {
|
||||
|
||||
104
custom_components/llama_conversation/utils.py
Normal file
104
custom_components/llama_conversation/utils.py
Normal 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
|
||||
@@ -8,7 +8,7 @@ import re
|
||||
from dataclasses import dataclass
|
||||
from datasets import load_dataset, concatenate_datasets
|
||||
from difflib import SequenceMatcher
|
||||
from typing import Final, Any, Callable
|
||||
from typing import Final, Any, Callable, Optional
|
||||
from tqdm import tqdm
|
||||
import webcolors
|
||||
|
||||
@@ -53,6 +53,7 @@ class DeviceType:
|
||||
name: str
|
||||
possible_states: list[(str, float)]
|
||||
services: dict[str, list]
|
||||
random_parameter_generator: Optional[dict[str, Callable]]
|
||||
|
||||
def get_all_services(self, extra_exposed_attributes):
|
||||
result = []
|
||||
@@ -60,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 ]
|
||||
@@ -78,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 + ";" + self.get_random_parameter("brightness") + "%"
|
||||
|
||||
return state
|
||||
|
||||
@@ -103,6 +111,13 @@ 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"])
|
||||
})
|
||||
|
||||
def get_random_state(self, extra_exposed_attributes=[]):
|
||||
@@ -110,47 +125,24 @@ class ClimateDeviceType(DeviceType):
|
||||
state = random.choice(["heat", "cool", "heat_cool", "off", "auto", "fan_only"])
|
||||
|
||||
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
|
||||
|
||||
class TimerDeviceType(DeviceType):
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
name="timer",
|
||||
possible_states=[
|
||||
(STATE_IDLE, 0.2),
|
||||
(STATE_ACTIVE, 0.6),
|
||||
(STATE_PAUSED, 0.1),
|
||||
],
|
||||
services={
|
||||
"start": ["duration"],
|
||||
"pause": [],
|
||||
"cancel": [],
|
||||
},
|
||||
)
|
||||
|
||||
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))
|
||||
state = state + ";" + closest_color(random_rgb) + " " + str(random_rgb)
|
||||
|
||||
return state
|
||||
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.csv") as f:
|
||||
pile_of_media_names = [ x.strip() for x in f.readlines() ]
|
||||
@@ -178,8 +170,11 @@ class MediaPlayerDeviceType(DeviceType):
|
||||
"media_stop": [],
|
||||
"media_next_track": [],
|
||||
"media_previous_track": []
|
||||
},
|
||||
random_parameter_generator={
|
||||
"media_title": lambda: random.choice(pile_of_media_names),
|
||||
"volume_level": lambda: str(round(random.random(), 2)),
|
||||
})
|
||||
|
||||
|
||||
def get_random_state(self, extra_exposed_attributes=[]):
|
||||
state = super().get_random_state(extra_exposed_attributes=extra_exposed_attributes)
|
||||
@@ -278,7 +273,22 @@ SUPPORTED_DEVICES = {
|
||||
"return_to_base": [],
|
||||
},
|
||||
),
|
||||
"timer": TimerDeviceType(),
|
||||
"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(pile_of_durations.keys()),
|
||||
}
|
||||
),
|
||||
}
|
||||
|
||||
stacks_of_device_names = { x: [] for x in SUPPORTED_DEVICES.keys() }
|
||||
@@ -482,6 +492,8 @@ def generate_templated_example(template: dict, language: str, persona: str, max_
|
||||
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"]
|
||||
@@ -534,52 +546,62 @@ def generate_templated_example(template: dict, language: str, persona: str, max_
|
||||
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 = random.choice(["heat", "cool", "heat_cool", "off", "auto", "fan_only"])
|
||||
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 = random.choice(["On Low", "On High", "Auto Low", "Auto High", "Off"])
|
||||
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_state("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 ]
|
||||
|
||||
return {
|
||||
"states": device_list,
|
||||
|
||||
@@ -344,4 +344,310 @@ 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.
|
||||
switch.turn_on,front_lawn,Activate the front lawn spotlights.
|
||||
vacuum.kitchen,Please turn on the kitchen vacuum.,start
|
||||
vacuum.living_room,Could you please activate the living room vacuum?,start
|
||||
vacuum.dining_room,The dining room vacuum needs to be started.,start
|
||||
vacuum.bedroom1,Let's start the vacuum in bedroom one.,start
|
||||
vacuum.bedroom2,Can you please turn on the vacuum for bedroom two?,start
|
||||
vacuum.study,The study vacuum should be activated.,start
|
||||
vacuum.library,May I ask you to start the library vacuum?,start
|
||||
vacuum.office,Please initiate the office vacuum.,start
|
||||
vacuum.entrance_hall,Could you please turn on the entrance hall vacuum?,start
|
||||
vacuum.sunroom,The sunroom vacuum needs to be started.,start
|
||||
vacuum.patio,Let's activate the patio vacuum.,start
|
||||
vacuum.garage,"Can we clean up the garage, please?",start
|
||||
vacuum.workshop,May I request you to turn on the workshop vacuum?,start
|
||||
vacuum.utility_room,Please clean the utility room.,start
|
||||
vacuum.mud_room,Could you please clean up the mud room?,start
|
||||
vacuum.powder_room,The powder room needs to be cleaned.,start
|
||||
vacuum.hallway,Let's turn on the hallway vacuum.,start
|
||||
vacuum.staircase,Can we please start the staircase vacuum?,start
|
||||
vacuum.balcony,May I ask you to clean the balcony?,start
|
||||
vacuum.roof_deck,Please roof deck is dirty.,start
|
||||
vacuum.attic,Let's start the attic vacuum.,start
|
||||
vacuum.basement,"Can we turn on the basement vacuum, please?",start
|
||||
vacuum.pool_area,The pool area vacuum needs to be started.,start
|
||||
vacuum.garden,Could you please activate the garden vacuum?,start
|
||||
vacuum.terrace,May I request you to start the terrace vacuum?,start
|
||||
vacuum.porch,Please initiate the porch vacuum.,start
|
||||
vacuum.shed,"Can we turn on the shed vacuum, please?",start
|
||||
vacuum.workshop2,The second workshop is pretty dirty right now.,start
|
||||
vacuum.studio,May I ask you to start the studio vacuum?,start
|
||||
vacuum.greenhouse,Please initiate the greenhouse vacuum.,start
|
||||
vacuum.potting_shed,"Can we turn on the potting shed vacuum, please?",start
|
||||
vacuum.summer_house,The summer house vacuum needs to be started.,start
|
||||
vacuum.garage2,Let's start the second garage vacuum.,start
|
||||
vacuum.tool_shed,May I request you to activate the tool shed vacuum?,start
|
||||
vacuum.barn,Could we please turn on the barn vacuum?,start
|
||||
vacuum.wine_cellar,The wine cellar should be cleaned.,start
|
||||
vacuum.storage_room,Let's initiate the storage room cleanup.,start
|
||||
vacuum.greenhouse2,May I ask you to activate the second greenhouse vacuum?,start
|
||||
vacuum.boat_house,Please turn on the boat house vacuum.,start
|
||||
vacuum.marina,Could we please start the marina vacuum?,start
|
||||
vacuum.bb8,Turn on BB8.,start
|
||||
vacuum.c3po,Can you start C3PO?,start
|
||||
vacuum.hal,Please turn on Hal.,start
|
||||
vacuum.r2d2,Can you tell R2D2 to clean up?,start
|
||||
todo.groceries,Add milk to my groceries list.,add_item
|
||||
todo.household_supplies,Could you please add eggs to my household supplies list?,add_item
|
||||
todo.electronics,I would like you to add a new printer to the electronics list.,add_item
|
||||
todo.clothing,Kindly add a shirt to the clothing list for me.,add_item
|
||||
todo.office_supplies,Could you please add paper clips to the office supplies list?,add_item
|
||||
todo.personal_care,I would appreciate it if you could add toothpaste to my personal care list.,add_item
|
||||
todo.technology,I'd like you to add a new phone to the technology list.,add_item
|
||||
todo.gifts,Could you please add a gift card to the gifts list?,add_item
|
||||
todo.books,I would like you to add a novel to the books list.,add_item
|
||||
todo.music,Could you please add Halsey's new album to my music list?,add_item
|
||||
todo.movies,Could you kindly add Batman Begins to the movies list for me?,add_item
|
||||
todo.travel,I would appreciate it if you could add Scotland to the travel list.,add_item
|
||||
todo.education,I'd like you to add a language course to the education list.,add_item
|
||||
todo.health,Could you please add a doctor's appointment to my health list?,add_item
|
||||
todo.finance,"I would like you to add ""Pay Power Bill"" to the finance list.",add_item
|
||||
todo.shopping_list,Could you please add bread to the shopping list?,add_item
|
||||
todo.household_supplies_list,"Could you kindly add a ""Walnut Credenza"" to the projects list?",add_item
|
||||
todo.electronics_list,I would like you to add a new laptop to the electronics list.,add_item
|
||||
todo.clothing_list,Kindly add pants to the clothing list for me.,add_item
|
||||
todo.office_supplies_list,Could you please add staples to the office supplies list?,add_item
|
||||
todo.personal_care_list,I would appreciate it if you could add razorblades to my personal care list.,add_item
|
||||
todo.technology_list,I'd like you to add a new computer to the technology list.,add_item
|
||||
todo.gifts_list,Could you please add a socks to the gifts list?,add_item
|
||||
todo.books_list,"I would like you to add ""Treasure Island"" to the books list.",add_item
|
||||
todo.music_list,Could you please add Taylor Swift's new album to my music list?,add_item
|
||||
todo.movies_list,Could you kindly add Pulp Fiction to the movies list for me?,add_item
|
||||
todo.travel_list,I would appreciate it if you could add Japan to the travel list.,add_item
|
||||
todo.education_list,I'd like you to add a language course to the education list.,add_item
|
||||
todo.health_list,Could you please add a doctor's appointment to my health list?,add_item
|
||||
todo.finance_list,"I would like you to add ""Pay Phone Bill"" to the finance list.",add_item
|
||||
todo.grocery_list,"Could you please add ""Vinegar"" to the shopping list?",add_item
|
||||
todo.projects,"Could you kindly add a ""Maple Bench"" to the projects list?",add_item
|
||||
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
|
||||
timer.pomodoro,Please set my pomodoro timer for 20 minutes.,start
|
||||
timer.kitchen,Turn on the kitchen timer for 8 minutes.,start
|
||||
timer.work,Set the work timer for 10 minutes.,start
|
||||
timer.laundry,Start the laundry timer for an hour.,start
|
||||
timer.cooking,Set a 30 second cooking timer.,start
|
||||
timer.pomodoro,Cancel the pomodoro timer.,cancel
|
||||
timer.kitchen,Please stop my kitchen timer.,cancel
|
||||
timer.work,Turn off the work timer.,cancel
|
||||
timer.laundry,Please shut off the laundry timer.,cancel
|
||||
timer.cooking,The cooking timer is no longer needed.,cancel
|
||||
light.bar_light,Please switch off the bar light,turn_off
|
||||
light.bar_light,Turn off bar light,turn_off
|
||||
light.bar_light,Turn off the bar light,turn_off
|
||||
light.dining_room_light,Deactivate dining room light,turn_off
|
||||
light.dining_room_light,Shut off dining room light,turn_off
|
||||
light.dining_room_light,Toggle the dining room light,turn_off
|
||||
light.front_light,Can we power down the front light?,turn_off
|
||||
light.front_light,Can we turn down the front light?,turn_off
|
||||
light.front_light,Can you turn off the lights on the front?,turn_off
|
||||
light.gym_light,Can you shut off the gym light?,turn_off
|
||||
light.gym_light,Can you turn off the gym light?,turn_off
|
||||
light.gym_light,Could we turn off the gym lights?,turn_off
|
||||
light.island_light,Could you disable the island light,turn_off
|
||||
light.island_light,Deactivate the island light,turn_off
|
||||
light.island_light,Deactivate the island area lighting.,turn_off
|
||||
light.kitchen_light,Deactivate the kitchen light,turn_off
|
||||
light.kitchen_light,Deactivate the lights at the kitchen.,turn_off
|
||||
light.kitchen_light,Disable the lights in the kitchen.,turn_off
|
||||
light.living_room_light,living room light off,turn_off
|
||||
light.living_room_light,Disable the living room lights.,turn_off
|
||||
light.living_room_light,Please disable the living room light.,turn_off
|
||||
light.main_basement_light,Please extinguish the main basement light,turn_off
|
||||
light.main_basement_light,Please power down the lights in the main basement.,turn_off
|
||||
light.main_basement_light,Please switch off the main basement light,turn_off
|
||||
light.man_cave_light,Please switch off the man cave area lights.,turn_off
|
||||
light.man_cave_light,Please turn off the man cave lights.,turn_off
|
||||
light.man_cave_light,Please turn off the man cave light.,turn_off
|
||||
light.master_bedroom_light,Power off the lights in the master bedroom.,turn_off
|
||||
light.master_bedroom_light,Set the master bedroom lights to off.,turn_off
|
||||
light.master_bedroom_light,Shut down the master bedroom lights.,turn_off
|
||||
light.pool_table_light,Shut down the pool table light,turn_off
|
||||
light.pool_table_light,Switch off the pool table light,turn_off
|
||||
light.pool_table_light,Switch off the pool table light please,turn_off
|
||||
light.pool_table_light,Switch off the pool table light now,turn_off
|
||||
light.pool_table_light,Switch off the pool table lights,turn_off
|
||||
light.pool_table_light,Switch off the light in the pool table,turn_off
|
||||
light.pool_table_light,Switch off the pool table light,turn_off
|
||||
light.pool_table_light,Turn off the pool table light,turn_off
|
||||
light.pool_table_light,Turn off the pool table light please,turn_off
|
||||
light.pool_table_light,Turn off the pool table light now,turn_off
|
||||
light.pool_table_light,You can turn off the pool table light now,turn_off
|
||||
light.pool_table_light,Turn off the pool table lights.,turn_off
|
||||
light.pool_table_light,Turn off the pool table light please.,turn_off
|
||||
light.pool_table_light,Turn off the pool table light,turn_off
|
||||
light.pool_table_light,Turn off the light in the pool table.,turn_off
|
||||
light.pool_table_light,Turn off the pool table light,turn_off
|
||||
light.pool_table_light,Turn off the light in the pool table,turn_off
|
||||
light.pool_table_light,Turn the pool table light off,turn_off
|
||||
light.porch_light,Please switch off the porch light,turn_off
|
||||
light.porch_light,Turn off porch light,turn_off
|
||||
light.porch_light,Turn off the porch light,turn_off
|
||||
light.porch_light,Deactivate porch light,turn_off
|
||||
light.porch_light,Shut off porch light,turn_off
|
||||
light.porch_light,Toggle the porch light,turn_off
|
||||
light.porch_light,Can we power down the porch light?,turn_off
|
||||
light.porch_light,Can we turn down the porch light?,turn_off
|
||||
light.porch_light,Can you turn off the lights on the porch?,turn_off
|
||||
light.porch_light,Can you shut off the porch light?,turn_off
|
||||
light.porch_light,Can you turn off the porch light?,turn_off
|
||||
light.porch_light,Could we turn off the porch lights?,turn_off
|
||||
light.porch_light,Could you disable the porch light,turn_off
|
||||
light.porch_light,Deactivate the porch light,turn_off
|
||||
light.porch_light,Deactivate the porch area lighting.,turn_off
|
||||
light.porch_light,Deactivate the porch light,turn_off
|
||||
light.porch_light,Deactivate the light on the porch,turn_off
|
||||
light.porch_light,Deactivate the porch light,turn_off
|
||||
light.porch_light,Deactivate the porch light,turn_off
|
||||
light.porch_light,Deactivate the porch light,turn_off
|
||||
light.porch_light,Deactivate the lights at the porch.,turn_off
|
||||
light.porch_light,Disable the lights in the porch.,turn_off
|
||||
light.porch_light,porch light off,turn_off
|
||||
light.porch_light,Disable the porch lights.,turn_off
|
||||
light.porch_light,Please disable the porch light.,turn_off
|
||||
light.porch_light,Please extinguish the porch light,turn_off
|
||||
light.porch_light,Please power down the lights in the porch.,turn_off
|
||||
light.porch_light,Please switch off the porch light,turn_off
|
||||
light.porch_light,Please switch off the porch area lights.,turn_off
|
||||
light.porch_light,Please turn off the porch lights.,turn_off
|
||||
light.porch_light,Please turn off the porch light.,turn_off
|
||||
light.porch_light,Power off the lights in the porch.,turn_off
|
||||
light.porch_light,Set the porch lights to off.,turn_off
|
||||
light.porch_light,Shut down the porch lights.,turn_off
|
||||
light.porch_light,Shut down the porch light,turn_off
|
||||
light.porch_light,Switch off the porch light,turn_off
|
||||
light.porch_light,Switch off the porch light please,turn_off
|
||||
light.porch_light,Switch off the porch light now,turn_off
|
||||
light.porch_light,Switch off the porch lights,turn_off
|
||||
light.porch_light,Switch off the light in the porch,turn_off
|
||||
light.porch_light,Switch off the porch light,turn_off
|
||||
light.porch_light,Turn off the porch light,turn_off
|
||||
light.porch_light,Turn off the porch light please,turn_off
|
||||
light.porch_light,Turn off the porch light now,turn_off
|
||||
light.porch_light,You can turn off the porch light now,turn_off
|
||||
light.porch_light,Turn off the porch lights.,turn_off
|
||||
light.porch_light,Turn off the porch light please.,turn_off
|
||||
light.porch_light,Turn off the porch light,turn_off
|
||||
light.porch_light,Turn off the light in the porch.,turn_off
|
||||
light.porch_light,Turn off the porch light,turn_off
|
||||
light.porch_light,Turn off the light in the porch,turn_off
|
||||
light.porch_light,Turn the porch light off,turn_off
|
||||
light.shower_light,Please switch off the shower light,turn_off
|
||||
light.shower_light,Turn off shower light,turn_off
|
||||
light.shower_light,Turn off the shower light,turn_off
|
||||
light.shower_light,Deactivate shower light,turn_off
|
||||
light.shower_light,Shut off shower light,turn_off
|
||||
light.stair_light,stair light off,turn_off
|
||||
light.stair_light,Disable the stair lights.,turn_off
|
||||
light.stair_light,Shut off stairwell light,turn_off
|
||||
light.stair_light,Toggle the stairwell light,turn_off
|
||||
light.stair_light,Can we power down the stairwell light?,turn_off
|
||||
light.roof_light,Please switch off the roof light,turn_off
|
||||
light.roof_light,Turn off roof light,turn_off
|
||||
light.roof_light,Turn off the roof light,turn_off
|
||||
light.walkway_light,Shut down the walkway lights.,turn_off
|
||||
light.walkway_light,Turn off the walkway light,turn_off
|
||||
light.walkway_light,Turn the walkway light off,turn_off
|
||||
light.Bobs_lamp,Please switch off Bob's light,turn_off
|
||||
light.janets_lamp,Turn off Janet's light,turn_off
|
||||
light.ruths_lamp,Please switch off Ruth's lamp,turn_off
|
||||
light.colins_lamp,Turn off Colin's lamp,turn_off
|
||||
light.neenas_lamp,Turn off Neena's lamp,turn_off
|
||||
light.roberts_lamp,Deactivate Robert's lamp,turn_off
|
||||
light.paulus_lamp,Shut off Paulus' lamp,turn_off
|
||||
light.peters_lamp,Toggle Peter's lamp,turn_off
|
||||
light.angelas_lamp,Can we power down Angela's lamp?,turn_off
|
||||
light.entry_lamp,Please switch off entry lamp,turn_off
|
||||
light.entry_lamp,Turn off entry lamp,turn_off
|
||||
light.entry_lamp,Please extinguish entryway lamp,turn_off
|
||||
light.entry_lamp,Please switch off entryway lamp,turn_off
|
||||
light.entry_lamp,Please switch off entryway area lamps.,turn_off
|
||||
light.entry_lamp,Deactivate entrance light,turn_off
|
||||
light.bar_light,Illuminate the light in my bar.,turn_on
|
||||
light.bar_light,Illuminate the bar.,turn_on
|
||||
light.bar_light,Bar light on,turn_on
|
||||
light.bar_light,Light up the bar.,turn_on
|
||||
light.dining_room_light,Activate the lights in the dining room,turn_on
|
||||
light.dining_room_light,Enable the dining room light please,turn_on
|
||||
light.dining_room_light,Engage the lights in the dining room.,turn_on
|
||||
light.front_light,Activate the front light please,turn_on
|
||||
light.front_light,Please activate the front light,turn_on
|
||||
light.front_light,Activate the front light now,turn_on
|
||||
light.gym_light,Turn on the gym light please,turn_on
|
||||
light.gym_light,Turn the gym light on,turn_on
|
||||
light.gym_light,gym light on,turn_on
|
||||
light.island_light,Turn the island light on,turn_on
|
||||
light.island_light,island light on,turn_on
|
||||
light.island_light,Switch on the island light,turn_on
|
||||
light.kitchen_light,kitchen light on,turn_on
|
||||
light.kitchen_light,Switch on the kitchen light,turn_on
|
||||
light.kitchen_light,Hey can you turn on the kitchen light,turn_on
|
||||
light.living_room_light,Turn on the living room lights.,turn_on
|
||||
light.living_room_light,Turn on the living room lights please.,turn_on
|
||||
light.living_room_light,Please turn on the living room lights.,turn_on
|
||||
light.living_room_light,Turn on the living room lighting.,turn_on
|
||||
light.main_basement_light,Turn on the main basement light,turn_on
|
||||
light.main_basement_light,Turn on main basement light,turn_on
|
||||
light.man_cave_light,Activate the man cave man cave light.,turn_on
|
||||
light.man_cave_light,Activate the lights in the man cave,turn_on
|
||||
light.man_cave_light,Could you light up the man cave?,turn_on
|
||||
light.man_cave_light,Enable the man cave light,turn_on
|
||||
light.master_bedroom_light,Could you illuminate the master bedroom,turn_on
|
||||
light.pool_table_bar_light,pool table bar light on,turn_on
|
||||
light.pool_table_bar_light,Switch on the pool table bar light,turn_on
|
||||
light.pool_table_bar_light,Can you turn on the pool table bar light?,turn_on
|
||||
light.pool_table_light,Enable the pool table light please,turn_on
|
||||
light.porch_light,Turn on porch light,turn_on
|
||||
light.porch_light,Can you turn on the porch light?,turn_on
|
||||
light.porch_light,Could you turn on the porch light please?,turn_on
|
||||
light.shower_light,Turn on the shower light,turn_on
|
||||
light.shower_light,Turn on shower light,turn_on
|
||||
light.shower_light,Activate the shower light,turn_on
|
||||
light.shower_light,Could you illuminate the shower please,turn_on
|
||||
light.shower_light,Turn on the lights at the shower,turn_on
|
||||
light.shower_light,Light up the shower please,turn_on
|
||||
light.shower_light,Turn on the shower light please,turn_on
|
||||
light.shower_light,Turn the shower light on,turn_on
|
||||
light.shower_light,shower light on,turn_on
|
||||
light.stair_light,Activate the stair light please,turn_on
|
||||
light.stair_light,Please activate the stair light,turn_on
|
||||
light.stair_light,Can you light up the stairwell please?,turn_on
|
||||
light.stair_light,Please activate the stairwell light,turn_on
|
||||
light.stair_light,Please switch on the stairwell area light,turn_on
|
||||
light.roof_light,Please turn on the roof light.,turn_on
|
||||
light.roof_light,Switch on the roof light please,turn_on
|
||||
light.roof_light,Can you turn on the light in the roof?,turn_on
|
||||
light.walkway_light,Please activate the walkway light,turn_on
|
||||
light.walkway_light,Please switch on the walkway area light,turn_on
|
||||
light.walkway_light,Turn on the walkway lighting.,turn_on
|
||||
light.freds_lamp,Turn on Fred's light,turn_on
|
||||
light.colins_lamp,Turn on Colin's light,turn_on
|
||||
light.roberts_lamp,Activate Robert's light,turn_on
|
||||
light.pierres_lamp,Turn on Pierre's light please,turn_on
|
||||
light.jennifers_lamp,Turn Jenn's light on,turn_on
|
||||
light.julias_lamp,Julia's light on,turn_on
|
||||
light.neenas_lamp,Switch on Neena's light,turn_on
|
||||
light.patricks_lamp,Can you turn on Patrick's light?,turn_on
|
||||
light.sams_lamp,Light up Sam's.,turn_on
|
||||
light.johns_lamp,Brighten up John's light.,turn_on
|
||||
light.jordans_lamp,Engage Jordan's lighting.,turn_on
|
||||
light.lebrons_lamp,Light up Lebron's lights.,turn_on
|
||||
light.angies_lamp,Can you turn on Angie's lamp?,turn_on
|
||||
light.louis_lamp,Could you turn on Louis' lamp please?,turn_on
|
||||
light.katniss_lamp,Could you enable Katniss' lamp,turn_on
|
||||
light.waynes_lamp,Enable Wayne's lamp,turn_on
|
||||
light.samuels_lamp,Enable Samuel's lamp please,turn_on
|
||||
light.entry_lamp,Turn on entry lamp,turn_on
|
||||
light.entry_lamp,Please activate entryway lamp,turn_on
|
||||
light.entry_lamp,Please switch on entryway area lamp,turn_on
|
||||
light.entry_lamp,Turn on entrance light,turn_on
|
||||
light.entry_lamp,Turn on entrance lighting.,turn_on
|
||||
|
||||
|
@@ -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>.
|
||||
|
||||
|
@@ -218,4 +218,61 @@ 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
|
||||
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 <item> to my <device_name>.",8
|
||||
todo,add_item,"Can you add <item> to the <device_name>?",8
|
||||
todo,add_item,"I need <item> added to my <device_name>.",8
|
||||
todo,add_item,"Go ahead and add <item> to the <device_name>.",8
|
||||
todo,add_item,"Could you please input <item> into my <device_name>?",8
|
||||
todo,add_item,"Kindly insert <item> onto the <device_name>.",8
|
||||
todo,add_item,"May I request that <item> be included in the <device_name>?",8
|
||||
todo,add_item,"It would be much appreciated if <item> could be put on the <device_name>.",8
|
||||
todo,add_item,"Shall we append <item> to my <device_name>?",8
|
||||
todo,add_item,""Let's add <item> to the <device_name>",8
|
||||
todo,add_item,"Could you place <item> onto my <device_name>?",8
|
||||
todo,add_item,"Will you be so kind as to incorporate <item> into the <device_name>?",8
|
||||
todo,add_item,"Is it possible to include <item> in the <device_name>?",8
|
||||
todo,add_item,"Could we add <item> to my <device_name>?",8
|
||||
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
|
||||
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.
|
Binary file not shown.
Binary file not shown.
BIN
dist/llama_cpp_python-0.2.42-cp311-cp311-musllinux_1_2_aarch64.whl
vendored
Normal file
BIN
dist/llama_cpp_python-0.2.42-cp311-cp311-musllinux_1_2_aarch64.whl
vendored
Normal file
Binary file not shown.
BIN
dist/llama_cpp_python-0.2.42-cp311-cp311-musllinux_1_2_x86_64.whl
vendored
Normal file
BIN
dist/llama_cpp_python-0.2.42-cp311-cp311-musllinux_1_2_x86_64.whl
vendored
Normal file
Binary file not shown.
BIN
dist/llama_cpp_python-0.2.42-cp312-cp312-musllinux_1_2_aarch64.whl
vendored
Normal file
BIN
dist/llama_cpp_python-0.2.42-cp312-cp312-musllinux_1_2_aarch64.whl
vendored
Normal file
Binary file not shown.
BIN
dist/llama_cpp_python-0.2.42-cp312-cp312-musllinux_1_2_x86_64.whl
vendored
Normal file
BIN
dist/llama_cpp_python-0.2.42-cp312-cp312-musllinux_1_2_x86_64.whl
vendored
Normal file
Binary file not shown.
11
dist/run_docker.sh
vendored
11
dist/run_docker.sh
vendored
@@ -1,6 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
VERSION_TO_BUILD="v0.2.42"
|
||||
|
||||
# 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
|
||||
Reference in New Issue
Block a user