File size: 2,543 Bytes
93a340f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import gradio as gr
import requests
import time
from threading import Thread

# URLs for the APIs
client1_url = 'https://orionai-training-data-collection-2.hf.space/api/update_token_display'
client2_url = 'https://orionai-training-data-collection-3.hf.space/api/update_token_display'
client3_url = 'https://orionai-training-data-collection.hf.space/api/update_token_display'

state = {
    "prev_count1": 0,
    "prev_count2": 0,
    "prev_count3": 0,
    "prev_total_tokens": 0,
    "total_growth_speed": 0
}

def get_token_count(url):
    try:
        response = requests.post(url, headers={'Content-Type': 'application/json'})
        response.raise_for_status()  # Raise an error for bad status codes
        result = response.json()
        return int(result.get('token_count', 0))  # Adjust according to API response
    except (requests.RequestException, ValueError) as e:
        print(f"Error fetching token count from {url}: {e}")
        return 0

def monitor_growth():
    while True:
        try:
            curr_count1 = get_token_count(client1_url)
            curr_count2 = get_token_count(client2_url)
            curr_count3 = get_token_count(client3_url)
            growth_speed1 = curr_count1 - state["prev_count1"]
            growth_speed2 = curr_count2 - state["prev_count2"]
            growth_speed3 = curr_count3 - state["prev_count3"]
            total_tokens = curr_count1 + curr_count2 + curr_count3
            total_growth_speed = growth_speed1 + growth_speed2 + growth_speed3

            state["prev_count1"] = curr_count1
            state["prev_count2"] = curr_count2
            state["prev_count3"] = curr_count3
            state["prev_total_tokens"] = total_tokens
            state["total_growth_speed"] = total_growth_speed

            time.sleep(5)
        except Exception as e:
            print(f"Error in monitor growth: {e}")

# Start the monitor thread
Thread(target=monitor_growth, daemon=True).start()

def get_dashboard_metrics():
    return state["prev_total_tokens"], state["total_growth_speed"]

# Create Gradio Interface
with gr.Blocks() as demo:
    gr.Markdown("# Token Count Dashboard")
    total_tokens = gr.Number(label="Total Token Count", value=0)
    growth_speed = gr.Number(label="Total Growth Speed", value=0)
    
    def update_dashboard():
        tokens, speed = get_dashboard_metrics()
        return tokens, speed
    
    # Automatically update the metrics every 5 seconds
    gr.Timer(5000, update_dashboard, [total_tokens, growth_speed], every=5000)

demo.launch()