import gradio as gr from openai import OpenAI def process_language(api_key, task, user_message): if not api_key: return "⚠️ Please enter your Groq API Key" client = OpenAI( base_url="https://api.groq.com/openai/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( model="mixtral-8x7b-32768", 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 Groq API Key" client = OpenAI( base_url="https://api.groq.com/openai/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( model="llama2-70b-4096", 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 Groq API Key" client = OpenAI( base_url="https://api.groq.com/openai/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( model="mixtral-8x7b-32768", 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 (Groq Version)") api_key = gr.Textbox(label="Enter your Groq API Key", type="password") with gr.Tabs(): 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) 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) 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()