import streamlit as st from streamlit_option_menu import option_menu from transformers import pipeline import torch import time import requests import io import os from PIL import Image # Load models translator = pipeline("translation", model="Helsinki-NLP/opus-mt-dra-en") # for summarizer api SUMMARIZER_API_URL = "https://api.groq.com/openai/v1/chat/completions" summarizer_headers = {"Authorization": f"Bearer {os.getenv('GROQ_API_TOKEN')}", "Content-Type": "application/json"} # for image api IMAGE_API_URL = "https://api-inference.huggingface.co/models/ZB-Tech/Text-to-Image" img_headers = {"Authorization": f"Bearer {os.getenv('HF_API_TOKEN')}"} # Functions for each task def translate_tamil_to_english(text): time.sleep(2) result = translator(text) return result[0]['translation_text'] def summarize_english_text(paragraph): time.sleep(2) # Request payload payload = { "model": "mixtral-8x7b-32768", "messages": [ {"role": "system", "content": "Create a summary of below paragraph in 30 words max"}, {"role": "user", "content": paragraph} ], "max_tokens": 100 # number of words in the output. } # Send POST request to Groq API response = requests.post(SUMMARIZER_API_URL, json=payload, headers=summarizer_headers) # Check if the request was successful if response.status_code == 200: # Parse the JSON response result = response.json() # Extract and print the generated text generated_text = result['choices'][0]['message']['content'] return generated_text else: return f"Error: {response.status_code}, {response.text}" def english_text_to_image(prompt): payload = { "inputs": prompt, } response = requests.post(IMAGE_API_URL, headers=img_headers, json=payload) image_bytes = response.content image = Image.open(io.BytesIO(image_bytes)) return image # Custom CSS # st.markdown(""" # # """, unsafe_allow_html=True) # #sidebar styling # st.markdown(""" # # """, unsafe_allow_html=True) #options styling in sidebar and added image in sidebar with st.sidebar: selected = option_menu( menu_title="", options=['Home','Tool'], icons=['house-door-fill','setting'], menu_icon='truck-front-fill', default_index=0, styles={ "container": {'padding':'5!important','background-color':'#FAF9F6'}, "icon": {'color':"#000000", "font-size":"23px"}, "nav-link": {'font-size':'16px','text-align':'left','margin':'0px','--hover-color':'#EDEADE','font-weight':'bold'}, "nav-link-selector":{'background-color':'#E6E6FA','font-weight':'bold'} } ) if selected == "Home": # Page title and header st.title(":blue[Multi-Purpose Tool] - Empowering Educators 🎓") # Subheader for the app description st.subheader("A versatile tool designed to assist teachers in translating, summarizing, and visualizing concepts.") # Main description with detailed information about the app st.markdown(""" The **Multi-Purpose Tool** is a user-friendly platform developed for educators, enabling them to enhance their teaching experience. Whether it's translating content into different languages, summarizing lengthy materials, or visualizing concepts through images, this tool provides a one-stop solution for modern teaching needs. ### Key Features: - **Translation**: Translate text seamlessly between languages (e.g., Tamil to English). - **Summarization**: Quickly generate summaries of long passages for easy understanding. - **Text to Image**: Visualize difficult concepts by generating images from text descriptions. ### Available Worldwide: The Multi-Purpose Tool is deployed on Hugging Face and accessible globally to teachers and educators at the click of a button. Visit the [app here](https://huggingface.co/spaces/Jesivn/Multi_purpose_Software). Empower your classroom with advanced AI tools today! """) elif selected=="Tool": # Row 1: Tamil to English translation st.subheader("🌐 Translate Tamil to English") tamil_input = st.text_area("Enter Tamil text", "") if st.button("Translate"): english_output = translate_tamil_to_english(tamil_input) st.markdown(f"**Translated English Text**: {english_output}") # Row 2: English paragraph summarization st.subheader("📝 Summarize English Paragraph") english_paragraph = st.text_area("Enter English paragraph", "") if st.button("Summarize"): summary_output = summarize_english_text(english_paragraph) st.markdown(f"**Summary**: {summary_output}") # Row 3: English text to image generation st.subheader("🎨 Generate Image from English Text") image_text = st.text_input("Enter description for image generation", "") if st.button("Generate Image"): generated_image = english_text_to_image(image_text) st.image(generated_image, caption="Generated Image")