import gradio as gr import os # Helper function: Generate a simple Python script def generate_code(description: str): templates = { "hello world": "print('Hello, World!')", "file reader": """ with open('example.txt', 'r') as file: content = file.read() print(content) """, "basic calculator": """ def calculator(a, b, operation): if operation == 'add': return a + b elif operation == 'subtract': return a - b elif operation == 'multiply': return a * b elif operation == 'divide' and b != 0: return a / b else: return 'Invalid operation or division by zero' print(calculator(10, 5, 'add')) """ } return templates.get(description.lower(), "Sorry, I don't have a template for that yet!") # Helper function: File conversion (e.g., .txt to .csv) def convert_file(file): base, ext = os.path.splitext(file.name) if ext == ".txt": new_file = base + ".csv" with open(file.name, "r") as f: content = f.readlines() with open(new_file, "w") as f: for line in content: f.write(",".join(line.split()) + "\n") return f"File converted successfully: {new_file}" return "Unsupported file format for conversion." # Helper function: Basic diagnostics def diagnose_system(issue: str): suggestions = { "slow pc": "Try clearing temporary files, disabling startup programs, and checking for malware.", "internet issues": "Restart your router, check DNS settings, or contact your ISP.", "high memory usage": "Check running processes in Task Manager and close unnecessary programs." } return suggestions.get(issue.lower(), "Sorry, I don't have a suggestion for that issue.") # Gradio Interface def main_interface(action, text_input=None, file_input=None): if action == "Generate Code": return generate_code(text_input) elif action == "Convert File": if file_input: return convert_file(file_input) return "No file uploaded for conversion." elif action == "Diagnose Issue": return diagnose_system(text_input) else: return "Invalid action selected." # Gradio app with gr.Blocks() as demo: gr.Markdown("# Tech Guru Bot - Your Personal Tech Assistant") with gr.Row(): action = gr.Radio( ["Generate Code", "Convert File", "Diagnose Issue"], label="Choose an action", value="Generate Code", ) text_input = gr.Textbox(label="Enter your query or description") file_input = gr.File(label="Upload a file (for file conversion)") output = gr.Textbox(label="Output", interactive=False) btn = gr.Button("Submit") btn.click( fn=main_interface, inputs=[action, text_input, file_input], outputs=[output], ) # Launch the Gradio app if __name__ == "__main__": demo.launch()