DevToolKit / app.py
acecalisto3's picture
Update app.py
a98a37e verified
raw
history blame
1.51 kB
import gradio as gr
import os
import subprocess
import time
def chat_with_code(history, user_input):
"""
Handles user input and processes it through code interpreter and terminal.
"""
history.append((user_input, None)) # Add user input to history
try:
# Attempt to execute code
if user_input.startswith("```") and user_input.endswith("```"):
code = user_input[3:-3].strip()
output = execute_code(code)
else:
# Attempt to execute terminal command
output = execute_terminal(user_input)
history[-1] = (user_input, output) # Update history with output
except Exception as e:
history[-1] = (user_input, f"Error: {e}")
return history
def execute_code(code):
"""
Executes Python code and returns the output.
"""
try:
exec(code)
except Exception as e:
return f"Error: {e}"
return "Code executed successfully!"
def execute_terminal(command):
"""
Executes a terminal command and returns the output.
"""
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
output = stdout.decode("utf-8").strip()
if stderr:
output += f"\nError: {stderr.decode('utf-8').strip()}"
return output
# Create Gradio interface
iface = gr.ChatInterface(chat_with_code,
title="Code Interpreter & Terminal Chat",
description="Ask questions, write code, and run terminal commands!")
iface.launch(share=True)