3kmfi6hp commited on
Commit
8d55cf1
Β·
verified Β·
1 Parent(s): 3111a76

Upload llm_snare.py

Browse files
Files changed (1) hide show
  1. llm_snare.py +49 -0
llm_snare.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import urllib.request, json
3
+ from datetime import datetime, timezone
4
+
5
+ url = 'https://llmsnare-api.mistermorph.com/v1/timelines?limit=96'
6
+ data = json.loads(urllib.request.urlopen(url, timeout=60).read())
7
+
8
+ NAMES = {'deepseek_v4_pro':'DeepSeek V4 Pro','deepseek_v4_flash':'DeepSeek V4 Flash','claude_opus_4_6':'Claude Opus 4.6','claude_opus_4_7':'Claude Opus 4.7','claude_sonnet_4_6':'Claude Sonnet 4.6','openai_gpt_5_5':'GPT-5.5','openai_gpt_5_4':'GPT-5.4','minimax_m_2_7':'MiniMax M2.7','minimax_m_2_5':'MiniMax M2.5','glm_5_turbo':'GLM-5 Turbo','glm_5_1':'GLM-5.1','grok_4_1_fast_reasoning':'Grok 4.1 Fast','grok_4_2_reasoning':'Grok 4.2','gemini_3_5_flash':'Gemini 3.5 Flash','gemini_3_1_pro_preview':'Gemini 3.1 Pro','gemini_3_1_flash_lite':'Gemini 3.1 Flash Lite','gemini_2_5_flash':'Gemini 2.5 Flash','kimi_k_2_5':'Kimi K2.5','kimi_k_2_6':'Kimi K2.6','openrouter_qwen_3_5_27b':'Qwen 3.5 27B','openrouter_qwen_3_6_plus':'Qwen 3.6 Plus','openrouter_gemma_4_31b':'Gemma 4 31B','openrouter_mimo_v2_pro':'Mimo V2 Pro'}
9
+
10
+ rows = []
11
+ for pid, pdata in data.get('profiles', {}).items():
12
+ entries = pdata.get('entries', [])
13
+ name = NAMES.get(pid, pid)
14
+ points = sorted([(e['timestamp'], e['normalized_score'], e.get('raw_score',0), e.get('max_score',0)) for e in entries], key=lambda x: x[0])
15
+ scores = [p[1] for p in points]
16
+ raw = [p[2] for p in points]
17
+ maxs = [p[3] for p in points]
18
+ n = len(scores)
19
+ if n < 4: continue
20
+ avg8 = round(sum(scores[-8:])/8,1)
21
+ prev8 = scores[-16:-8] if n>=16 else scores[:max(1,n-8)]
22
+ avg_prev8 = round(sum(prev8)/len(prev8),1) if prev8 else avg8
23
+ change = round(avg8-avg_prev8,1)
24
+ latest = round(scores[-1],1)
25
+ rows.append({'name':name,'avg8':avg8,'change':change,'latest':latest,'raw':int(raw[-1]),'max':int(maxs[-1])})
26
+
27
+ rows.sort(key=lambda x: -x['avg8'])
28
+ now = datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M UTC')
29
+
30
+ lines = [f'πŸ“Š **LLM Snare Arena η›‘ζŽ§**',f'πŸ“… {now}','','**πŸ”₯ Top 5οΌˆθΏ‘ζœŸε‡εˆ†οΌ‰οΌš**']
31
+ for i,r in enumerate(rows[:5],1):
32
+ lines.append(f'{i}. {r["name"]} β€” {r["avg8"]}')
33
+ lines.append('')
34
+ lines.append('**πŸ’€ εž«εΊ• 3:**')
35
+ for r in rows[-3:]:
36
+ lines.append(f'- {r["name"]} β€” {r["avg8"]}')
37
+ lines.append('')
38
+ lines.append('**πŸ“ˆ θΏ‘ζœŸε˜εŒ–οΌˆε‰8 vs 再前8οΌ‰οΌš**')
39
+ changes = sorted(rows, key=lambda x: -abs(x['change']))[:6]
40
+ for r in changes:
41
+ arrow = '↑' if r['change']>0 else '↓'
42
+ lines.append(f'- {r["name"]} {arrow} {abs(r["change"])}')
43
+ lines.append('')
44
+ lines.append('**πŸ• ζœ€ζ–°δΈ€ζ¬‘εΎ—εˆ†οΌš**')
45
+ for r in rows:
46
+ icon = 'βœ…' if r['latest']>=50 else '❌'
47
+ lines.append(f'{icon} {r["name"]} β€” {r["latest"]} ({r["raw"]}/{r["max"]})')
48
+
49
+ print('\n'.join(lines))