Team Ai
Apppublic

programmerdev/ai-api

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py97 linesDownload Raw Back to root
1import gradio as gr2 3# -------------------------4# Encoded API Key (scrambled for safety)5API_KEYs = "KuXEEDOY_♣♣↨↨SOAuYYKZ►▼↑→↑h↓♦→♦FCuFKuXEEDuuGFKD"6 7def decode_key(encoded: str) -> str:8    """9    Decode the scrambled API key by reversing and XOR with 4210    """11    reversed_str = encoded[::-1]12    return "".join([chr(ord(c) ^ 42) for c in reversed_str])13 14API_KEY = decode_key(API_KEYs)15 16# -------------------------17# Lazy-load generators for different models18generators = {}19 20def get_generator(model):21    if model not in generators:22        from transformers import pipeline23        generators[model] = pipeline('text-generation', model=model)24    return generators[model]25 26# -------------------------27# Flexible Chatbot function28def chatbot_response(29    user_input,30    api_key=None,31    model="EleutherAI/gpt-neo-1.3B",32    data=None,              # optional extra context33    systemprompt=None,      # optional system prompt34    temperature=0.7,35    max_length=300,36    do_sample=True37):38    # Enforce API key if provided39    if API_KEY and api_key != API_KEY:40        return "❌ Forbidden: Invalid API key."41 42    # Build prompt dynamically43    prompt_parts = []44    if systemprompt:45        prompt_parts.append(f"System: {systemprompt}")46    if data:47        prompt_parts.append(f"Context: {data}")48    prompt_parts.append(f"User: {user_input}\nAI:")49    prompt = "\n".join(prompt_parts)50 51    # Generate AI response52    generator = get_generator(model)53    response = generator(prompt, max_length=max_length, do_sample=do_sample, temperature=temperature)54    try:55        ai_text = response[0]['generated_text'].split('AI:')[1].strip()56    except IndexError:57        ai_text = response[0]['generated_text'].strip()58    return ai_text59 60# -------------------------61# Gradio UI62with gr.Blocks() as demo:63    gr.Markdown("## 🤖 Islamic AI Assistant (GPT-2 & GPT-J 1.3B)")64 65    with gr.Row():66        msg = gr.Textbox(label="Your Message", placeholder="Type something...")67        key = gr.Textbox(label="API Key (if enabled)", type="password")68 69    model_selector = gr.Dropdown(70        label="Select Model",71        choices=[72            "gpt2",73            "gpt2-medium",74            "gpt2-large",75            "EleutherAI/gpt-neo-1.3B"76        ],77        value="EleutherAI/gpt-neo-1.3B"78    )79 80    output = gr.Textbox(label="AI Response", interactive=False)81    submit = gr.Button("Submit")82 83    submit.click(84        chatbot_response,85        inputs=[msg, key, model_selector],86        outputs=[output]87    )88 89# -------------------------90# Launch app91if __name__ == "__main__":92    demo.launch(93        server_name="0.0.0.0",94        server_port=7860,95        share=True96    )97