import gradio as gr import requests import json API_URL = "https://api.ilang.ai/compress" def compress(text, ratio): if not text.strip(): return "", "" try: resp = requests.post(API_URL, json={"input": text}, headers={"Content-Type": "application/json"}, timeout=30) if resp.status_code == 200: data = resp.json() tokens = data.get("tokens", {}) return data.get("output", ""), f"{tokens.get('input','?')} -> {tokens.get('output','?')} tokens ({tokens.get('saved','?')} saved)" elif resp.status_code == 429: return resp.json().get("error", "Rate limited"), "" else: return resp.json().get("error", f"API error {resp.status_code}"), "" except Exception as e: return f"Connection error: {e}", "" def decompress(ilang_text): if not ilang_text.strip(): return "" try: resp = requests.post(API_URL, json={"input": f"Expand this I-Lang back to clear natural English. Output ONLY natural language:\n\n{ilang_text}"}, headers={"Content-Type": "application/json"}, timeout=30) if resp.status_code == 200: return resp.json().get("output", "") return f"API error {resp.status_code}" except Exception as e: return f"Connection error: {e}" with gr.Blocks(title="I-Lang Protocol", theme=gr.themes.Base()) as demo: gr.Markdown("# I-Lang: AI Communication Protocol\n**Compress natural language into structured, machine-readable instructions.**\n\n52 verbs | Pipe syntax | 40-65% token savings\n\n[GitHub](https://github.com/ilang-ai) | [Spec](https://github.com/ilang-ai/ilang-spec) | [Dictionary](https://github.com/ilang-ai/ilang-dict) | [Training Data](https://huggingface.co/datasets/i-Lang/ilang-instruction-corpus) | [Paper](https://doi.org/10.13140/RG.2.2.22821.97762)") with gr.Tab("Compress"): with gr.Row(): with gr.Column(): input_text = gr.Textbox(label="Natural Language", placeholder="Describe a task, workflow, or image...", lines=5) compress_btn = gr.Button("Compress to I-Lang", variant="primary") with gr.Column(): output_text = gr.Textbox(label="I-Lang Output", lines=5, show_copy_button=True) savings_text = gr.Textbox(label="Token Savings", interactive=False) compress_btn.click(compress, inputs=[input_text], outputs=[output_text, savings_text]) gr.Examples(examples=[["Read all customer feedback, filter negative sentiment, group by product, count issues, rank by frequency, export CSV."],["Read README from GitHub, translate to Chinese, save to cloud storage."],["Scrape Hacker News, filter AI posts, summarize top 5, format as markdown table."],["Create a cyberpunk cityscape at night with neon lights and rain reflections."]], inputs=[input_text]) with gr.Tab("Expand"): with gr.Row(): with gr.Column(): ilang_input = gr.Textbox(label="I-Lang Input", placeholder="Paste I-Lang notation...", lines=5) expand_btn = gr.Button("Expand to Natural Language", variant="primary") with gr.Column(): expanded_output = gr.Textbox(label="Natural Language", lines=5, show_copy_button=True) expand_btn.click(decompress, inputs=[ilang_input], outputs=[expanded_output]) gr.Examples(examples=[["[READ:@GH|path=readme.md]=>[TRANSLATE|lang=zh]=>[FMT|fmt=md]=>[WRITE:@R2]"],["[SCAN:@FILE|type=deps]=>[CHECK|type=security]=>[FILT|key=critical]=>[ALERT]=>[LOG]"]], inputs=[ilang_input]) gr.Markdown("---\nI-Lang v2.0 | [Palm Media Technology](https://ilang.ai)") if __name__ == "__main__": demo.launch()