You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
from config.logger import setup_logging
|
|
|
|
|
from core.utils.util import check_model_key
|
|
|
|
|
|
|
|
|
|
TAG = __name__
|
|
|
|
|
logger = setup_logging()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def append_devices_to_prompt(conn):
|
|
|
|
|
if conn.intent_type == "function_call":
|
|
|
|
|
funcs = conn.config["Intent"][conn.config["selected_module"]["Intent"]].get(
|
|
|
|
|
"functions", []
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
config_source = (
|
|
|
|
|
"home_assistant"
|
|
|
|
|
if conn.config["plugins"].get("home_assistant")
|
|
|
|
|
else "hass_get_state"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if "hass_get_state" in funcs or "hass_set_state" in funcs:
|
|
|
|
|
prompt = "\n下面是我家智能设备列表(位置,设备名,entity_id),可以通过homeassistant控制\n"
|
|
|
|
|
deviceStr = conn.config["plugins"].get(config_source, {}).get("devices", "")
|
|
|
|
|
conn.prompt += prompt + deviceStr + "\n"
|
|
|
|
|
# 更新提示词
|
|
|
|
|
conn.dialogue.update_system_message(conn.prompt)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def initialize_hass_handler(conn):
|
|
|
|
|
ha_config = {}
|
|
|
|
|
if not conn.load_function_plugin:
|
|
|
|
|
return ha_config
|
|
|
|
|
|
|
|
|
|
# 确定配置来源
|
|
|
|
|
config_source = (
|
|
|
|
|
"home_assistant"
|
|
|
|
|
if conn.config["plugins"].get("home_assistant")
|
|
|
|
|
else "hass_get_state"
|
|
|
|
|
)
|
|
|
|
|
if not conn.config["plugins"].get(config_source):
|
|
|
|
|
return ha_config
|
|
|
|
|
|
|
|
|
|
# 统一获取配置
|
|
|
|
|
plugin_config = conn.config["plugins"][config_source]
|
|
|
|
|
ha_config["base_url"] = plugin_config.get("base_url")
|
|
|
|
|
ha_config["api_key"] = plugin_config.get("api_key")
|
|
|
|
|
|
|
|
|
|
# 统一检查API密钥
|
|
|
|
|
model_key_msg = check_model_key("home_assistant", ha_config.get("api_key"))
|
|
|
|
|
if model_key_msg:
|
|
|
|
|
logger.bind(tag=TAG).error(model_key_msg)
|
|
|
|
|
|
|
|
|
|
return ha_config
|