| |
| import os, json, httpx, asyncio |
| os.environ.setdefault("DO_NOT_TRACK", "1") |
| os.environ.setdefault("GRADIO_ANALYTICS_ENABLED", "False") |
| import gradio as gr |
|
|
| VPS = "http://187.124.226.128:8000" |
| HF = os.getenv("HF_TOKEN","") |
| MODELS = {"V1 Coder":"gemma4-coder","V2 Agentic":"gemma4-v2"} |
|
|
| async def sh(c): |
| try: |
| r = await httpx.AsyncClient(timeout=120).get(f"{VPS}/api/exec",params={"cmd":c}) |
| return r.json().get("stdout","")[:3000] |
| except Exception as e: return f"Error:{e}" |
|
|
| async def chat(m,p,s=""): |
| ms = [] |
| if s: ms.append({"role":"system","content":s}) |
| ms.append({"role":"user","content":p}) |
| pl = json.dumps({"model":m,"messages":ms,"stream":0}) |
| r = await sh("curl -s --max-time 120 http://127.0.0.1:11435/api/chat -d '" + pl + "'") |
| try: return json.loads(r).get("message",{}).get("content",r) |
| except: return r |
|
|
| async def respond(m,h,mod,sys): |
| return (await chat(MODELS[mod],m,sys)) if m else "" |
|
|
| with gr.Blocks() as demo: |
| gr.Markdown("# Gemma 4 12B Coder + Agentic") |
| with gr.Tab("Chat"): |
| mc = gr.Dropdown(choices=list(MODELS.keys()), value="V2 Agentic") |
| sp = gr.Textbox(label="System", lines=2) |
| cb = gr.Chatbot(type="messages", height=400) |
| tx = gr.Textbox(label="Message") |
| tx.submit(respond,[tx,cb,mc,sp],tx) |
| with gr.Tab("Tools"): |
| gr.Markdown("### Web Search") |
| sq = gr.Textbox() |
| sb = gr.Button("Search") |
| so = gr.Markdown() |
| sb.click(lambda q:sh("curl -s 'http://127.0.0.1:43092/search?q="+q.replace(" ","%")+"&format=json'"),sq,so) |
| demo.launch() |
|
|