import gradio as gr import sqlite3, secrets, requests API_URL = "https://Mauricio-100-agent-ai.hf.space/infer" DB_PATH = "tokens.db" # --- Init DB locale --- def init_db(): conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute(""" CREATE TABLE IF NOT EXISTS api_tokens ( id INTEGER PRIMARY KEY AUTOINCREMENT, token TEXT UNIQUE, description TEXT ) """) conn.commit() conn.close() init_db() # --- Fonctions --- def generate_token(description): token = "sk-" + secrets.token_hex(16) conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("INSERT INTO api_tokens (token, description) VALUES (?, ?)", (token, description)) conn.commit() conn.close() return token def list_tokens(): conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("SELECT id, token, description FROM api_tokens") rows = c.fetchall() conn.close() return "\n".join([f"{r[0]} | {r[1]} | {r[2]}" for r in rows]) def call_model(system_prompt, user_prompt, temperature, max_new_tokens, top_p, api_token): # Vérifier token local conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("SELECT token FROM api_tokens WHERE token=?", (api_token,)) row = c.fetchone() conn.close() if not row: return "[Erreur] Token invalide" payload = { "input": user_prompt, "system_prompt": system_prompt, "temperature": temperature, "max_new_tokens": int(max_new_tokens), "top_p": top_p } r = requests.post(API_URL, json=payload) return r.json().get("generated_text", "") if r.status_code == 200 else f"[Erreur {r.status_code}]" # --- Interface Gradio --- with gr.Blocks(title="⚡ GopuOS Local DB") as demo: gr.Markdown("## ⚡ GopuOS Client avec DB SQLite locale") with gr.Tab("🔑 Générer un Token"): desc = gr.Textbox(label="Description") out_token = gr.Textbox(label="Nouveau Token") gr.Button("Générer").click(fn=generate_token, inputs=desc, outputs=out_token) with gr.Tab("📜 Lister les Tokens"): out_list = gr.Textbox(label="Tokens existants", lines=10) gr.Button("Afficher").click(fn=list_tokens, outputs=out_list) with gr.Tab("💬 Appeler le modèle"): sys_prompt = gr.Textbox(label="Prompt système") user_prompt = gr.Textbox(label="Texte utilisateur") temp = gr.Slider(0.1, 1.5, value=0.7, step=0.1) max_tok = gr.Slider(50, 500, value=200, step=10) top_p = gr.Slider(0.1, 1.0, value=0.9, step=0.05) api_token = gr.Textbox(label="API Token") output = gr.Textbox(label="Réponse") gr.Button("Envoyer").click( fn=call_model, inputs=[sys_prompt, user_prompt, temp, max_tok, top_p, api_token], outputs=output ) # 👉 Hugging Face détecte "app" comme application Gradio app = demo