Spaces:
Sleeping
Sleeping
import gradio as gr | |
from openai import OpenAI | |
def process_language(api_key, task, user_message): | |
if not api_key: | |
return "β οΈ Please enter your OpenRouter API Key" | |
client = OpenAI( | |
base_url="https://openrouter.ai/api/v1", | |
api_key=api_key | |
) | |
system_message = ("You are a bilingual language tutor. Respond in the language used in the question. " | |
"For conversations, keep exchanges natural. For grammar explanations, provide " | |
"detailed rules with English/Chinese examples.") | |
try: | |
completion = client.chat.completions.create( | |
extra_headers={"HTTP-Referer": "", "X-Title": ""}, | |
extra_body={}, | |
model="deepseek/deepseek-v3-base:free", | |
messages=[ | |
{"role": "system", "content": system_message}, | |
{"role": "user", "content": f"{task}: {user_message}"} | |
] | |
) | |
return completion.choices[0].message.content | |
except Exception as e: | |
return f"β Error: {str(e)}" | |
def process_pseudocode(api_key, user_idea): | |
if not api_key: | |
return "β οΈ Please enter your OpenRouter API Key" | |
client = OpenAI( | |
base_url="https://openrouter.ai/api/v1", | |
api_key=api_key | |
) | |
system_message = ("Generate clear, step-by-step pseudocode for the given idea. " | |
"Use programming conventions but avoid actual code. Structure your answer with:") | |
try: | |
completion = client.chat.completions.create( | |
extra_headers={"HTTP-Referer": "", "X-Title": ""}, | |
extra_body={}, | |
model="deepseek/deepseek-v3-base:free", | |
messages=[ | |
{"role": "system", "content": system_message}, | |
{"role": "user", "content": user_idea} | |
] | |
) | |
return completion.choices[0].message.content | |
except Exception as e: | |
return f"β Error: {str(e)}" | |
def process_algorithm(api_key, challenge): | |
if not api_key: | |
return "β οΈ Please enter your OpenRouter API Key" | |
client = OpenAI( | |
base_url="https://openrouter.ai/api/v1", | |
api_key=api_key | |
) | |
system_message = ("Suggest multiple approaches to solve the problem. Compare time/space complexity, " | |
"trade-offs, and ideal use cases. Structure your answer clearly.") | |
try: | |
completion = client.chat.completions.create( | |
extra_headers={"HTTP-Referer": "", "X-Title": ""}, | |
extra_body={}, | |
model="deepseek/deepseek-v3-base:free", | |
messages=[ | |
{"role": "system", "content": system_message}, | |
{"role": "user", "content": challenge} | |
] | |
) | |
return completion.choices[0].message.content | |
except Exception as e: | |
return f"β Error: {str(e)}" | |
with gr.Blocks(theme=gr.themes.Soft()) as app: | |
gr.Markdown("# π Code & Language Learning Assistant") | |
api_key = gr.Textbox(label="Enter your OpenRouter API Key", type="password") | |
with gr.Tabs(): | |
# Language Learning Tab | |
with gr.Tab("π¬π§/π¨π³ Language Learning Buddy"): | |
with gr.Row(): | |
with gr.Column(): | |
task_type = gr.Radio( | |
choices=["Simulate bilingual conversation", "Explain grammar rules"], | |
label="Select Task Type" | |
) | |
lang_input = gr.Textbox(label="Your message/question", lines=3) | |
lang_btn = gr.Button("Get Assistance") | |
lang_output = gr.Textbox(label="Assistant Response", interactive=False, lines=10) | |
lang_btn.click(process_language, [api_key, task_type, lang_input], lang_output) | |
# Pseudocode Tab | |
with gr.Tab("π Pseudocode Explainer"): | |
with gr.Row(): | |
with gr.Column(): | |
pseudo_input = gr.Textbox(label="Your idea (e.g., 'How to build a calculator app')", lines=3) | |
pseudo_btn = gr.Button("Generate Steps") | |
pseudo_output = gr.Textbox(label="Step-by-Step Pseudocode", interactive=False, lines=10) | |
pseudo_btn.click(process_pseudocode, [api_key, pseudo_input], pseudo_output) | |
# Algorithm Tab | |
with gr.Tab("π§ Algorithm Brainstormer"): | |
with gr.Row(): | |
with gr.Column(): | |
algo_input = gr.Textbox(label="Challenge description (e.g., 'Sort list without built-in functions')", lines=3) | |
algo_btn = gr.Button("Brainstorm Solutions") | |
algo_output = gr.Textbox(label="Suggested Approaches", interactive=False, lines=10) | |
algo_btn.click(process_algorithm, [api_key, algo_input], algo_output) | |
app.launch() |