llmLocationAware

enhance with local data to the AI
This commit is contained in:
SpudGunMan
2024-09-03 22:52:27 -07:00
parent aa5f2f66f8
commit 5daa71e6c1
3 changed files with 17 additions and 8 deletions
+3 -1
View File
@@ -107,6 +107,8 @@ def handle_wiki(message):
def handle_llm(message_from_id, channel_number, deviceID, message, publicChannel):
global llmRunCounter, llmTotalRuntime
location = get_node_location(message_from_id, deviceID)
location_name = where_am_i(str(location[0]), str(location[1], short=True))
if "ask:" in message.lower():
user_input = message.split(":")[1]
elif "askai" in message.lower():
@@ -137,7 +139,7 @@ def handle_llm(message_from_id, channel_number, deviceID, message, publicChannel
start = time.time()
#response = asyncio.run(llm_query(user_input, message_from_id))
response = llm_query(user_input, message_from_id)
response = llm_query(user_input, message_from_id, location_name)
# handle the runtime counter
end = time.time()
+1 -1
View File
@@ -58,7 +58,7 @@ ollama_model = OllamaLLM(model=llmModel)
model_prompt = ChatPromptTemplate.from_template(meshBotAI)
chain_prompt_model = model_prompt | ollama_model
def llm_query(input, nodeID=0):
def llm_query(input, nodeID=0, location_name=None):
global antiFloodLLM, llmChat_history
googleResults = []
+13 -6
View File
@@ -11,7 +11,7 @@ from modules.log import *
trap_list_location = ("whereami", "tide", "moon", "wx", "wxc", "wxa", "wxalert")
def where_am_i(lat=0, lon=0):
def where_am_i(lat=0, lon=0, short=False):
whereIam = ""
grid = mh.to_maiden(float(lat), float(lon))
@@ -32,11 +32,18 @@ def where_am_i(lat=0, lon=0):
whereIam += " Grid: " + grid
return whereIam
else:
location = geolocator.reverse(lat + ", " + lon)
address = location.raw['address']
address_components = ['house_number', 'road', 'city', 'state', 'postcode', 'county', 'country']
whereIam += ' '.join([address.get(component, '') for component in address_components if component in address])
whereIam += " Grid: " + grid
if short:
location = geolocator.reverse(lat + ", " + lon)
address = location.raw['address']
address_components = ['city', 'state', 'county', 'country']
whereIam += ' '.join([address.get(component, '') for component in address_components if component in address])
return whereIam
else:
location = geolocator.reverse(lat + ", " + lon)
address = location.raw['address']
address_components = ['house_number', 'road', 'city', 'state', 'postcode', 'county', 'country']
whereIam += ' '.join([address.get(component, '') for component in address_components if component in address])
whereIam += " Grid: " + grid
return whereIam
def get_tide(lat=0, lon=0):