diff --git a/_notes/arti/.excalidraw.svg b/_notes/arti/.excalidraw.svg
new file mode 100644
index 0000000..85c7697
--- /dev/null
+++ b/_notes/arti/.excalidraw.svg
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/_notes/arti/ideas.md b/_notes/arti/ideas.md
new file mode 100644
index 0000000..bf92d46
--- /dev/null
+++ b/_notes/arti/ideas.md
@@ -0,0 +1,27 @@
+Key features & principles:
+ - modal/plug & play design
+ - Biomimicing based
+ - self inferencing loop
+ - Graph->LLM->Graph based logic (Self reflect)
+ - attention (Short term memory)
+ - generalized & contextuaized memory schema (memory is strongly context dependent and temporal)
+LLM module
+Graph module
+Short term memory module
+mid-term memory (history on the toppic)
+graph powered long term memory with embedding storage for skills & AII ( interface on some of the layers)
+separate text IOs"
+ - multi agent communication module/console/
+ - internal state/context/mood/STM
+ - actions output
+
+
+
+ GRAPH schema
+
+ idea
+ - is child of
+
+ Q: Brainstorm neo4j schema for biomimicing memory storage as neo4j graph database. It should be similar to the way humans store, retrieve and generalize knowledge
+
+Memory model:
diff --git a/_notes/arti/neo4j.cql b/_notes/arti/neo4j.cql
new file mode 100644
index 0000000..ee985b8
--- /dev/null
+++ b/_notes/arti/neo4j.cql
@@ -0,0 +1,82 @@
+
+
+# Cypher Query Language
+
+Runs a simple command to clean the database
+MATCH (n) DETACH DELETE n
+
+
+CREATE INDEX FOR (c:Category) ON (c.catId);
+CREATE INDEX FOR (c:Category) ON (c.catName);
+CREATE INDEX FOR (p:Page) ON (p.pageTitle);
+CREATE (c:Category:RootCategory {catId: 0, catName: 'Databases', subcatsFetched: false, pagesFetched: false, level: 0});
+
+
+RUN mkdir -p /var/lib/neo4j/plugins \
+ && cd /var/lib/neo4j/plugins \
+ && curl -L -O https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/4.4.0.0/apoc-4.4.0.0-all.jar
+
+
+
+
+
+
+CALL {
+ LOAD CSV FROM "https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/cats.csv?raw=true" AS row
+ CREATE (c:Category { catId: row[0]})
+ SET c.catName = row[2], c.pageCount = toInteger(row[3]), c.subcatCount = toInteger(row[4])
+}
+
+LOAD CSV FROM "https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
+MATCH (from:Category { catId: row[0]})
+MATCH (to:Category { catId: row[1]})
+CREATE (from)-[:SUBCAT_OF]->(to)
+
+
+MATCH (c:Category)
+return SUM(c.pageCount) AS `#pages categorised (with duplicates)`,
+ AVG(c.pageCount) AS `average #pages per cat`,
+ percentileCont(c.pageCount, 0.75) AS `.75p #pages in a cat`,
+ MIN(c.pageCount) AS `min #pages in a cat`,
+ MAX(c.pageCount) AS `max #pages in a cat`
+
+MATCH (c:Category)
+WHERE NOT (c)-[:SUBCAT_OF]-()
+RETURN COUNT(c)
+
+
+
+MATCH (c:Category)
+WHERE c.catName CONTAINS '{term}'
+RETURN c;
diff --git a/_notes/arti/wikidata/import.sh b/_notes/arti/wikidata/import.sh
new file mode 100644
index 0000000..caad9ff
--- /dev/null
+++ b/_notes/arti/wikidata/import.sh
@@ -0,0 +1,33 @@
+{
+ /* the Wikidata JSON file */
+ "file": "./wikidata-dump.json",
+
+ /* neo4j connection details */
+ "neo4j": {
+ /* bolt protocol URI */
+ "bolt": "bolt://localhost",
+ "auth": {
+ "user": "neo4j",
+ "pass": "password"
+ }
+ },
+ /* Stages */
+ "do": {
+ /* database cleanup */
+ "0": true,
+ /* importing items and properties */
+ "1": true,
+ /* linking entities and generating claims */
+ "2": true
+ },
+ /* extra console output on stage 2 */
+ "verbose": false,
+ /* how many commands will be ran by the DB at a given time */
+ "concurrency": 4,
+ /* skip lines */
+ "skip": 0,
+ /* count of lines */
+ "lines": 21225524,
+ /* bucket size of entities sent to DB to process */
+ "bucket": 1000
+}
\ No newline at end of file
diff --git a/agent-mobile/artimobile/supervisord.pid b/agent-mobile/artimobile/supervisord.pid
deleted file mode 100644
index 7f8f011..0000000
--- a/agent-mobile/artimobile/supervisord.pid
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/coinbase_cloud_api_key.json b/coinbase_cloud_api_key.json
new file mode 100644
index 0000000..6cdd0a8
--- /dev/null
+++ b/coinbase_cloud_api_key.json
@@ -0,0 +1,17 @@
+{
+ "name": "organizations/8ba2cc53-567e-4490-ba31-0d57fa2573b6/apiKeys/eaeef0cf-eca2-4095-83a7-f850605a7e43",
+ "principal": "2764d364-d2c1-55c8-ac5f-aa91c6a9eff3",
+ "principalType": "USER",
+ "publicKey": "-----BEGIN EC PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyf3vQyFtLq8VkcD3FxpH9x3VdyhN\nG2CayTR6/7DeMlb3xU804anlrZHuTGLYD/V+IFUJOjRbbxRlFqpji3U5rg==\n-----END EC PUBLIC KEY-----\n",
+ "privateKey": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEICPSzTau+LTv8WaFkbovbTD5buiyJ7xg31TPUX3ugOBIoAoGCCqGSM49\nAwEHoUQDQgAEyf3vQyFtLq8VkcD3FxpH9x3VdyhNG2CayTR6/7DeMlb3xU804anl\nrZHuTGLYD/V+IFUJOjRbbxRlFqpji3U5rg==\n-----END EC PRIVATE KEY-----\n",
+ "createTime": "2024-03-06T09:44:24.799205586Z",
+ "projectId": "d487cc31-3ec5-4e67-8211-c6ca0fe3ac08",
+ "nickname": "cb",
+ "scopes": [
+ "rat/portfolio:2764d364-d2c1-55c8-ac5f-aa91c6a9eff3#trade",
+ "rat#trade"
+ ],
+ "allowedIps": [],
+ "keyType": "TRADING_KEY",
+ "enabled": true
+}
\ No newline at end of file
diff --git a/home/Prompt.md b/home/Prompt.md
new file mode 100644
index 0000000..2540cbe
--- /dev/null
+++ b/home/Prompt.md
@@ -0,0 +1,71 @@
+[{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\n
+
+Current Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\
+
+The current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nANSWER WITH JSON OBJECT IN FORMAT { {'id':{sequenceID}, 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': ... }}]}} .\nDo not restate or appreciate what user says, rather make a quick inquiry."},
+{'role': 'user', 'content': ' turn on bathroom fan'},
+{'id': 'chatcmpl-90fbfM6ILsdoE5ub08riAjbpGND1L', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709946963, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 35, 'prompt_tokens': 615, 'total_tokens': 650}},
+{'role': 'user', 'content': ' turn off bathroom fan'},
+ {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}
+ {'id': 'chatcmpl-90fbgAkWdo8CprLSmjV5V9wvnKqlm', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}}]},
+{'role': 'user', 'content': 'turn off bathroom fan'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIqF8Wsn9LPid', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]}]
+{'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"},
+ {'content': 'Bathroom fan has been turned off.', 'role': 'assistant'},
+{'role': 'user', 'content': 'спри вентилатора в банята'},
+{'role': 'user', 'content': 'turn off bathroom fan'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIeF8Wsn47dh8', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]},
+ {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"},
+{'content': 'Готово!', 'role': 'assistant'},
+ {'role': 'user', 'content': 'turn off kitchen lamp'}
+
+
+--------------->>
+
+[{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\n
+
+Current Time: {{now()}}
+Available Devices:
+```csv
+entity_id,name,state,aliases
+{% for entity in exposed_entities -%}
+{{ entity.entity_id }},{{ entity.name }},{{ entity.state }},{{entity.aliases | join('/')}}
+{% endfor -%}
+```
+
+The current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nANSWER WITH JSON OBJECT IN FORMAT { {'id':{sequenceID}, 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': ... }}]}} .\nDo not restate or appreciate what user says, rather make a quick inquiry."},
+{'role': 'user', 'content': ' turn on bathroom fan'},
+{'id': 'chatcmpl-90fbfM6ILsdoE5ub08riAjbpGND1L', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709946963, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 35, 'prompt_tokens': 615, 'total_tokens': 650}},
+{'role': 'user', 'content': ' turn off bathroom fan'},
+ {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}
+ {'id': 'chatcmpl-90fbgAkWdo8CprLSmjV5V9wvnKqlm', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}}]},
+{'role': 'user', 'content': 'turn off bathroom fan'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIqF8Wsn9LPid', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]}]
+{'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"},
+ {'content': 'Bathroom fan has been turned off.', 'role': 'assistant'},
+{'role': 'user', 'content': 'спри вентилатора в банята'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIeF8Wsn47dh8', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]},
+ {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"},
+{'content': 'Готово!', 'role': 'assistant'}
+
+
+
+----- short ---- no resonse ---
+[{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\n
+
+Current Time: {{now()}}
+Available Devices:
+```csv
+entity_id,name,state,aliases
+{% for entity in exposed_entities -%}
+{{ entity.entity_id }},{{ entity.name }},{{ entity.state }},{{entity.aliases | join('/')}}
+{% endfor -%}
+```
+
+The current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nANSWER WITH JSON OBJECT IN FORMAT { {'id':{sequenceID}, 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': ... }}]}} .\nDo not restate or appreciate what user says, rather make a quick inquiry."},
+{'role': 'user', 'content': ' turn on bathroom fan'},
+{'id': 'chatcmpl-90fbfM6ILsdoE5ub08riAjbpGND1L', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709946963, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 35, 'prompt_tokens': 615, 'total_tokens': 650}},
+{'role': 'user', 'content': ' turn off bathroom fan'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIqF8Wsn9LPid', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]}
+{'role': 'user', 'content': 'спри вентилатора в банята'},
+ {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIeF8Wsn47dh8', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}]}]
\ No newline at end of file
diff --git a/home/homeassistant.md b/home/homeassistant.md
new file mode 100644
index 0000000..6262058
--- /dev/null
+++ b/home/homeassistant.md
@@ -0,0 +1,2 @@
+ollama serve OLLAMA_DEBUG=1 #2245
+
diff --git a/home/logs.log b/home/logs.log
new file mode 100644
index 0000000..f028533
--- /dev/null
+++ b/home/logs.log
@@ -0,0 +1,20 @@
+2024-03-09 03:16:03.541 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': ' turn on bathroom fan'}]
+2024-03-09 03:16:04.512 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fbfM6ILsdoE5ub08riAjbpGND1L', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709946963, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 35, 'prompt_tokens': 615, 'total_tokens': 650}}
+2024-03-09 03:16:04.516 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': ' turn on bathroom fan'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}]
+2024-03-09 03:16:22.974 ERROR (MainThread) [custom_components.tuya_local.device] : Unable to find device on network (specify IP address) while initialising device 4707834434ab951e83f0
+2024-03-09 03:16:23.115 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fbgAkWdo8CprLSmjV5V9wvnKqlm', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}}], 'created': 1709946964, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 8, 'prompt_tokens': 627, 'total_tokens': 635}}
+2024-03-09 03:16:31.297 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': ' turn on bathroom fan'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}, {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}, {'role': 'user', 'content': 'спри вентилатора в банята'}]
+2024-03-09 03:16:32.046 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fc7oiuaf54OlpINT8iv3syivnk3', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'Извършено.', 'role': 'assistant'}}], 'created': 1709946991, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 9, 'prompt_tokens': 654, 'total_tokens': 663}}
+2024-03-09 03:16:44.762 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': ' turn on bathroom fan'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}, {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}, {'role': 'user', 'content': 'спри вентилатора в банята'}, {'content': 'Извършено.', 'role': 'assistant'}, {'role': 'user', 'content': 'turn off bathroom fan'}]
+2024-03-09 03:16:46.478 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fcLR8ukGNzXBv7WIqF8Wsn9LPid', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_off","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709947005, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 35, 'prompt_tokens': 674, 'total_tokens': 709}}
+2024-03-09 03:16:46.481 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:16:03.540070+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.83,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.28,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': ' turn on bathroom fan'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}, {'content': 'Bathroom fan has been turned on.', 'role': 'assistant'}, {'role': 'user', 'content': 'спри вентилатора в банята'}, {'content': 'Извършено.', 'role': 'assistant'}, {'role': 'user', 'content': 'turn off bathroom fan'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}]
+2024-03-09 03:16:47.321 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fcMGNtDPiUAUiGblZYD6IAs7NaM', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'Bathroom fan has been turned off.', 'role': 'assistant'}}], 'created': 1709947006, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 8, 'prompt_tokens': 686, 'total_tokens': 694}}
+2024-03-09 03:21:47.790 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:21:47.787313+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,5.32,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.19,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': 'turn on kitchen light'}]
+2024-03-09 03:21:48.861 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fhEXO8Mz2nZRWPUYeDMtaytUSfz', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota"}}]}', 'name': 'execute_services'}}}], 'created': 1709947308, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 33, 'prompt_tokens': 615, 'total_tokens': 648}}
+2024-03-09 03:21:48.862 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:21:47.787313+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,5.32,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.19,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': 'turn on kitchen light'}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}]"}]
+2024-03-09 03:21:49.383 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fhFO1LyPMM8VjLjLOjMxMRbTkWj', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': 'The kitchen light has been turned on.', 'role': 'assistant'}}], 'created': 1709947309, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 8, 'prompt_tokens': 627, 'total_tokens': 635}}
+
+2024-03-09 03:24:36.979 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:24:36.975819+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,5.60,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.10,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': " they're in the lights on"}]
+2024-03-09 03:24:38.375 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fjx6cO5itCEw598yMK1bK9NcSoO', 'choices': [{'finish_reason': 'function_call', 'index': 0, 'message': {'role': 'assistant', 'function_call': {'arguments': '{"list":[{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota"}},{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_2"}},{"domain":"switch","service":"turn_on","service_data":{"entity_id":"switch.tasmota_3"}}]}', 'name': 'execute_services'}}}], 'created': 1709947477, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 79, 'prompt_tokens': 617, 'total_tokens': 696}}
+2024-03-09 03:24:38.378 INFO (MainThread) [custom_components.extended_openai_conversation] Prompt for gpt-3.5-turbo-1106: [{'role': 'system', 'content': "I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 03:24:36.975819+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,5.60,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.10,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,fog,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry."}, {'role': 'user', 'content': " they're in the lights on"}, {'role': 'function', 'name': 'execute_services', 'content': "[{'success': True}, {'success': True}, {'success': True}]"}]
+2024-03-09 03:24:39.022 INFO (MainThread) [custom_components.extended_openai_conversation] Response {'id': 'chatcmpl-90fjyx3oMbsv8Ppxe3pThqTy35I64', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': "The lights are now turned on. Is there anything else you'd like to control?", 'role': 'assistant'}}], 'created': 1709947478, 'model': 'gpt-3.5-turbo-1106', 'object': 'chat.completion', 'system_fingerprint': 'fp_f93e21ed76', 'usage': {'completion_tokens': 17, 'prompt_tokens': 639, 'total_tokens': 656}}
\ No newline at end of file
diff --git a/home/prompt1.md b/home/prompt1.md
new file mode 100644
index 0000000..b0caedc
--- /dev/null
+++ b/home/prompt1.md
@@ -0,0 +1,66 @@
+# SETUP:
+HA Extended OpenAI Conversation
+Name:
+Local LLM
+API key:
+1234567890
+Base Url:
+http://192.168.0.11:11434/ # Home Assistant
+api version:
+v1
+Skip Auth:
+true
+
+>> 2024-03-09 01:17:21.212 ERROR (MainThread) [custom_components.extended_openai_conversation] Error code: 404 - {'error': {'type': 'invalid_request_error', 'code': 'unknown_url', 'message': 'Unknown request URL: POST /chat/completions. Please check the URL for typos, or see the docs at https://platform.openai.com/docs/api-reference/.', 'param': None}}
+
+list my devices?
+what are my devices?
+turn on bathroom fan
+turn kitchen light on
+пусни вентилатора в банята
+HA Key:
+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
+
+# PROMPTs
+
+[INST] <>I want you to act as smart home manager of Home Assistant.\nI will provide information of smart home along with a question, you will truthfully make correction or answer using information provided in one sentence in everyday language.\n\nCurrent Time: 2024-03-09 01:28:58.574422+02:00\n\nAvailable Devices:\n```csv\nentity_id,name,state,aliases\nperson.popov,popov,unknown,\nperson.estelle,Estelle,unknown,\nupdate.home_assistant_operating_system_update,Home Assistant Operating System Update,off,\nsun.sun,Sun,below_horizon,\nsensor.sun_next_rising,Sun Next rising,2024-03-09T04:45:33+00:00,\nsensor.sun_next_setting,Sun Next setting,2024-03-09T16:29:12+00:00,\ntodo.shopping_list,Shopping List,0,\nbinary_sensor.rpi_power_status,RPi Power status,on,\ntodo.dev,Dev,0,\ntodo.jw,Jw,6,\nsensor.garden_temperature,Garden Temperature,4.59,\nsensor.garden_humidity,Garden Humidity,0.00,\nsensor.garden_pressure,Garden Pressure,948.43,\nsensor.garden_soil_moisture,Garden Soil Moisture,unknown,\ntts.google_en_com,Google en com,2024-03-08T08:16:30.141892+00:00,\ndevice_tracker.iphone,iPhone,unknown,\nweather.forecast_home,Forecast Home,partlycloudy,Pesho\nswitch.tasmota,Лампа Кухня,off,Kitchen Lamp\nswitch.tasmota_2,Печка банята,off,Bathtoom Heater\nswitch.tasmota_3,Вентилатор Банята,off,Bathroom Fan\nsensor.plug_plants_energy,Energy,unavailable,\nsensor.plug_plants_current,Current,unavailable,\nsensor.plug_plants_power,Power,unavailable,\nsensor.plug_plants_voltage,Voltage,unavailable,\nswitch.plug_plants,plug plants,unavailable,\n```\n\nThe current state of devices is provided in available devices.\nUse execute_services function only for requested action, not for current states.\nDo not execute service without user's confirmation.\nDo not restate or appreciate what user says, rather make a quick inquiry.
+use this function schema:
+- spec:
+ name: execute_services
+ description: Use this function to execute service of devices in Home Assistant.
+ parameters:
+ type: object
+ properties:
+ list:
+ type: array
+ items:
+ type: object
+ properties:
+ domain:
+ type: string
+ description: The domain of the service
+ service:
+ type: string
+ description: The service to be called
+ service_data:
+ type: object
+ description: The service data object to indicate what to control.
+ properties:
+ entity_id:
+ type: string
+ description: The entity_id retrieved from available devices. It
+ must start with domain, followed by dot character.
+ required:
+ - entity_id
+ required:
+ - domain
+ - service
+ - service_data
+ function:
+ type: native
+ name: execute_service
+<>\n\nturn on bathroom fan [/INST]\n
+
+
+
+{'id': 'chatcmpl-641', 'choices': [{'finish_reason': 'stop', 'index': 0, 'message': {'content': '{\n "function_call": {\n "name": "execute_services",\n "arguments": "{\\"device_id\\": \\"tasmota_3\\"]"\n }\n}', 'role': 'assistant'}}]
\ No newline at end of file
diff --git a/memory1/.env b/memory1/.env
new file mode 100644
index 0000000..bfb4ede
--- /dev/null
+++ b/memory1/.env
@@ -0,0 +1,3 @@
+ NEO4J_URI="bolt://192.168.0.10:7687"
+ NEO4J_USER="neo4j"
+ NEO4J_PASSWORD="lucas-bicycle-powder-stretch-ford-9492"
\ No newline at end of file
diff --git a/memory1/intint.neo.py b/memory1/intint.neo.py
new file mode 100644
index 0000000..a40720e
--- /dev/null
+++ b/memory1/intint.neo.py
@@ -0,0 +1,50 @@
+from decouple import config
+from neo4j import GraphDatabase
+
+class Neo4jConnection:
+ def __init__(self):
+ self.uri = config("NEO4J_URI")
+ self.user = config("NEO4J_USER")
+ self.password = config("NEO4J_PASSWORD")
+ self.driver = GraphDatabase.driver(self.uri, auth=(self.user, self.password))
+
+ # Create the schema
+ self.create_schema()
+
+ # Close the connection
+ self.close()
+
+ def close(self):
+ self.driver.close()
+
+ def create_schema(self):
+ with self.driver.session() as session:
+ session.write_transaction(self._create_constraints_and_indexes)
+
+ @staticmethod
+ def _create_constraints_and_indexes(tx):
+ # Constraints and indexes for Person
+ tx.run("CREATE CONSTRAINT ON (p:Person) ASSERT p.person_id IS UNIQUE;")
+
+ # Constraints and indexes for Memory
+ tx.run("CREATE CONSTRAINT ON (m:Memory) ASSERT m.memory_id IS UNIQUE;")
+ tx.run("CREATE INDEX ON :Memory(content);")
+ tx.run("CREATE INDEX ON :Memory(timestamp);")
+
+ # Constraints and indexes for Tag
+ tx.run("CREATE CONSTRAINT ON (t:Tag) ASSERT t.tag_id IS UNIQUE;")
+ tx.run("CREATE INDEX ON :Tag(tag_name);")
+
+ # Constraints and indexes for Category
+ tx.run("CREATE CONSTRAINT ON (c:Category) ASSERT c.category_id IS UNIQUE;")
+
+ # Constraints and indexes for Skill
+ tx.run("CREATE CONSTRAINT ON (s:Skill) ASSERT s.name IS UNIQUE;")
+
+ # Constraints and indexes for Fact
+ tx.run("CREATE CONSTRAINT ON (f:Fact) ASSERT f.certainty IS UNIQUE;")
+
+ # Additional schema definitions can be added here, such as relationship constraints or more complex indexing strategies.
+
+if __name__ == "__main__":
+ conn = Neo4jConnection()
diff --git a/memory1/models.py b/memory1/models.py
new file mode 100644
index 0000000..52f595c
--- /dev/null
+++ b/memory1/models.py
@@ -0,0 +1,88 @@
+class Person:
+ def __init__(self, person_id, name, age):
+ self.person_id = person_id
+ self.name = name
+ self.age = age
+
+
+class Memory:
+ def __init__(self, memory_id, content, timestamp, importance, relevance, associated_tags):
+ self.memory_id = memory_id
+ self.content = content
+ self.timestamp = timestamp
+ self.importance = importance
+ self.relevance = relevance
+ self.associated_tags = associated_tags
+
+class Tag:
+ def __init__(self, tag_id, tag_name):
+ self.tag_id = tag_id
+ self.tag_name = tag_name
+
+# // #
+
+class Category:
+ def __init__(self, category_id, name, details):
+ self.category_id = category_id
+ self.name = name
+ self.details = details
+ self.embedding_ollama = embedding_ollama
+
+class Skill: # or "hat". used to help with the context. more specific than category
+ def __init__(self, category_id, name):
+ self.category_id = category_id
+ self.name = name
+
+class Fact:
+ def __init__(self, category_id, certainty, embedding_ollama):
+ self.category_id = category_id
+ self.certainty = certainty
+ self.embedding_ollama = embedding_ollama
+
+class Context:
+ def __init__(self):
+ self.memories = []
+ self.facts = []
+ self.skills = []
+ self.tags = []
+ self.categories = []
+
+ def add_memory(self, memory):
+ self.memories.append(memory)
+
+ def add_fact(self, fact):
+ self.facts.append(fact)
+
+ def add_skill(self, skill):
+ self.skills.append(skill)
+
+ def add_tag(self, tag):
+ self.tags.append(tag)
+
+ def add_category(self, category):
+ self.categories.append(category)
+
+ def retrieve_memories(self, filter_tags=None):
+ if filter_tags:
+ return [memory for memory in self.memories if any(tag in memory.associated_tags for tag in filter_tags)]
+ return self.memories
+
+ def retrieve_facts(self, certainty_threshold):
+ return [fact for fact in self.facts if fact.certainty >= certainty_threshold]
+
+ def update_memory_relevance(self, memory_id, new_relevance):
+ for memory in self.memories:
+ if memory.memory_id == memory_id:
+ memory.relevance = new_relevance
+ break
+
+ def summarize_context(self):
+ # This method could be designed to summarize the current state of the context
+ # For simplicity, it just prints out the counts of different entities
+ print(f"Memories: {len(self.memories)}")
+ print(f"Facts: {len(self.facts)}")
+ print(f"Skills: {len(self.skills)}")
+ print(f"Tags: {len(self.tags)}")
+ print(f"Categories: {len(self.categories)}")
+
+
diff --git a/store-all/api/Dockerfile b/store-all/api/Dockerfile
new file mode 100644
index 0000000..207addb
--- /dev/null
+++ b/store-all/api/Dockerfile
@@ -0,0 +1,6 @@
+FROM python:3.9-slim
+WORKDIR /usr/src/app
+COPY requirements.txt ./
+RUN pip install --no-cache-dir -r requirements.txt
+COPY . .
+CMD ["python", "app.py"]
diff --git a/store-all/api/app.py b/store-all/api/app.py
new file mode 100644
index 0000000..68bb8b7
--- /dev/null
+++ b/store-all/api/app.py
@@ -0,0 +1,30 @@
+from flask import Flask, jsonify, request
+from neo4j import GraphDatabase
+from pymilvus import connections, Collection
+
+app = Flask(__name__)
+
+# Neo4j Connection
+neo4j_driver = GraphDatabase.driver("bolt://neo4j:7687", auth=("neo4j", "testpassword"))
+
+# Milvus Connection
+connections.connect("default", host="milvus", port="19530")
+
+@app.route('/')
+def home():
+ return jsonify({'message': 'Hello, World!'})
+
+@app.route('/neo4j_test')
+def neo4j_test():
+ with neo4j_driver.session() as session:
+ result = session.run("MATCH (n) RETURN count(n) AS count")
+ count = result.single()["count"]
+ return jsonify({'neo4j_node_count': count})
+
+@app.route('/milvus_test')
+def milvus_test():
+ collections = Collection.list()
+ return jsonify({'milvus_collections': collections})
+
+if __name__ == '__main__':
+ app.run(host='0.0.0.0', port=5000)
diff --git a/store-all/api/requirements.txt b/store-all/api/requirements.txt
new file mode 100644
index 0000000..907fa4d
--- /dev/null
+++ b/store-all/api/requirements.txt
@@ -0,0 +1,4 @@
+Flask==2.0.3
+neo4j==4.4.1
+pymilvus==2.0.2
+gunicorn==20.1.0
diff --git a/store-all/docker-compose.yml b/store-all/docker-compose.yml
new file mode 100644
index 0000000..25aa22f
--- /dev/null
+++ b/store-all/docker-compose.yml
@@ -0,0 +1,45 @@
+version: '3.8'
+
+services:
+ neo4j:
+ image: neo4j:latest
+ container_name: neo4j
+ ports:
+ - "7474:7474" # HTTP
+ - "7687:7687" # Bolt
+ volumes:
+ - ./neo4j/data:/data
+ - ./neo4j/logs:/logs
+ - ./neo4j/import:/var/lib/neo4j/import
+ - ./neo4j/plugins:/plugins
+ environment:
+ NEO4J_AUTH: neo4j/testpassword
+
+ milvus:
+ image: milvusdb/milvus:v2.0.0
+ container_name: milvus
+ ports:
+ - "19530:19530" # Milvus default port
+ volumes:
+ - ./milvus/db:/var/lib/milvus/db
+ - ./milvus/conf:/var/lib/milvus/conf
+ - ./milvus/logs:/var/lib/milvus/logs
+ environment:
+ TZ: UTC
+
+ api:
+ build: ./api
+ container_name: api
+ ports:
+ - "5000:5000"
+ volumes:
+ - ./api:/usr/src/app
+ depends_on:
+ - neo4j
+ - milvus
+ environment:
+ NEO4J_URI: bolt://neo4j:7687
+ NEO4J_USER: neo4j
+ NEO4J_PASSWORD: testpassword
+ MILVUS_HOST: milvus
+ MILVUS_PORT: 19530
diff --git a/store-all/story.md b/store-all/story.md
new file mode 100644
index 0000000..dcad1e6
--- /dev/null
+++ b/store-all/story.md
@@ -0,0 +1,21 @@
+
+
+
+Rich Relationships: Graph databases excel at managing highly interconnected data, allowing you to efficiently model, store, and query complex networks of relationships.
+
+Performance: They are optimized for traversing complex relationships and can perform deep queries very fast, unlike traditional databases where join-intensive queries can be slow.
+
+Flexibility: They typically allow for schema-less or schema-flexible data, making them adaptable to evolving data models without significant redesign.
+
+Intuitive Query Language: Many graph databases use query languages like Cypher (Neo4j), which are powerful yet readable, making complex queries more straightforward to construct and understand.
+
+Cons:
+
+Scalability: Horizontal scaling can be challenging with graph databases, as they are inherently designed for deep, computationally intense traversals.
+
+Specialized Knowledge: The need for understanding specific query languages and graph theory can steepen the learning curve.
+
+Resource Intensity: Maintaining high-performance levels, especially with very large datasets, can require significant computational resources.
+
+
+Python is widely adopted in the data science community, offering extensive libraries and frameworks for both graph databases (like py2neo for Neo4j) and vector databases (like milvus-py for Milvus). It’s particularly strong in analytics, machine learning, and AI, which aligns well with the use cases of vector databases.
\ No newline at end of file
diff --git a/web/server.js b/web/server.js
index 0be2a4e..dbdda60 100644
--- a/web/server.js
+++ b/web/server.js
@@ -3,7 +3,7 @@ if (require('dotenv')) {
require('dotenv').config()
}
-console.log('Starting ws server on port '+ process.env.SERVER_PORT_WS);
+console.log('Starting ws server on port ' + process.env.SERVER_PORT_WS);
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: process.env.SERVER_PORT_WS });
@@ -120,7 +120,7 @@ app.get('/', (req, res) => {
//accept LOG messages on /log
app.post('/log', (req, res) => {
- console.log("log["+new Date().toISOString() + '] ' + req.body.message);
+ console.log("log[" + new Date().toISOString() + '] ' + req.body.message);
res.send('OK', 200, { 'Content-Type': 'text/plain' });
});