| import gradio as gr | |
| import os | |
| from groq import Groq | |
| def initialize_groq_client(): | |
| api_key = os.getenv("GROQ_API_KEY") | |
| if not api_key: | |
| raise ValueError("GROQ_API_KEY environment variable not set") | |
| return Groq(api_key=api_key) | |
| def translate_to_swahili(text, temperature=0.3): | |
| if not text.strip(): | |
| return "Please enter some text to translate." | |
| try: | |
| client = initialize_groq_client() | |
| prompt = f"""You are a professional translator. Translate the following English text to Swahili. | |
| Provide only the Swahili translation, nothing else. | |
| English text: {text} | |
| Swahili translation:""" | |
| completion = client.chat.completions.create( | |
| model="meta-llama/llama-4-scout-17b-16e-instruct", | |
| messages=[ | |
| { | |
| "role": "user", | |
| "content": prompt | |
| } | |
| ], | |
| temperature=temperature, | |
| max_completion_tokens=1024, | |
| top_p=1, | |
| stream=False, | |
| stop=None, | |
| ) | |
| return completion.choices[0].message.content.strip() | |
| except Exception as e: | |
| return f"Error during translation: {str(e)}" | |
| def translate_with_streaming(text, temperature=0.3): | |
| if not text.strip(): | |
| yield "Please enter some text to translate." | |
| return | |
| try: | |
| client = initialize_groq_client() | |
| prompt = f"""You are a professional translator. Translate the following English text to Swahili. | |
| Provide only the Swahili translation, nothing else. | |
| English text: {text} | |
| Swahili translation:""" | |
| completion = client.chat.completions.create( | |
| model="meta-llama/llama-4-scout-17b-16e-instruct", | |
| messages=[ | |
| { | |
| "role": "user", | |
| "content": prompt | |
| } | |
| ], | |
| temperature=temperature, | |
| max_completion_tokens=1024, | |
| top_p=1, | |
| stream=True, | |
| stop=None, | |
| ) | |
| full_response = "" | |
| for chunk in completion: | |
| if chunk.choices[0].delta.content: | |
| full_response += chunk.choices[0].delta.content | |
| yield full_response | |
| except Exception as e: | |
| yield f"Error during translation: {str(e)}" | |
| def create_interface(): | |
| with gr.Blocks(title="English to Swahili Translator", theme=gr.themes.Soft()) as iface: | |
| gr.Markdown("# π English to Swahili Translator") | |
| gr.Markdown("Powered by Groq's Llama 4 - Translate English text to Swahili") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| input_text = gr.Textbox( | |
| label="English Text", | |
| placeholder="Enter English text to translate...", | |
| lines=5, | |
| max_lines=10 | |
| ) | |
| temperature = gr.Slider( | |
| minimum=0.1, | |
| maximum=1.0, | |
| value=0.3, | |
| step=0.1, | |
| label="Temperature (creativity level)", | |
| info="Lower values = more consistent, Higher values = more creative" | |
| ) | |
| with gr.Row(): | |
| translate_btn = gr.Button("π Translate", variant="primary") | |
| clear_btn = gr.Button("ποΈ Clear") | |
| with gr.Column(scale=1): | |
| output_text = gr.Textbox( | |
| label="Swahili Translation", | |
| lines=5, | |
| max_lines=10, | |
| interactive=False | |
| ) | |
| gr.Examples( | |
| examples=[ | |
| ["Hello, how are you?"], | |
| ["I love learning new languages."], | |
| ["The weather is beautiful today."], | |
| ["Thank you for your help."], | |
| ["What time is it?"] | |
| ], | |
| inputs=[input_text], | |
| label="Try these examples:" | |
| ) | |
| translate_btn.click( | |
| fn=translate_with_streaming, | |
| inputs=[input_text, temperature], | |
| outputs=[output_text], | |
| show_progress=True | |
| ) | |
| clear_btn.click( | |
| fn=lambda: ("", ""), | |
| outputs=[input_text, output_text] | |
| ) | |
| input_text.submit( | |
| fn=translate_with_streaming, | |
| inputs=[input_text, temperature], | |
| outputs=[output_text], | |
| show_progress=True | |
| ) | |
| return iface | |
| if __name__ == "__main__": | |
| iface = create_interface() | |
| iface.launch( | |
| debug=True, | |
| share=False, | |
| server_name="0.0.0.0", | |
| server_port=7860 | |
| ) | |
| def launch_hf_space(): | |
| iface = create_interface() | |
| iface.launch() |