From 11845adae09ba28e8bcb8a348ebb898922922dbb Mon Sep 17 00:00:00 2001 From: Chris Christiansen Date: Tue, 26 May 2026 12:40:27 +0000 Subject: [PATCH] feat(ml2): feedback_loop, hypertuner, heavy_predictor --- agents/core-logic/feedback_loop.py | 39 +++++++++++++++++++++++ agents/core-logic/heavy_predictor.py | 45 +++++++++++++++++++++++++++ agents/core-logic/hypertuner.py | 46 ++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 agents/core-logic/feedback_loop.py create mode 100644 agents/core-logic/heavy_predictor.py create mode 100644 agents/core-logic/hypertuner.py diff --git a/agents/core-logic/feedback_loop.py b/agents/core-logic/feedback_loop.py new file mode 100644 index 0000000..6426403 --- /dev/null +++ b/agents/core-logic/feedback_loop.py @@ -0,0 +1,39 @@ +# agents/core-logic/feedback_loop.py + +import requests +from google.cloud import bigquery + +# Configuration +TELEMETRY_URL = "https://osvauco-agent-357036551735.europe-west1.run.app/telemetry/history" +BIGQUERY_PROJECT = "propane-will-491900-m5" +BIGQUERY_DATASET = "osvauco_logs" +BIGQUERY_TABLE = "cloud_run_logs" + +def collect_and_store_telemetry(): + """ + Collects telemetry data from the specified endpoint and stores it in BigQuery. + """ + try: + # 1. Collect telemetry data + response = requests.get(TELEMETRY_URL) + response.raise_for_status() # Raise an exception for bad status codes + telemetry_data = response.json() + + # 2. Store data in BigQuery + client = bigquery.Client(project=BIGQUERY_PROJECT) + table_id = f"{BIGQUERY_PROJECT}.{BIGQUERY_DATASET}.{BIGQUERY_TABLE}" + + # Assuming telemetry_data is a list of dicts matching the table schema + errors = client.insert_rows_json(table_id, telemetry_data) + if errors == []: + print(f"Successfully inserted {len(telemetry_data)} rows into {table_id}") + else: + print(f"Encountered errors while inserting rows: {errors}") + + except requests.exceptions.RequestException as e: + print(f"Error collecting telemetry data: {e}") + except Exception as e: + print(f"An error occurred: {e}") + +if __name__ == "__main__": + collect_and_store_telemetry() diff --git a/agents/core-logic/heavy_predictor.py b/agents/core-logic/heavy_predictor.py new file mode 100644 index 0000000..ffc1d29 --- /dev/null +++ b/agents/core-logic/heavy_predictor.py @@ -0,0 +1,45 @@ +# agents/core-logic/heavy_predictor.py + +from google.cloud import bigquery + +# Configuration +BIGQUERY_PROJECT = "propane-will-491900-m5" +BIGQUERY_DATASET = "osvauco_logs" +BIGQUERY_TABLE = "cloud_run_logs" +TELEMETRY_CALLS_THRESHOLD = 500 + +def check_and_trigger_heavy_mode(): + """ + Checks the number of telemetry calls and triggers heavy mode if the threshold is exceeded. + """ + try: + client = bigquery.Client(project=BIGQUERY_PROJECT) + table_id = f"{BIGQUERY_PROJECT}.{BIGQUERY_DATASET}.{BIGQUERY_TABLE}" + + # 1. Query the number of telemetry calls from BigQuery + query = f""" + SELECT COUNT(*) as total_calls + FROM `{table_id}` + WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR) + """ + query_job = client.query(query) + results = query_job.result() + + for row in results: + total_calls = row.total_calls + print(f"Total telemetry calls in the last 24 hours: {total_calls}") + + # 2. Trigger heavy mode if the threshold is exceeded + if total_calls > TELEMETRY_CALLS_THRESHOLD: + print("Telemetry calls threshold exceeded. Triggering heavy mode.") + # Placeholder for logic to trigger heavy mode + # This could involve scaling up resources, switching to a more powerful model, etc. + pass + else: + print("Telemetry calls are within acceptable limits.") + + except Exception as e: + print(f"An error occurred: {e}") + +if __name__ == "__main__": + check_and_trigger_heavy_mode() diff --git a/agents/core-logic/hypertuner.py b/agents/core-logic/hypertuner.py new file mode 100644 index 0000000..c09853d --- /dev/null +++ b/agents/core-logic/hypertuner.py @@ -0,0 +1,46 @@ +# agents/core-logic/hypertuner.py + +from google.cloud import bigquery + +# Configuration +BIGQUERY_PROJECT = "propane-will-491900-m5" +BIGQUERY_DATASET = "osvauco_logs" +BIGQUERY_TABLE = "cloud_run_logs" +RESPONSE_TIME_THRESHOLD = 1000 # in milliseconds + +def adjust_prompt_parameters(): + """ + Reads telemetry data from BigQuery, analyzes response times, + and adjusts prompt parameters accordingly. + """ + try: + client = bigquery.Client(project=BIGQUERY_PROJECT) + table_id = f"{BIGQUERY_PROJECT}.{BIGQUERY_DATASET}.{BIGQUERY_TABLE}" + + # 1. Query response time data from BigQuery + query = f""" + SELECT AVG(latency_ms) as avg_latency + FROM `{table_id}` + WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) + """ + query_job = client.query(query) + results = query_job.result() + + for row in results: + avg_latency = row.avg_latency + print(f"Average response time in the last hour: {avg_latency} ms") + + # 2. Adjust prompt parameters based on response time + if avg_latency > RESPONSE_TIME_THRESHOLD: + print("Response time is high. Adjusting prompt parameters to reduce complexity.") + # Placeholder for logic to adjust prompt parameters + # For example, reduce max_tokens, use a simpler model, etc. + pass + else: + print("Response time is within acceptable limits.") + + except Exception as e: + print(f"An error occurred: {e}") + +if __name__ == "__main__": + adjust_prompt_parameters()