File size: 2,105 Bytes
931659a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import sys, os, json, torch, requests, time
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from fsi_echo import FSIEchoModel, CodeTokenizer, ClosedLoopDebugger
import gradio as gr

@torch.no_grad()
def load():
    MODEL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'prod2_final.pt')
    if not os.path.exists(MODEL_PATH):
        url = "https://huggingface.co/FerrellSyntheticIntelligence/FSI_ECHO/resolve/main/prod2_final.pt"
        r = requests.get(url, stream=True, timeout=300)
        r.raise_for_status()
        with open(MODEL_PATH, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)
    ckpt = torch.load(MODEL_PATH, map_location='cpu', weights_only=True)
    m = FSIEchoModel()
    m.load_state_dict(ckpt['model'])
    m.eval()
    return m, CodeTokenizer()

model, tok = load()
debugger = ClosedLoopDebugger(model, tok)

def generate(prompt, temp, max_t):
    t0 = time.time()
    r = model.generate(tok, prompt, max_tokens=int(max_t), temperature=float(temp), top_k=5, top_p=0.95)
    return r['generated'], f"{r['tokens']}t | conf:{r['confidence']:.2f} | {time.time()-t0:.1f}s"

def debug(code):
    r = debugger.debug(code)
    return r.get('code', 'Could not fix')

with gr.Blocks(title="FSI_ECHO", theme=gr.themes.Monochrome()) as demo:
    gr.Markdown("# 🧬 FSI_ECHO — 2.6M Param Code AI\n*Morphing Code Swarm*")
    with gr.Tab("Generate"):
        p = gr.Textbox(label="Prompt", value="def is_even")
        t = gr.Slider(0.1, 1.0, 0.1, label="Temperature")
        m = gr.Slider(10, 200, 50, label="Max Tokens")
        b = gr.Button("Generate")
        o = gr.Textbox(label="Output", lines=8)
        s = gr.Textbox(label="Stats")
        b.click(generate, [p, t, m], [o, s])
    with gr.Tab("Debug"):
        c = gr.Textbox(label="Buggy Code", value="def add(a, b):\n    a + b", lines=6)
        b2 = gr.Button("Debug")
        o2 = gr.Textbox(label="Fixed Code", lines=8)
        b2.click(debug, [c], [o2])

if __name__ == '__main__':
    demo.launch(server_name='0.0.0.0', server_port=7860)