Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gpt_tools import ( | |
handle_chat, handle_code, | |
handle_explain, handle_translate, handle_debug | |
) | |
from project_builder import generate_project | |
import json | |
chat_state = gr.State([]) | |
def save_history(history): | |
with open("chat_history.json", "w") as f: | |
json.dump(history, f) | |
return "chat_history.json" | |
with gr.Blocks() as app: | |
gr.Markdown("# π€ DevMasterGPT: Full-Stack Coding Genius") | |
model_selector = gr.Radio( | |
["tiiuae/falcon-rw-1b", "mistralai/Mistral-7B-Instruct-v0.1"], | |
label="Choose AI Model", | |
value="tiiuae/falcon-rw-1b" | |
) | |
with gr.Tab("π¬ Chat Assistant"): | |
chatbot = gr.Chatbot(label="π§ Dev Chat", type="messages") | |
chat_input = gr.Textbox(placeholder="Ask anything coding-related...", lines=1) | |
send_btn = gr.Button("Send") | |
save_btn = gr.Button("πΎ Save Chat History") | |
chat_file = gr.File(label="Chat History JSON") | |
send_btn.click(fn=handle_chat, inputs=[chat_input, chat_state, model_selector], outputs=[chatbot, chat_state]) | |
save_btn.click(fn=save_history, inputs=chat_state, outputs=chat_file) | |
with gr.Tab("π» Code Lab"): | |
code_input = gr.Code(label="Editor", language="python") | |
code_output = gr.Code(label="Response", language="python") | |
run_btn = gr.Button("Run / Fix") | |
run_btn.click(fn=handle_code, inputs=[code_input, model_selector], outputs=code_output) | |
with gr.Tab("π οΈ Code Tools"): | |
code_explain = gr.Button("Explain Code") | |
code_translate = gr.Button("Translate to English") | |
code_debug = gr.Button("Debug Code") | |
tool_output = gr.Textbox(label="Tool Output") | |
code_explain.click(fn=handle_explain, inputs=[code_input, model_selector], outputs=tool_output) | |
code_translate.click(fn=handle_translate, inputs=[code_input, model_selector], outputs=tool_output) | |
code_debug.click(fn=handle_debug, inputs=[code_input, model_selector], outputs=tool_output) | |
with gr.Tab("π Project Generator"): | |
gen_project_btn = gr.Button("Generate Full Project") | |
scaffold_output = gr.Textbox(label="Project Structure", lines=10) | |
gen_project_btn.click(fn=generate_project, outputs=scaffold_output) | |
with gr.Tab("π File Tools"): | |
file_upload = gr.File(label="Upload Code File", type="filepath") | |
file_view = gr.Code(label="Uploaded File Content", language="python") | |
export_btn = gr.Button("Export as .py File") | |
file_download = gr.File(label="Download File") | |
def load_file(f): | |
return open(f.name, 'r').read() | |
def export_code(code): | |
filename = "dev_output.py" | |
with open(filename, "w") as f: | |
f.write(code) | |
return filename | |
file_upload.change(fn=load_file, inputs=file_upload, outputs=file_view) | |
export_btn.click(fn=export_code, inputs=file_view, outputs=file_download) | |
with gr.Tab("π Markdown Preview"): | |
md_input = gr.Textbox(label="Paste Markdown (README.md)", lines=12) | |
md_output = gr.Markdown() | |
md_preview_btn = gr.Button("Preview") | |
md_preview_btn.click(fn=lambda x: x, inputs=md_input, outputs=md_output) | |
app.launch() | |