MistriDevLab / app.py

Commit History

Update app.py
4fd2fa4
verified

acecalisto3 commited on

Update app.py
39a6462
verified

acecalisto3 commited on

Update app.py
4781efb
verified

acecalisto3 commited on

Update app.py
dee1385
verified

acecalisto3 commited on

Update app.py
6d66eb2
verified

acecalisto3 commited on

Update app.py
b2eac4f
verified

acecalisto3 commited on

Update app.py
ef1426a
verified

acecalisto3 commited on

import os import subprocess import random import json from datetime import datetime from huggingface_hub import ( InferenceClient, cached_download, hf_hub_url ) import gradio as gr from safe_search import safe_search from i_search import google from i_search import i_search as i_s from agent import ( ACTION_PROMPT, ADD_PROMPT, COMPRESS_HISTORY_PROMPT, LOG_PROMPT, LOG_RESPONSE, MODIFY_PROMPT, PRE_PREFIX, SEARCH_QUERY, READ_PROMPT, TASK_PROMPT, UNDERSTAND_TEST_RESULTS_PROMPT, ) from utils import ( parse_action, parse_file_content, read_python_module_structure ) from datetime import datetime import json #--- Global Variables for App State --- app_state = {"components": []} terminal_history = "" #--- Component Library --- components_registry = { "Button": { "properties": {"label": "Click Me", "onclick": ""}, "description": "A clickable button", "code_snippet": 'gr.Button(value="{label}", variant="primary")', }, "Text Input": { "properties": {"value": "", "placeholder": "Enter text"}, "description": "A field for entering text", "code_snippet": 'gr.Textbox(label="{placeholder}")', }, "Image": { "properties": {"src": "#", "alt": "Image"}, "description": "Displays an image", "code_snippet": 'gr.Image(label="{alt}")', }, "Dropdown": { "properties": {"choices": ["Option 1", "Option 2"], "value": ""}, "description": "A dropdown menu for selecting options", "code_snippet": 'gr.Dropdown(choices={choices}, label="Dropdown")'}, # Add more components here... } #--- NLP Model (Example using Hugging Face) --- nlp_model_names = [ "google/flan-t5-small", "Qwen/CodeQwen1.5-7B-Chat-GGUF", "bartowski/Codestral-22B-v0.1-GGUF", "bartowski/AutoCoder-GGUF" ] nlp_models = [] for nlp_model_name in nlp_model_names: try: cached_download(hf_hub_url(nlp_model_name, revision="main")) nlp_models.append(InferenceClient(nlp_model_name)) except: nlp_models.append(None) #--- Function to get NLP model response --- def get_nlp_response(input_text, model_index): if nlp_models[model_index]: response = nlp_models[model_index].text_generation(input_text) return response.generated_text else: return "NLP model not available." # --- Component Class --- class Component: def __init__(self, type, properties=None, id=None): self.id = id or random.randint(1000, 9999) self.type = type self.properties = properties or components_registry[type]["properties"].copy() def to_dict(self): return { "id": self.id, "type": self.type, "properties": self.properties, } def render(self): # Properly format choices for Dropdown if self.type == "Dropdown": self.properties["choices"] = ( str(self.properties["choices"]) .replace("[", "") .replace("]", "") .replace("'", "") ) return components_registry[self.type]["code_snippet"].format( **self.properties ) # --- Function to update the app canvas (for preview) --- def update_app_canvas(): components_html = "".join( [ f"<div>Component ID: {component['id']}, Type: {component['type']}, Properties: {component['properties']}</div>" for component in app_state["components"] ] ) return components_html # --- Function to handle component addition --- def add_component(component_type): if component_type in components_registry: new_component = Component(component_type) app_state["components"].append(new_component.to_dict()) return ( update_app_canvas(), f"System: Added component: {component_type}\n", ) else: return None, f"Error: Invalid component type: {component_type}\n" # --- Function to handle terminal input --- def run_terminal_command(command, history): global terminal_history output = "" try: # Basic command parsing (expand with NLP) if command.startswith("add "): component_type = command.split("add ", 1)[1].strip() _, output = add_component(component_type) elif command.startswith("set "): _, output = set_component_property(command) elif command.startswith("search "): search_query = command.split("search ", 1)[1].strip() output = i_s(search_query) elif command.startswith("deploy "): app_name = command.split("deploy ", 1)[1].strip() output = deploy_to_huggingface(app_name) else: # Attempt to execute command as Python code try: result = subprocess.check_output( command, shell=True, stderr=subprocess.STDOUT, text=True ) output = result except Exception as e: output = f"Error executing Python code: {str(e)}" except Exception as e: output = f"Error: {str(e)}" finally: terminal_history += f"User: {command}\n" terminal_history += f"{output}\n" return terminal_history def set_component_property(command): try: # Improved 'set' command parsing set_parts = command.split(" ", 2)[1:] if len(set_parts) != 2: raise ValueError("Invalid 'set' command format.") component_id = int(set_parts[0]) # Use component ID property_name, property_value = set_parts[1].split("=", 1) # Find component by ID component_found = False for component in app_state["components"]: if component["id"] == component_id: if property_name in component["properties"]: component["properties"][ property_name.strip() ] = property_value.strip() component_found = True return ( update_app_canvas(), f"System: Property '{property_name}' set to '{property_value}' for component {component_id}\n", ) else: return ( None, f"Error: Property '{property_name}' not found in component {component_id}\n", ) if not component_found: return ( None, f"Error: Component with ID {component_id} not found.\n", ) except Exception as e: return None, f"Error: Invalid 'set' command format or error setting property: {str(e)}\n" #--- Function to handle chat interaction --- def run_chat(message, history): global terminal_history if message.startswith("!"): command = message[1:] terminal_history = run_terminal_command(command, history) else: # ... (Your regular chat response generation) model_index = 0 # Select the model to use for chat response response = get_nlp_response(message, model_index) if response: return history, terminal_history + f"User: {message}\nAssistant: {response}" else: return history, terminal_history + f"User: {message}\nAssistant: I'm sorry, I couldn't generate a response. Please try again.\n" --- Code Generation --- def generate_python_code(app_name): code = f"""import gradio as gr Define your Gradio components here with gr.Blocks() as {app_name}: """ for component in app_state["components"]: code += " " + Component(**component).render() + "\n" code += f""" {app_name}.launch() """ return code --- Hugging Face Deployment --- def deploy_to_huggingface(app_name): Generate Python code code = generate_python_code(app_name) Create requirements.txt with open("requirements.txt", "w") as f: f.write("gradio==3.32.0\n") Create the app.py file with open("app.py", "w") as f: f.write(code) Execute the deployment command try: subprocess.run( ["huggingface-cli", "repo", "create", "--type", "space", "--space_sdk", "gradio", app_name], check=True ) subprocess.run( ["git", "init"], cwd=f"./{app_name}', check=True ) subprocess.run( ["git", "add", "."], cwd=f'./{app_name}', check=True ) subprocess.run( ['git', 'commit', '-m', '"Initial commit"'], cwd=f'./{app_name}', check=True ) subprocess.run( ["git", "push", "https://huggingface.co/spaces/" + app_name, "main"], cwd=f'./{app_name}', check=True ) return ( f"Successfully deployed to Hugging Face Spaces: https://huggingface.co/spaces/{app\_name}" ) except Exception as e: return f"Error deploying to Hugging Face Spaces: {e}" --- Gradio Interface --- with gr.Blocks() as iface: --- Chat Interface --- chat_history = gr.Chatbot(label="Chat with Agent") chat_input = gr.Textbox(label="Your Message") chat_button = gr.Button("Send") chat_button.click( run_chat, inputs=[chat_input, chat_history], outputs=[chat_history, terminal_output], ) --- Terminal --- terminal_output = gr.Textbox( lines=8, label="Terminal", value=terminal_history ) terminal_input = gr.Textbox(label="Enter Command") terminal_button = gr.Button("Run") terminal_button.click( run_terminal_command, inputs=[terminal_input, terminal_output], outputs=terminal_output, ) iface.launch()
4cbab65
verified

acecalisto3 commited on

Update app.py
4e32073
verified

acecalisto3 commited on

Update app.py
b8b7a36
verified

acecalisto3 commited on

Update app.py
58ddfa5
verified

acecalisto3 commited on

replaced openai with hf
e59044b

acecalisto3 commited on

Update app.py
f22eb83
verified

acecalisto3 commited on

Update app.py
4a17e99
verified

acecalisto3 commited on

Update app.py
9d6ea83
verified

acecalisto3 commited on

Update app.py
5e396de
verified

acecalisto3 commited on

Update app.py
2fd95c6
verified

acecalisto3 commited on

Update app.py
6145f14
verified

acecalisto3 commited on

Update app.py
5762a81
verified

acecalisto3 commited on

Update app.py
d734e19
verified

acecalisto3 commited on

Update app.py
f9baa59
verified

acecalisto3 commited on

Update app.py
abe5352
verified

acecalisto3 commited on

Update app.py
fae4179
verified

acecalisto3 commited on

Update app.py
5ac92d0
verified

acecalisto3 commited on

Update app.py
8af33a6
verified

acecalisto3 commited on

Update app.py
96ebd64
verified

acecalisto3 commited on

Update app.py
87ebe64
verified

acecalisto3 commited on

Update app.py
a6330bd
verified

acecalisto3 commited on

Update app.py
3505da6
verified

acecalisto3 commited on

Update app.py
825301b
verified

acecalisto3 commited on

Update app.py
6960b71
verified

acecalisto3 commited on

Update app.py
db57cfa
verified

acecalisto3 commited on

Update app.py
7307852
verified

acecalisto3 commited on

Update app.py
d3239e9
verified

acecalisto3 commited on

Update app.py
7c29005
verified

acecalisto3 commited on

Update app.py
cf42983
verified

acecalisto3 commited on

Update app.py
aebe768
verified

acecalisto3 commited on

Update app.py
f99efad
verified

acecalisto3 commited on

Update app.py
ed877ce
verified

acecalisto3 commited on

Update app.py
66cb5d1
verified

acecalisto3 commited on

Update app.py
326f2b6
verified

acecalisto3 commited on

Update app.py
1c1ebbe
verified

acecalisto3 commited on

Update app.py
393b034
verified

acecalisto3 commited on

Update app.py
aafd4c1
verified

acecalisto3 commited on

Update app.py
085b6c2

johann22 commited on

Update app.py
f599bc8

johann22 commited on

Update app.py
32e352e

johann22 commited on

Update app.py
cf30049

johann22 commited on

Update app.py
9355e8a

johann22 commited on

Update app.py
5ff0b0d

johann22 commited on