| import os |
| import re |
| from http import HTTPStatus |
| from typing import Dict, List, Optional, Tuple |
| import base64 |
| import mimetypes |
| import PyPDF2 |
| import docx |
| import cv2 |
| import numpy as np |
| from PIL import Image |
| import pytesseract |
| import requests |
| from urllib.parse import urlparse, urljoin |
| from bs4 import BeautifulSoup |
| import html2text |
| import json |
| import time |
| import webbrowser |
| import urllib.parse |
|
|
| import gradio as gr |
|
|
| |
| HF_TOKEN = os.getenv("HF_TOKEN") |
| if not HF_TOKEN: |
| raise RuntimeError("HF_TOKEN environment variable is not set. Please set it to your Hugging Face API token.") |
|
|
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") |
| if not OPENAI_API_KEY: |
| print("Warning: OPENAI_API_KEY not set; OpenAI provider will be unavailable.") |
|
|
| GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") |
| if not GEMINI_API_KEY: |
| print("Warning: GEMINI_API_KEY not set; Gemini provider will be unavailable.") |
|
|
| |
| GRADIO_SUPPORTED_LANGUAGES = [ |
| "python", "c", "cpp", "markdown", "latex", "json", "html", "css", "javascript", |
| "jinja2", "typescript", "yaml", "dockerfile", "shell", "r", "sql", "sql-msSQL", |
| "sql-mySQL", "sql-mariaDB", "sql-sqlite", "sql-cassandra", "sql-plSQL", "sql-hive", |
| "sql-pgSQL", "sql-gql", "sql-gpSQL", "sql-sparkSQL", "sql-esper", None |
| ] |
|
|
|
|
| def get_gradio_language(language): |
| return language if language in GRADIO_SUPPORTED_LANGUAGES else None |
|
|
| |
| SEARCH_START = "<<<<<<< SEARCH" |
| DIVIDER = "=======" |
| REPLACE_END = ">>>>>>> REPLACE" |
|
|
| |
| HTML_SYSTEM_PROMPT = """ONLY USE HTML, CSS AND JAVASCRIPT. ... Always output only the HTML code inside a ```html ... ``` code block.""" |
|
|
| TRANSFORMERS_JS_SYSTEM_PROMPT = """You are an expert web developer creating a transformers.js application. ... Always output only the three code blocks as shown above, and do not include any explanations or extra text.""" |
|
|
| |
| AVAILABLE_MODELS = [ |
| {"name": "Moonshot Kimi-K2", "id": "moonshotai/Kimi-K2-Instruct", "description": "Moonshot AI Kimi-K2-Instruct model"}, |
| {"name": "DeepSeek V3", "id": "deepseek-ai/DeepSeek-V3-0324", "description": "DeepSeek V3 model"}, |
| {"name": "DeepSeek R1", "id": "deepseek-ai/DeepSeek-R1-0528", "description": "DeepSeek R1 model"}, |
| {"name": "ERNIE-4.5-VL", "id": "baidu/ERNIE-4.5-VL-424B-A47B-Base-PT", "description": "ERNIE-4.5-VL model"}, |
| {"name": "MiniMax M1", "id": "MiniMaxAI/MiniMax-M1-80k", "description": "MiniMax M1 model"}, |
| {"name": "Qwen3-235B-A22B", "id": "Qwen/Qwen3-235B-A22B", "description": "Qwen3-235B-A22B model"}, |
| {"name": "SmolLM3-3B", "id": "HuggingFaceTB/SmolLM3-3B", "description": "SmolLM3-3B model"}, |
| {"name": "GLM-4.1V-9B-Thinking", "id": "THUDM/GLM-4.1V-9B-Thinking", "description": "GLM-4.1V-9B-Thinking model"}, |
| {"name": "OpenAI GPT-4", "id": "openai/gpt-4", "description": "OpenAI GPT-4 model"}, |
| {"name": "Gemini Pro", "id": "gemini/pro", "description": "Google Gemini Pro model"}, |
| {"name": "Fireworks AI", "id": "fireworks-ai/fireworks-v1", "description": "Fireworks AI model"}, |
| ] |
|
|
| |
| |
| DEMO_LIST = [ |
| {"title": "Todo App", "description": "Create a simple todo application with add, delete, and mark as complete functionality"}, |
| {"title": "Calculator", "description": "Build a basic calculator with addition, subtraction, multiplication, and division"}, |
| {"title": "Chat Interface", "description": "Build a chat interface with message history and user input"}, |
| {"title": "E-commerce Product Card", "description": "Create a product card component for an e-commerce website"}, |
| {"title": "Login Form", "description": "Build a responsive login form with validation"}, |
| {"title": "Dashboard Layout", "description": "Create a dashboard layout with sidebar navigation and main content area"}, |
| {"title": "Data Table", "description": "Build a data table with sorting and filtering capabilities"}, |
| {"title": "Image Gallery", "description": "Create an image gallery with lightbox functionality and responsive grid layout"}, |
| {"title": "UI from Image", "description": "Upload an image of a UI design and I'll generate the HTML/CSS code for it"}, |
| {"title": "Extract Text from Image", "description": "Upload an image containing text and I'll extract and process the text content"}, |
| {"title": "Website Redesign", "description": "Enter a website URL to extract its content and redesign it with a modern, responsive layout"}, |
| {"title": "Modify HTML", "description": "After generating HTML, ask me to modify it with specific changes using search/replace format"}, |
| {"title": "Search/Replace Example", "description": "Generate HTML first, then ask: 'Change the title to My New Title' or 'Add a blue background to the body'"}, |
| {"title": "Transformers.js App", "description": "Create a transformers.js application with AI/ML functionality using the transformers.js library"} |
| ] |
|
|