From d7a7148759dcaeae16ee368c6fcc0b6f83165961 Mon Sep 17 00:00:00 2001 From: Krishnakanth Alagiri Date: Thu, 16 May 2024 02:42:54 -0400 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20FIX:=20Results=20are=20now?= =?UTF-8?q?=20combined=20and=20returned=20as=20expected.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And other minor code cleanup --- core/classes.py | 41 +++++++++----- core/task_master.py | 85 +++++++++++++++++------------ meeseeks-api/README.md | 2 +- meeseeks-api/backend.py | 23 +++++++- meeseeks-chat/README.md | 2 +- prompts/action-planner.txt | 5 +- prompts/homeassistant-get-state.txt | 6 +- 7 files changed, 106 insertions(+), 58 deletions(-) diff --git a/core/classes.py b/core/classes.py index 5a82302..a624e43 100644 --- a/core/classes.py +++ b/core/classes.py @@ -2,8 +2,8 @@ import abc import os import json -from typing import Optional -from typing import List, Any +from typing import Optional, List, Any + # Third-party modules from langchain_community.document_loaders import JSONLoader from langchain_openai import ChatOpenAI @@ -19,6 +19,7 @@ class ActionStep(BaseModel): + """Defines an action step within a task queue with validation.""" action_consumer: str = Field( description=f"Specify one of {AVAILABLE_TOOLS} to indicate the action consumer." ) @@ -36,11 +37,17 @@ class ActionStep(BaseModel): class TaskQueue(BaseModel): + """Manages a queue of actions to be performed, tracking their results.""" human_message: Optional[str] = Field( alias="_human_message", description='Human message associated with the task queue.' ) - action_steps: Optional[List[ActionStep]] = None + action_steps: List[ActionStep] = Field(default_factory=list) + task_result: Optional[str] = Field( + alias="_task_result", + default="Not executed yet.", + description='Store the result for the entire task queue' + ) @validator("action_steps", allow_reuse=True) # pylint: disable=E0213,W0613 @@ -81,18 +88,25 @@ def validate_actions(cls, field): class AbstractTool(abc.ABC): - def __init__(self, name, description, model_name=None, temperature=0.2): - # Data Validation - if model_name is None: - default_model = os.getenv("DEFAULT_MODEL", "gpt-3.5-turbo") - self.model_name = os.getenv("TOOL_MODEL", default_model) - else: - self.model_name = model_name - - # Set the tool attributes + """Abstract base class for tools, providing common features and requiring specific methods.""" + + def _setup_cache_dir(self, name: str) -> str: + """Set up and return the cache directory path.""" + root_cache_dir = os.getenv("CACHE_DIR") + if not root_cache_dir: + raise ValueError("CACHE_DIR environment variable is not set.") + cache_path = os.path.join( + root_cache_dir, "..", ".cache", f"{name.lower().replace(' ', '_')}_tool") + os.makedirs(cache_path, exist_ok=True) + return os.path.abspath(cache_path) + + def __init__(self, name: str, description: str, model_name: Optional[str] = None, temperature: float = 0.3): + """Initialize the tool with optional model configuration.""" + self.model_name = model_name or os.getenv( + "TOOL_MODEL", os.getenv("DEFAULT_MODEL", "gpt-3.5-turbo")) self.name = name - self._id = f"{name.lower().replace(' ', '_')}_tool" self.description = description + self._id = f"{name.lower().replace(' ', '_')}_tool" session_id = f"{self._id}-tool-id-{get_unique_timestamp()}" logging.info(f"Tool created ") self.langfuse_handler = CallbackHandler( @@ -107,7 +121,6 @@ def __init__(self, name, description, model_name=None, temperature=0.2): model=self.model_name, temperature=temperature ) - root_cache_dir = os.getenv("CACHE_DIR", None) if root_cache_dir is None: raise ValueError("CACHE_DIR environment variable is not set.") diff --git a/core/task_master.py b/core/task_master.py index d56798d..531013f 100644 --- a/core/task_master.py +++ b/core/task_master.py @@ -31,11 +31,9 @@ load_dotenv() -def generate_action_plan( - user_query: str, model_name: str = None) -> List[dict]: +def generate_action_plan(user_query: str, model_name: str = None) -> List[dict]: """ - Use the LangChain pipeline to generate an action plan - based on the user query. + Use the LangChain pipeline to generate an action plan based on the user query. Args: user_query (str): The user query to generate the action plan. @@ -43,56 +41,58 @@ def generate_action_plan( Returns: List[dict]: The generated action plan as a list of dictionaries. """ + user_id = "meeseeks-task-master" + session_id = f"action-queue-id-{get_unique_timestamp()}" + trace_name = user_id + version = os.getenv("VERSION", "Not Specified") + release = os.getenv("ENVMODE", "Not Specified") + langfuse_handler = CallbackHandler( - user_id="homeassistant_kk", - session_id=f"action-queue-id-{get_unique_timestamp()}", - trace_name="meeseeks-task-master", - version=os.getenv("VERSION", "Not Specified"), - release=os.getenv("ENVMODE", "Not Specified") + user_id=user_id, + session_id=session_id, + trace_name=trace_name, + version=version, + release=release ) - if model_name is None: - default_model = os.getenv("DEFAULT_MODEL", "gpt-3.5-turbo") - model_name = os.getenv("ACTION_PLAN_MODEL", default_model) + model_name = model_name or os.getenv( + "ACTION_PLAN_MODEL", os.getenv("DEFAULT_MODEL", "gpt-3.5-turbo")) model = ChatOpenAI( openai_api_base=os.getenv("OPENAI_API_BASE"), model=model_name, temperature=0.4 ) - # Instantiate the parser with the new model. + parser = PydanticOutputParser(pydantic_object=TaskQueue) logging.debug( - "Generating action plan ", - model_name, user_query) - # Update the prompt to match the new query and desired format. + "Generating action plan ", model_name, user_query) + prompt = ChatPromptTemplate( messages=[ - SystemMessage( - content=get_system_prompt() - ), - HumanMessage( - content="Turn on strip lights and heater." - ), + SystemMessage(content=get_system_prompt()), + HumanMessage(content="Turn on strip lights and heater."), AIMessage(get_task_master_examples(example_id=0)), - HumanMessage( - content="What is the weather today?" - ), + HumanMessage(content="What is the weather today?"), AIMessage(get_task_master_examples(example_id=1)), HumanMessagePromptTemplate.from_template( "## Format Instructions\n{format_instructions}\n## Generate a task queue for the user query\n{user_query}" ), ], partial_variables={ - "format_instructions": parser.get_format_instructions()}, + "format_instructions": parser.get_format_instructions() + }, input_variables=["user_query"] ) + estimator = num_tokens_from_string(str(prompt)) logging.info("Input Prompt Token length is `%s`.", estimator) - chain = prompt | model | parser - action_plan = chain.invoke({"user_query": user_query.strip()}, - config={"callbacks": [langfuse_handler]}) + action_plan = (prompt | model | parser).invoke( + {"user_query": user_query.strip()}, + config={"callbacks": [langfuse_handler]} + ) + action_plan.human_message = user_query logging.info("Action plan generated <%s>", action_plan) return action_plan @@ -112,10 +112,27 @@ def run_action_plan(task_queue: TaskQueue) -> TaskQueue: "home_assistant_tool": HomeAssistant(), "talk_to_user_tool": TalkToUser() } - for idx, action_step in enumerate(task_queue.action_steps): - logging.debug(f"") - tool = tool_dict[action_step.action_consumer] - action_plan = tool.run(action_step) - task_queue.action_steps[idx].result = action_plan + + results = [] + + for action_step in task_queue.action_steps: + logging.debug(f"Processing ActionStep: {action_step}") + tool = tool_dict.get(action_step.action_consumer) + + if tool is None: + logging.error( + f"No tool found for consumer: {action_step.action_consumer}") + continue + + try: + action_result = tool.run(action_step) + action_step.result = action_result + results.append( + action_result.content if action_result.content is not None else "") + except Exception as e: + logging.error(f"Error processing action step: {e}") + action_step.result = None + + task_queue.task_result = " ".join(results).strip() return task_queue diff --git a/meeseeks-api/README.md b/meeseeks-api/README.md index e2c77a1..d9a7453 100644 --- a/meeseeks-api/README.md +++ b/meeseeks-api/README.md @@ -3,4 +3,4 @@ - REST API Engine wrapped around the meeseeks-core. - No components are explicitly tested for safety or security. Use with caution in a production environment. -[Link to GitHub Repository](https://github.com/bearlike/Personal-Assistant/edit/main/README.md) +[Link to GitHub Repository](https://github.com/bearlike/Personal-Assistant) diff --git a/meeseeks-api/backend.py b/meeseeks-api/backend.py index 61b4279..408cbf4 100644 --- a/meeseeks-api/backend.py +++ b/meeseeks-api/backend.py @@ -11,10 +11,11 @@ # Standard library modules import os import sys +from copy import deepcopy from typing import Dict # Third-party modules -from flask import Flask, request, jsonify +from flask import Flask, request from flask_restx import Api, Resource, fields from dotenv import load_dotenv @@ -35,7 +36,11 @@ # Initialize logger logging = get_logger(name="meeseeks-api") +# logging.basicConfig(level=logging.DEBUG) +logging.info("Starting Meeseeks API server.") logging.debug("Starting API server with API token: %s", MASTER_API_TOKEN) + + # Create Flask application app = Flask(__name__) @@ -59,6 +64,8 @@ task_queue_model = api.model('TaskQueue', { 'human_message': fields.String( required=True, description='The original user query'), + 'task_result': fields.String( + required=True, description='Combined response of all action steps'), 'action_steps': fields.List(fields.Nested(api.model('ActionStep', { 'action_consumer': fields.String( required=True, @@ -75,6 +82,13 @@ }) +@app.before_request +def log_request_info(): + logging.debug('Endpoint: %s', request.endpoint) + logging.debug('Headers: %s', request.headers) + logging.debug('Body: %s', request.get_data()) + + @ns.route('/query') class MeeseeksQuery(Resource): """ @@ -118,10 +132,13 @@ def post(self) -> Dict: # Execute action plan task_queue = run_action_plan(task_queue) - + # Deep copy the variable into another variable + task_result = deepcopy(task_queue.task_result) + to_return = task_queue.dict() + to_return["task_result"] = task_result # Return TaskQueue as JSON logging.info("Returning executed action plan.") - return task_queue.dict(), 200 + return to_return, 200 if __name__ == '__main__': diff --git a/meeseeks-chat/README.md b/meeseeks-chat/README.md index 4a03932..31a2396 100644 --- a/meeseeks-chat/README.md +++ b/meeseeks-chat/README.md @@ -2,4 +2,4 @@ Chat Interface wrapped around the meeseeks-core. Powered by Streamlit. -[Link to GitHub](https://github.com/bearlike/Personal-Assistant/edit/main/README.md) +[Link to GitHub](https://github.com/bearlike/Personal-Assistant) diff --git a/prompts/action-planner.txt b/prompts/action-planner.txt index 953d49b..ab4439c 100644 --- a/prompts/action-planner.txt +++ b/prompts/action-planner.txt @@ -1,4 +1,4 @@ -You are a Personal AI Assistant to Krishna. Your job is to create a task queue from the user's instructions. The queue consists of actions, each with an `action_consumer` and an `action_argument`. +You are a Personal AI Assistant to Krishna. Your job is to create a task queue from the user's instructions. You must decompose the user given instruction into their atomic instruction each using their respective tool. The queue consists of actions, each with an `action_consumer` and an `action_argument`. The `action_consumer` can be: 1. **Home Assistant API (action_consumer="home_assistant_tool")**: @@ -16,9 +16,9 @@ The `action_consumer` can be: - `action_type=set`: Speak to the user. - `action_type=get` does not exist for this consumer, therefore, do not use. - ### Guidelines: - Each action must contain only one task instruction. +- Your instructions in the action_argument must be very precise, isolated and atomic in nature. - In scenarios where an action plan solely uses the `talk_to_user_tool` function and does not engage any other `action_consumer`, restrict the operation to a single instance of `talk_to_user_tool` to maintain a smooth conversational flow. - Each action must also be crisp, easy to understand and truthfully correspond to the user query. - If a question doesn't relate to any accessible tools, answer truthfully to the best of your ability without making any assumptions. @@ -41,7 +41,6 @@ The `action_consumer` can be: - Nextcloud, LibreChat, Sonarr, Radarr, qBittorrent, Jackett, Jellyseerr and Jellyfin are running as a Docker containers in Hurricane. - Gotify: Self-hosted push notification service in Adam (arm64). - Pixel 7 Pro: Krishna's personal mobile phone. -- Proxmox VE: Open-source virtualization management platform. - HS103 devices are Smart Wi-Fi Power Plugs (IoT devices). - Android-2, Raspberry Pi 5, Kodi, and Kraken all denote the Android TV in the Bedroom. - Adam, Gemini, Hurricane and Phoenix are servers running different services locally. diff --git a/prompts/homeassistant-get-state.txt b/prompts/homeassistant-get-state.txt index 46be68a..fb19767 100644 --- a/prompts/homeassistant-get-state.txt +++ b/prompts/homeassistant-get-state.txt @@ -1,8 +1,10 @@ You are a Home Assistant AI with access to your sensor data. Your task is to interpret the information from the your sensors to answer the user's query. Your answers should be truthful, analytical, brief, condense with information and useful. Your tone must only be conversational. You must strictly avoid lists, breaks, colons, or any formal structuring. ## You must strictly follow these Guidelines: -When engaging with topics like system resources or sensor data, communicate in a natural, continuous style that mimics human conversation. Use complete sentences and maintain a seamless, brief narrative, avoiding overly technical jargon unless pertinent. As a System Administrator, crisply analyze tasks and potential bottlenecks, and briefly relate server applications to their performance. Trust and directly link sensor data to practical impacts on daily routines or health, emphasizing concise and deep interpretations without extraneous details. Use assertive language to present data implications confidently, and avoid trivial explanations, assuming the user has a foundational understanding. Accept sensor data as accurate, refraining from questioning its validity. Use sensor names interpretatively instead of directly using the sensor names. Assume the user knows the source of the sensor data; avoid repetitive introductions. Avoid using colons or formal introductions in responses. Start directly with the information, ensuring it flows as part of a natural conversation. This rule applies universally across all topics, including weather and system resource data. Do not over explain an issue. Extract and use as much as numerical metrics possible from the sensor data to improve response valdity. Avoid discussing information that the expert user might already know. -Optimize responses to fully address the user's query, ensuring truthfulness and completeness without resorting to overly simplistic answers. Prioritize scenarios requiring detailed analysis while respecting the overall guidelines. Answer the queries truthfully. If you lack data to answer the question, provide your effort and briefly explain why you can't directly answer. You must always interpret the sensor information to answer the query in a concise, spoken, human readable and understandable way. +When engaging with topics like system resources or sensor data, communicate in a natural, continuous style that mimics human conversation. Use complete sentences and maintain a seamless, brief narrative, avoiding overly technical jargon unless pertinent. As a System Administrator, crisply analyze tasks and potential bottlenecks, and briefly relate server applications to their performance. Trust and directly link sensor data to practical impacts on daily routines or health, emphasizing concise and deep interpretations without extraneous details. Use assertive language to present data implications confidently, and avoid trivial explanations, assuming the user has a foundational understanding. Accept sensor data as accurate, refraining from questioning its validity. Use sensor names interpretatively instead of directly using the sensor names. Assume the user knows the source of the sensor data; avoid repetitive introductions. Avoid using colons or formal introductions in responses. Start directly with the information, ensuring it flows as part of a natural conversation. This rule applies universally across all topics, including weather and system resource data. Do not over explain an issue. Extract and use as much as numerical metrics possible from the sensor data to improve response valdity. Avoid discussing information that the expert user might already know. Optimize responses to fully address the user's query, ensuring truthfulness, numerical metrics (such as percentages, temperature, etc.) and completeness without resorting to overly simplistic answers. Prioritize scenarios requiring detailed analysis while respecting the overall guidelines. Answer the queries truthfully. If you lack data to answer the question, provide your effort and briefly explain why you can't directly answer. You must always interpret the sensor information to answer the query in a concise, spoken, human readable and understandable way. + +## Examples +- Humans perceives weather based on comfort thresholds influenced by temperature, humidity, wind speed, precipitation, and atmospheric pressure. These factors interact with physiological responses, such as thermal sensation and skin moisture, shaping perceived comfort or discomfort. Therefore, you can consider these variable while interpreting weather. ## Additional Sensor Information: - Pi-Hole: Network-wide ad blocker. From cdb10dc8b31ccba9de5399275909f62f8db9587f Mon Sep 17 00:00:00 2001 From: Krishnakanth Alagiri Date: Thu, 16 May 2024 17:17:31 -0400 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20Home=20Assistant=20Co?= =?UTF-8?q?nversation=20Integration=20for=20Meeseeks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 ++- docs/screenshot_ha_assist_1.png | Bin 0 -> 93994 bytes docs/screenshot_ha_assist_2.png | Bin 0 -> 100752 bytes meeseeks-api/README.md | 9 +- meeseeks-chat/README.md | 17 +- meeseeks_ha_conversation/README.md | 25 +++ meeseeks_ha_conversation/__init__.py | 168 +++++++++++++++ meeseeks_ha_conversation/api.py | 101 +++++++++ meeseeks_ha_conversation/config_flow.py | 198 ++++++++++++++++++ meeseeks_ha_conversation/const.py | 41 ++++ meeseeks_ha_conversation/coordinator.py | 43 ++++ meeseeks_ha_conversation/exceptions.py | 14 ++ meeseeks_ha_conversation/helpers.py | 24 +++ meeseeks_ha_conversation/manifest.json | 16 ++ meeseeks_ha_conversation/strings.json | 42 ++++ meeseeks_ha_conversation/translations/en.json | 58 +++++ 16 files changed, 772 insertions(+), 10 deletions(-) create mode 100644 docs/screenshot_ha_assist_1.png create mode 100644 docs/screenshot_ha_assist_2.png create mode 100644 meeseeks_ha_conversation/README.md create mode 100644 meeseeks_ha_conversation/__init__.py create mode 100644 meeseeks_ha_conversation/api.py create mode 100644 meeseeks_ha_conversation/config_flow.py create mode 100644 meeseeks_ha_conversation/const.py create mode 100644 meeseeks_ha_conversation/coordinator.py create mode 100644 meeseeks_ha_conversation/exceptions.py create mode 100644 meeseeks_ha_conversation/helpers.py create mode 100644 meeseeks_ha_conversation/manifest.json create mode 100644 meeseeks_ha_conversation/strings.json create mode 100644 meeseeks_ha_conversation/translations/en.json diff --git a/README.md b/README.md index a2fa1cf..02b1c4b 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,9 @@

Wiki GitHub Actions Workflow Status - Docker Image GitHub Release + Docker Image + Docker Image

@@ -26,7 +27,7 @@ Meeseeks is an innovative AI assistant built on a multi-agent large language mod | Completed | In-Progress | Planned | Scoping | | :-------: | :---------: | :-----: | :-----: | -| ✅ | 🚧 | 📅 | 🧐 | +| ✅ | 🚧 | 📅 | 🧐 | @@ -34,22 +35,33 @@ Meeseeks is an innovative AI assistant built on a multi-agent large language mod > [!NOTE] > Visit [**Features - Wiki**](https://github.com/bearlike/Personal-Assistant/wiki/Features) for detailed information on tools and integration capabilities. + + + + + + + + + +
Answer questions and interpret sensor informationControl devices and entities
ScreenshotScreenshot
+ - (✅) [LangFuse](https://github.com/langfuse/langfuse) integrations to accurate log and monitor chains. - (✅) Use natural language to interact with integrations and tools. -- (🚧) Simple REST API interface for 3rd party tools to interface with Meeseeks. +- (✅) Simple REST API interface for 3rd party tools to interface with Meeseeks. - (✅) Handles complex user queries by breaking them into actionable steps, executing these steps, and then summarizing on the results. -- (🚧) Custom [Home Assistant Conversation Integration](https://www.home-assistant.io/integrations/conversation/) to allow voice assistance via [**HA Assist**](https://www.home-assistant.io/voice_control/). +- (✅) Custom [Home Assistant Conversation Integration](https://www.home-assistant.io/integrations/conversation/) to allow voice assistance via [**HA Assist**](https://www.home-assistant.io/voice_control/). - (✅) A chat Interface using `streamlit` that shows the action plan, user types, and response from the LLM. ## Extras 👽 Optional feature that users can choose to install to further optimize their experience. -- (🧐) **`Quality`** Use [CRITIC reflection framework](https://arxiv.org/pdf/2305.11738) to reflect on a response to a task/query using external tools via [`[^]`](https://llamahub.ai/l/agent/llama-index-agent-introspective). -- (📅) **`Privacy`** Integrate with [microsoft/presidio](https://github.com/microsoft/presidio) for customizable PII de-identification. +- (📅) **`Quality`** Use [CRITIC reflection framework](https://arxiv.org/pdf/2305.11738) to reflect on a response to a task/query using external tools via [`[^]`](https://llamahub.ai/l/agent/llama-index-agent-introspective). +- (🚧) **`Privacy`** Integrate with [microsoft/presidio](https://github.com/microsoft/presidio) for customizable PII de-identification. ## Integrations 📦 - (✅) [Home Assistant](https://github.com/home-assistant/core) - (🚧) Google Calendar -- (📅) Google Search, Search recent ArXiv papers and summaries, Yahoo Finance, Yelp +- (🚧) Google Search, Search recent ArXiv papers and summaries, Yahoo Finance, Yelp - (🧐) Android Debugging Shell ## Installating and Running Meeseeks diff --git a/docs/screenshot_ha_assist_1.png b/docs/screenshot_ha_assist_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a01a5e3d9b7d7c20f8a1216afb63091f22b41d GIT binary patch literal 93994 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%0DB=Ks8hzco9ay}cJMRKj~dV+9>Ovc=1pXMiJ+ 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 literal 0 HcmV?d00001 diff --git a/docs/screenshot_ha_assist_2.png b/docs/screenshot_ha_assist_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b76a86d03066440d156e7f6ed77a5ed07bd9ad67 GIT binary patch literal 100752 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 Q + Wiki + Docker Image + GitHub Release +

- REST API Engine wrapped around the meeseeks-core. - No components are explicitly tested for safety or security. Use with caution in a production environment. +- For more information, such as installation, please check out the [Wiki](https://github.com/bearlike/Personal-Assistant/wiki). + [Link to GitHub Repository](https://github.com/bearlike/Personal-Assistant) diff --git a/meeseeks-chat/README.md b/meeseeks-chat/README.md index 31a2396..8968338 100644 --- a/meeseeks-chat/README.md +++ b/meeseeks-chat/README.md @@ -1,5 +1,18 @@ -# meeseeks-chat +# Meeseeks - Chat Interface +

+ Wiki + Docker Image + GitHub Release +

+ + +

+ Screenshot of Meeseks WebUI +

+ + +- Chat Interface wrapped around the meeseeks-core. Powered by Streamlit. +- For more information, such as installation, please check out the [Wiki](https://github.com/bearlike/Personal-Assistant/wiki). -Chat Interface wrapped around the meeseeks-core. Powered by Streamlit. [Link to GitHub](https://github.com/bearlike/Personal-Assistant) diff --git a/meeseeks_ha_conversation/README.md b/meeseeks_ha_conversation/README.md new file mode 100644 index 0000000..f84fcc8 --- /dev/null +++ b/meeseeks_ha_conversation/README.md @@ -0,0 +1,25 @@ +# Home Assistant Conversation Integration for Meeseeks 🚀 + +

+ Wiki + GitHub Release +

+ + + + + + + + + + + +
Answer questions and interpret sensor informationControl devices and entities
ScreenshotScreenshot
+ +- Home Assistant Conversation Integration for Meeseeks. Can be used with HA Assist ⭐. +- Wrapped around the REST API Engine for Meeseeks. 100% coverage of Meeseeks API. +- No components are explicitly tested for safety or security. Use with caution in a production environment. +- For more information, such as installation, please check out the [Wiki](https://github.com/bearlike/Personal-Assistant/wiki). + +[Link to GitHub Repository](https://github.com/bearlike/Personal-Assistant) diff --git a/meeseeks_ha_conversation/__init__.py b/meeseeks_ha_conversation/__init__.py new file mode 100644 index 0000000..99bfb06 --- /dev/null +++ b/meeseeks_ha_conversation/__init__.py @@ -0,0 +1,168 @@ +"""Custom integration to integrate meeseeks_conversation with Home Assistant. + +For more details about this integration, please refer to +https://github.com/bearlike/personal-Assistant/ +""" +from __future__ import annotations + +from typing import Literal + +from homeassistant.components import conversation +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import MATCH_ALL +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import ConfigEntryNotReady, HomeAssistantError +from homeassistant.helpers import intent, template +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.util import ulid + +from .api import MeeseeksApiClient +from .const import ( + DOMAIN, LOGGER, + CONF_BASE_URL, + CONF_TIMEOUT, + DEFAULT_TIMEOUT, +) +# User-defined imports +from .coordinator import MeeseeksDataUpdateCoordinator +from .exceptions import ( + ApiClientError, + ApiCommError, + ApiJsonError, + ApiTimeoutError +) +# from .helpers import get_exposed_entities + +async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Set up Meeseeks conversation using UI.""" + # https://developers.home-assistant.io/docs/config_entries_index/#setting-up-an-entry + hass.data.setdefault(DOMAIN, {}) + client = MeeseeksApiClient( + base_url=entry.data[CONF_BASE_URL], + timeout=entry.options.get(CONF_TIMEOUT, DEFAULT_TIMEOUT), + session=async_get_clientsession(hass), + ) + + hass.data[DOMAIN][entry.entry_id] = coordinator = MeeseeksDataUpdateCoordinator( + hass, + client, + ) + # https://developers.home-assistant.io/docs/integration_fetching_data#coordinated-single-api-poll-for-data-for-all-entities + await coordinator.async_config_entry_first_refresh() + + try: + # TODO: Heartbeat check is not implemented but it is still wrapped. + response = await client.async_get_heartbeat() + if not response: + raise ApiClientError("Invalid Meeseeks server") + except ApiClientError as err: + raise ConfigEntryNotReady(err) from err + + entry.async_on_unload(entry.add_update_listener(async_reload_entry)) + + conversation.async_set_agent( + hass, entry, MeeseeksAgent(hass, entry, client)) + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Unload Meeseeks conversation.""" + conversation.async_unset_agent(hass, entry) + return True + + +async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: + """Reload Meeseeks conversation.""" + await async_unload_entry(hass, entry) + await async_setup_entry(hass, entry) + + +class MeeseeksAgent(conversation.AbstractConversationAgent): + """Meeseeks conversation agent.""" + + def __init__(self, hass: HomeAssistant, entry: ConfigEntry, client: MeeseeksApiClient) -> None: + """Initialize the agent.""" + self.hass = hass + self.entry = entry + self.client = client + self.history: dict[str, dict] = {} + + @property + def supported_languages(self) -> list[str] | Literal["*"]: + """Return a list of supported languages.""" + return MATCH_ALL + + async def async_process( + self, user_input: conversation.ConversationInput + ) -> conversation.ConversationResult: + """Process a sentence.""" + # * If needeed in the future, uncomment the following lines + # raw_system_prompt = self.entry.options.get( + # CONF_PROMPT_SYSTEM, DEFAULT_PROMPT_SYSTEM) + # exposed_entities = get_exposed_entities(self.hass) + # ! Currently, history is not used but still implemented for future use + if user_input.conversation_id in self.history: + conversation_id = user_input.conversation_id + messages = self.history[conversation_id] + else: + conversation_id = ulid.ulid() + system_prompt = "" + messages = { + "system": system_prompt, + "context": None, + } + + messages["prompt"] = user_input.text + + try: + response = await self.query(messages) + except HomeAssistantError as err: + LOGGER.error("Something went wrong: %s", err) + intent_response = intent.IntentResponse( + language=user_input.language) + intent_response.async_set_error( + intent.IntentResponseErrorCode.UNKNOWN, + "Something went wrong, please check the logs for more information.", + ) + return conversation.ConversationResult( + response=intent_response, conversation_id=conversation_id + ) + + messages["context"] = response["context"] + self.history[conversation_id] = messages + + intent_response = intent.IntentResponse(language=user_input.language) + intent_response.async_set_speech(response["response"]) + return conversation.ConversationResult( + response=intent_response, conversation_id=conversation_id + ) + + def _async_generate_prompt(self, raw_prompt: str, exposed_entities) -> str: + """Generate a prompt for the user.""" + return template.Template(raw_prompt, self.hass).async_render( + { + "ha_name": self.hass.config.location_name, + "exposed_entities": exposed_entities, + }, + parse_result=False, + ) + + async def query( + self, + messages + ): + """Process a sentence.""" + # model = self.entry.options.get(CONF_MODEL, DEFAULT_MODEL) + # LOGGER.debug("Prompt for %s: %s", model, messages["prompt"]) + + # TODO: $context, and $system are not used but still implemented for + # future use + # * Generator + result = await self.client.async_generate({ + "context": messages["context"], + "system": messages["system"], + "prompt": messages["prompt"], + }) + response: str = result["task_result"] + LOGGER.debug("Response %s", response) + return result diff --git a/meeseeks_ha_conversation/api.py b/meeseeks_ha_conversation/api.py new file mode 100644 index 0000000..472f55a --- /dev/null +++ b/meeseeks_ha_conversation/api.py @@ -0,0 +1,101 @@ +""" Meeseeks API Client. """ +from __future__ import annotations + +import aiohttp +import async_timeout +import json + +# User-defined imports +from .exceptions import ( + ApiClientError, + ApiCommError, + ApiJsonError, + ApiTimeoutError +) +from .const import LOGGER + + +class MeeseeksApiClient: + """Meeseeks API Client.""" + + def __init__( + self, + base_url: str, + timeout: int, + session: aiohttp.ClientSession, + ) -> None: + """Sample API Client.""" + self._base_url = base_url.rstrip("/") + self._api_key = 'msk-strong-password' + self.timeout = timeout + self._session = session + + async def async_get_heartbeat(self) -> bool: + """Get heartbeat from the API.""" + # TODO: Implement a heartbeat check + return True + + async def async_get_models(self) -> any: + """Get models from the API.""" + # TODO: This is monkey-patched for now + response_data = { + "models": [ + { + "name": "meeseeks", + "modified_at": "2023-11-01T00:00:00.000000000-04:00", + "size": 0, + "digest": None + } + ] + } + return json.dumps(response_data) + + async def async_generate(self, data: dict | None = None,) -> any: + """Generate a completion from the API.""" + url_query = f"{self._base_url}/api/query" + data_custom = { + 'query': str(data["prompt"]).strip(), + } + # Pass headers as None to use the default headers + return await self._meeseeks_api_wrapper( + method="post", + url=url_query, + data=data_custom, + headers=None, + ) + + async def _meeseeks_api_wrapper( + self, + method: str, + url: str, + data: dict | None = None, + headers: dict | None = None, + decode_json: bool = True, + ) -> any: + """Get information from the API.""" + if headers is None: + headers = { + 'accept': 'application/json', + 'X-API-KEY': self._api_key, + 'Content-Type': 'application/json', + } + async with async_timeout.timeout(self.timeout): + response = await self._session.request( + method=method, + url=url, + headers=headers, + json=data, + ) + response.raise_for_status() + + if decode_json: + response_data = await response.json() + if response.status == 404: + raise ApiJsonError(response_data["error"]) + LOGGER.debug(f"Response data: {response_data}") + response_data["response"] = response_data["task_result"] + response_data["context"] = response_data["task_result"] + return response_data + else: + LOGGER.debug("Fallback to text response") + return await response.text() diff --git a/meeseeks_ha_conversation/config_flow.py b/meeseeks_ha_conversation/config_flow.py new file mode 100644 index 0000000..baa06ad --- /dev/null +++ b/meeseeks_ha_conversation/config_flow.py @@ -0,0 +1,198 @@ +"""Adds config flow for Meeseeks.""" +from __future__ import annotations + +import types +from typing import Any +import voluptuous as vol + +from homeassistant import config_entries +from homeassistant.data_entry_flow import FlowResult +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.aiohttp_client import async_create_clientsession +from homeassistant.helpers.selector import ( + NumberSelector, + NumberSelectorConfig, + TemplateSelector, + SelectSelector, + SelectSelectorConfig, + SelectSelectorMode, + SelectOptionDict +) +# User-defined imports +from .api import MeeseeksApiClient +from .const import ( + DOMAIN, LOGGER, + MENU_OPTIONS, + + CONF_BASE_URL, + CONF_API_KEY, + CONF_TIMEOUT, + CONF_MODEL, + CONF_CTX_SIZE, + CONF_MAX_TOKENS, + CONF_MIROSTAT_MODE, + CONF_MIROSTAT_ETA, + CONF_MIROSTAT_TAU, + CONF_TEMPERATURE, + CONF_REPEAT_PENALTY, + CONF_TOP_K, + CONF_TOP_P, + CONF_PROMPT_SYSTEM, + + DEFAULT_BASE_URL, + DEFAULT_API_KEY, + DEFAULT_TIMEOUT, + DEFAULT_MODEL, + DEFAULT_CTX_SIZE, + DEFAULT_MAX_TOKENS, + DEFAULT_MIROSTAT_MODE, + DEFAULT_MIROSTAT_ETA, + DEFAULT_MIROSTAT_TAU, + DEFAULT_TEMPERATURE, + DEFAULT_REPEAT_PENALTY, + DEFAULT_TOP_K, + DEFAULT_TOP_P, + DEFAULT_PROMPT_SYSTEM +) +from .exceptions import ( + ApiClientError, + ApiCommError, + ApiTimeoutError +) + + +STEP_USER_DATA_SCHEMA = vol.Schema( + { + vol.Required(CONF_BASE_URL, default=DEFAULT_BASE_URL): str, + vol.Required(CONF_API_KEY, default=DEFAULT_API_KEY): str, + vol.Required(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): int, + } +) + +DEFAULT_OPTIONS = types.MappingProxyType( + { + CONF_BASE_URL: DEFAULT_BASE_URL, + CONF_API_KEY: DEFAULT_API_KEY, + CONF_TIMEOUT: DEFAULT_TIMEOUT, + CONF_MODEL: DEFAULT_MODEL, + CONF_PROMPT_SYSTEM: DEFAULT_PROMPT_SYSTEM + } +) + + +class MeeseeksConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): + """Handle a config flow for Meeseeks Conversation. Handles UI wizard.""" + + VERSION = 1 + + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Handle the initial step.""" + if user_input is None: + return self.async_show_form( + step_id="user", data_schema=STEP_USER_DATA_SCHEMA + ) + + # Search for duplicates with the same CONF_BASE_URL value. + for existing_entry in self._async_current_entries(include_ignore=False): + if existing_entry.data.get(CONF_BASE_URL) == user_input[CONF_BASE_URL]: + return self.async_abort(reason="already_configured") + + errors = {} + try: + self.client = MeeseeksApiClient( + base_url=cv.url_no_path(user_input[CONF_BASE_URL]), + timeout=user_input[CONF_TIMEOUT], + session=async_create_clientsession(self.hass), + ) + response = await self.client.async_get_heartbeat() + if not response: + raise vol.Invalid("Invalid Meeseeks server") + # except vol.Invalid: + # errors["base"] = "invalid_url" + # except ApiTimeoutError: + # errors["base"] = "timeout_connect" + # except ApiCommError: + # errors["base"] = "cannot_connect" + # except ApiClientError as exception: + # LOGGER.exception("Unexpected exception: %s", exception) + # errors["base"] = "unknown" + except Exception as exception: + LOGGER.exception("Unexpected exception: %s", exception) + errors["base"] = "unknown" + else: + return self.async_create_entry( + title=f"Meeseeks - {user_input[CONF_BASE_URL]}", + data={ + CONF_BASE_URL: user_input[CONF_BASE_URL] + }, + options={ + CONF_TIMEOUT: user_input[CONF_TIMEOUT] + } + ) + + return self.async_show_form( + step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors + ) + + @staticmethod + def async_get_options_flow( + config_entry: config_entries.ConfigEntry, + ) -> config_entries.OptionsFlow: + """Create the options flow.""" + return MeeseeksOptionsFlow(config_entry) + + +class MeeseeksOptionsFlow(config_entries.OptionsFlow): + """Meeseeks config flow options handler.""" + + def __init__(self, config_entry: config_entries.ConfigEntry) -> None: + """Initialize options flow.""" + self.config_entry = config_entry + self.options = dict(config_entry.options) + + async def async_step_init( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Manage the options.""" + return self.async_show_menu( + step_id="init", + menu_options=MENU_OPTIONS + ) + + async def async_step_all_set( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Manage the options.""" + return self.async_show_menu( + step_id="init", + menu_options=MENU_OPTIONS + ) + + async def async_step_general_config( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Manage the options.""" + return self.async_show_menu( + step_id="init", + menu_options=MENU_OPTIONS + ) + + async def async_step_prompt_system( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Manage the options.""" + return self.async_show_menu( + step_id="init", + menu_options=MENU_OPTIONS + ) + + async def async_step_model_config( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Manage the options.""" + return self.async_show_menu( + step_id="init", + menu_options=MENU_OPTIONS + ) diff --git a/meeseeks_ha_conversation/const.py b/meeseeks_ha_conversation/const.py new file mode 100644 index 0000000..0d7e456 --- /dev/null +++ b/meeseeks_ha_conversation/const.py @@ -0,0 +1,41 @@ +"""Constants for meeseeks_conversation.""" +from logging import Logger, getLogger + +LOGGER: Logger = getLogger(__package__) + +NAME = "Meeseeks" +DOMAIN = "meeseeks_conversation" + +MENU_OPTIONS = ["all_set"] +# MENU_OPTIONS = ["general_config", "model_config", "prompt_system"] + +CONF_BASE_URL = "base_url" +CONF_API_KEY = "api_key" +CONF_TIMEOUT = "timeout" +CONF_MODEL = "chat_model" +CONF_CTX_SIZE = "ctx_size" +CONF_MAX_TOKENS = "max_tokens" +CONF_MIROSTAT_MODE = "mirostat_mode" +CONF_MIROSTAT_ETA = "mirostat_eta" +CONF_MIROSTAT_TAU = "mirostat_tau" +CONF_TEMPERATURE = "temperature" +CONF_REPEAT_PENALTY = "repeat_penalty" +CONF_TOP_K = "top_k" +CONF_TOP_P = "top_p" +CONF_PROMPT_SYSTEM = "prompt" + +DEFAULT_BASE_URL = "http://meeseeks.server:5123" +DEFAULT_API_KEY = "msk-strong-password" +DEFAULT_TIMEOUT = 60 +DEFAULT_MODEL = "llama2:latest" +DEFAULT_CTX_SIZE = 2048 +DEFAULT_MAX_TOKENS = 128 +DEFAULT_MIROSTAT_MODE = "0" +DEFAULT_MIROSTAT_ETA = 0.1 +DEFAULT_MIROSTAT_TAU = 5.0 +DEFAULT_TEMPERATURE = 0.8 +DEFAULT_REPEAT_PENALTY = 1.1 +DEFAULT_TOP_K = 40 +DEFAULT_TOP_P = 0.9 + +DEFAULT_PROMPT_SYSTEM = "" diff --git a/meeseeks_ha_conversation/coordinator.py b/meeseeks_ha_conversation/coordinator.py new file mode 100644 index 0000000..f4d791a --- /dev/null +++ b/meeseeks_ha_conversation/coordinator.py @@ -0,0 +1,43 @@ +"""DataUpdateCoordinator for meeseeks_conversation.""" +from __future__ import annotations + +from datetime import timedelta + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import ( + DataUpdateCoordinator, + UpdateFailed, +) + +from .api import MeeseeksApiClient +from .const import DOMAIN, LOGGER +from .exceptions import ApiClientError + + +# https://developers.home-assistant.io/docs/integration_fetching_data#coordinated-single-api-poll-for-data-for-all-entities +class MeeseeksDataUpdateCoordinator(DataUpdateCoordinator): + """Class to manage fetching data from the API.""" + + config_entry: ConfigEntry + + def __init__( + self, + hass: HomeAssistant, + client: MeeseeksApiClient, + ) -> None: + """Initialize.""" + self.client = client + super().__init__( + hass=hass, + logger=LOGGER, + name=DOMAIN, + update_interval=timedelta(minutes=5), + ) + + async def _async_update_data(self): + """Update data via library.""" + try: + return await self.client.async_get_heartbeat() + except ApiClientError as exception: + raise UpdateFailed(exception) from exception diff --git a/meeseeks_ha_conversation/exceptions.py b/meeseeks_ha_conversation/exceptions.py new file mode 100644 index 0000000..e0c898e --- /dev/null +++ b/meeseeks_ha_conversation/exceptions.py @@ -0,0 +1,14 @@ +"""The exceptions used by Extended OpenAI Conversation.""" +from homeassistant.exceptions import HomeAssistantError + +class ApiClientError(HomeAssistantError): + """Exception to indicate a general API error.""" + +class ApiCommError(ApiClientError): + """Exception to indicate a communication error.""" + +class ApiJsonError(ApiClientError): + """Exception to indicate an error with json response.""" + +class ApiTimeoutError(ApiClientError): + """Exception to indicate a timeout error.""" diff --git a/meeseeks_ha_conversation/helpers.py b/meeseeks_ha_conversation/helpers.py new file mode 100644 index 0000000..ab08498 --- /dev/null +++ b/meeseeks_ha_conversation/helpers.py @@ -0,0 +1,24 @@ +"""Helper functions for Meeseeks.""" + +from homeassistant.components.conversation import DOMAIN as CONVERSATION_DOMAIN +from homeassistant.components.homeassistant.exposed_entities import async_should_expose +from homeassistant.core import HomeAssistant +from homeassistant.helpers import entity_registry + + +def get_exposed_entities(hass: HomeAssistant) -> list[dict]: + """Return exposed entities.""" + hass_entity = entity_registry.async_get(hass) + exposed_entities: list[dict] = [] + + for state in hass.states.async_all(): + if async_should_expose(hass, CONVERSATION_DOMAIN, state.entity_id): + entity = hass_entity.async_get(state.entity_id) + exposed_entities.append({ + "entity_id": state.entity_id, + "name": state.name, + "state": state.state, + "aliases": entity.aliases if entity else [], + }) + + return exposed_entities diff --git a/meeseeks_ha_conversation/manifest.json b/meeseeks_ha_conversation/manifest.json new file mode 100644 index 0000000..e506dab --- /dev/null +++ b/meeseeks_ha_conversation/manifest.json @@ -0,0 +1,16 @@ +{ + "domain": "meeseeks_conversation", + "name": "Meeseeks", + "codeowners": [ + "@bearlike" + ], + "config_flow": true, + "dependencies": [ + "conversation" + ], + "documentation": "https://github.com/bearlike/Personal-Assistant", + "integration_type": "service", + "iot_class": "cloud_polling", + "issue_tracker": "https://github.com/bearlike/Personal-Assistant/issues", + "version": "v1.2.0" +} diff --git a/meeseeks_ha_conversation/strings.json b/meeseeks_ha_conversation/strings.json new file mode 100644 index 0000000..06bc60e --- /dev/null +++ b/meeseeks_ha_conversation/strings.json @@ -0,0 +1,42 @@ +{ + "config": { + "step": { + "user": { + "data": { + "base_url": "Base URL", + "api_key": "API Key", + "timeout": "API Timeout" + } + } + }, + "error": { + "cannot_connect": "Unable to connect", + "invalid_url": "Invalid URL", + "timeout_connect": "Timeout while establishing connection", + "unknown": "Unexpected error, please check logs" + }, + "abort": { + "already_configured": "Service is already exist and configured" + } + }, + "options": { + "step": { + "init": { + "menu_options": { + "general_config": "General Settings", + "prompt_system": "System Prompt", + "all_set": "Nothing to configure. You're all set!" + } + }, + "general_config": { + "title": "General Settings", + "data": { + "timeout": "API Timeout" + } + }, + "prompt_system": { + "title": "System Prompt" + } + } + } +} diff --git a/meeseeks_ha_conversation/translations/en.json b/meeseeks_ha_conversation/translations/en.json new file mode 100644 index 0000000..eb37c1e --- /dev/null +++ b/meeseeks_ha_conversation/translations/en.json @@ -0,0 +1,58 @@ +{ + "config": { + "step": { + "user": { + "data": { + "base_url": "Base URL", + "api_key": "API Key", + "timeout": "API Timeout" + } + } + }, + "error": { + "cannot_connect": "Failed to connect", + "invalid_url": "Invalid URL", + "timeout_connect": "Timeout establishing connection", + "unknown": "Unexpected error, check logs" + }, + "abort": { + "already_configured": "Service is already configured" + } + }, + "options": { + "step": { + "init": { + "menu_options": { + "general_config": "General Settings", + "model_config": "Model Configuration", + "prompt_system": "System Prompt", + "all_set": "Nothing to configure. You're all set!" + } + }, + "general_config": { + "title": "General Settings", + "data": { + "timeout": "API Timeout" + } + }, + "model_config": { + "title": "Model Configuration", + "data": { + "chat_model": "Model", + "ctx_size": "Context Size", + "max_tokens": "Maximum Tokens", + "mirostat_mode": "Mirostat Mode", + "mirostat_eta": "Mirostat ETA", + "mirostat_tau": "Mirostat TAU", + "repeat_penalty": "Repeat Penalty", + "temperature": "Temperature", + "top_p": "Top P", + "top_k": "Top K" + } + }, + "prompt_system": { + "title": "System Prompt" + } + } + } +}