AgriEdge / main.py
timflash's picture
7 files uploaded
16c8745 verified
import json
from llm.ollama_llm import query_ollama
from llm.rag_pipeline import retrieve_context
from logger import get_logger
logger = get_logger(__name__)
def get_latest_sensor_data(path="data/farm_data_log.json", num_entries=3):
try:
with open(path, "r") as f:
data = json.load(f)
return data[-num_entries:] if data else []
except FileNotFoundError:
logger.error(f"Sensor data file {path} not found.")
return []
except json.JSONDecodeError as e:
logger.error(f"Invalid JSON in {path}: {e}")
return []
def main():
logger.info("Smart Farm Assistant started.")
while True:
user_query = input("> ")
if user_query.lower() == 'exit':
logger.info("Exiting Smart Farm Assistant.")
break
logger.info("User query: %s", user_query)
logger.info("Retrieving latest sensor data...")
sensor_data_entries = get_latest_sensor_data()
combined_sensor_data = {
entry["timestamp"]: {
"soil": entry["soil"],
"water": entry["water"],
"environment": entry["environment"]
}
for entry in sensor_data_entries
}
try:
rag_context = retrieve_context(user_query)
response = query_ollama(user_query, combined_sensor_data, rag_context)
logger.info("\n--- FARM ASSISTANT RESPONSE ---\n")
print(response)
except Exception as e:
logger.error(f"Query processing failed: {e}")
print("Error: Could not process query. Please try again.")
if __name__ == "__main__":
main()