import gradio as gr from huggingface_hub import InferenceClient import sys import io import traceback model_name = "Qwen/Qwen2.5-72B-Instruct" client = InferenceClient(model_name) def llm_inference(user_sample): eos_token = "<|endoftext|>" output = client.chat.completions.create( messages=[ {"role": "system", "content": "You are a Python language guide. Write code on the user topic. If the input is code, correct it for mistakes."}, {"role": "user", "content": f"Write only python code without any explanation: {user_sample}"}, ], stream=False, temperature=0.7, top_p=0.1, max_tokens=412, stop=[eos_token] ) response = '' for choice in output.choices: response += choice['message']['content'] return response def chat(user_input, history): response = llm_inference(user_input) history.append((user_input, response)) return history, history def execute_code(code): old_stdout = sys.stdout redirected_output = sys.stdout = io.StringIO() try: exec(code, {}) output = redirected_output.getvalue() except Exception as e: output = f"Error: {e}\n{traceback.format_exc()}" finally: sys.stdout = old_stdout return output with gr.Blocks() as demo: gr.Markdown("# 🐍 Python Helper Chatbot") with gr.Tab("Chat"): chatbot = gr.Chatbot() msg = gr.Textbox(placeholder="Type your message here...") msg.submit(chat, inputs=[msg, chatbot], outputs=[chatbot, chatbot]) with gr.Tab("Interpreter"): gr.Markdown("### 🖥️ Test Your Code") code_input = gr.Code(language="python") run_button = gr.Button("Run Code") code_output = gr.Textbox(label="Output") run_button.click(execute_code, inputs=code_input, outputs=code_output) with gr.Tab("Logs"): gr.Markdown("### 📜 Logs") log_output = gr.Textbox(label="Logs", lines=10, interactive=False) demo.launch()