PythonHelper / app.py
Ilya
Update app.py
f66a341 verified
raw
history blame
2.15 kB
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. Make sure that the code is runnable and doesn't close the shell window, so end with input() if the user request is simple. 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()