import streamlit as st from sentence_transformers import SentenceTransformer, util from groq import Groq import os # 1. Page Configuration & Professional High-Contrast Light Theme st.set_page_config( page_title="ZeroAi Assistant", page_icon="⚡", layout="centered" ) st.markdown(""" """, unsafe_allow_html=True) # 2. Predefined Responses for Basic Chatbot Logic PREDEFINED_RESPONSES = { "hello": "Hello! I am ZeroAi, your everyday assistant. How can I help you today? 👋", "hi": "Hi there! I'm ZeroAi. Ready to answer regular questions or map out machine learning tasks.", "who are you": "I am ZeroAi, a versatile AI assistant. I can handle basic daily tasks or recommend specialized machine learning models depending on what you need.", "help": "You can ask me simple questions, request text corrections, or describe a software problem to get open-source model recommendations!", "clear": "To wipe our active chat session history, click the 'Reset Workspace' button inside the sidebar panel." } # 3. Model Architecture Dataset @st.cache_data def get_model_universe(): return [ {"name": "distilbert-base-uncased-finetuned-sst-2-english", "category": "Sentiment Analysis / Text Classification", "speed": "95/100", "accuracy": "91%", "size": "268 MB", "desc": "Fastest choice for production text sentiment analysis."}, {"name": "cardiffnlp/twitter-roberta-base-sentiment-latest", "category": "Sentiment Analysis / Text Classification", "speed": "72/100", "accuracy": "95%", "size": "499 MB", "desc": "Highly accurate on slang, emojis, and social media layout nuances."}, {"name": "prajjwal1/bert-tiny", "category": "Sentiment Analysis / Text Classification", "speed": "99/100", "accuracy": "76%", "size": "17.8 MB", "desc": "Ultra-lightweight footprint optimized for mobile or edge deployment."}, {"name": "facebook/bart-large-cnn", "category": "Summarization", "speed": "48/100", "accuracy": "96%", "size": "1.63 GB", "desc": "Gold standard for generating coherent, abstractive long summaries."}, {"name": "sshleifer/distilbart-cnn-12-6", "category": "Summarization", "speed": "82/100", "accuracy": "90%", "size": "1.20 GB", "desc": "Great balance between low latency and content recall."}, {"name": "dbmdz/bert-large-cased-finetuned-conll03-english", "category": "Named Entity Recognition (NER)", "speed": "60/100", "accuracy": "97%", "size": "1.33 GB", "desc": "Flawless detection of organizations, people, locations, and data keys."}, {"name": "elastic/distilbert-base-cased-finetuned-conll03-english", "category": "Named Entity Recognition (NER)", "speed": "94/100", "accuracy": "89%", "size": "261 MB", "desc": "Lean setup for high-volume real-time token text streams parsing."}, {"name": "Helsinki-NLP/opus-mt-en-de", "category": "Translation", "speed": "85/100", "accuracy": "92%", "size": "298 MB", "desc": "Highly reliable local translation model for European language shifts."}, {"name": "facebook/m2m100_418M", "category": "Translation", "speed": "55/100", "accuracy": "90%", "size": "1.84 GB", "desc": "Can translate directly between 100 languages without routing through English."}, {"name": "deepset/roberta-base-squad2", "category": "Question Answering", "speed": "74/100", "accuracy": "93%", "size": "496 MB", "desc": "Excellent for context search engines extracting snippets from user documentation databases."}, {"name": "Intel/dynamic_tinybert_squad2", "category": "Question Answering", "speed": "92/100", "accuracy": "84%", "size": "114 MB", "desc": "Accelerated quantization format ensuring nimble answers over shared networks."}, {"name": "Qwen/Qwen2.5-Coder-7B-Instruct", "category": "Code Generation & Syntax Design", "speed": "68/100", "accuracy": "94%", "size": "14.0 GB", "desc": "State-of-the-art weights handling programming scripts and algorithm builds."}, {"name": "HuggingFaceTB/SmolLM2-1.3B-Instruct", "category": "General Text Generation & Instructions", "speed": "96/100", "accuracy": "82%", "size": "2.6 GB", "desc": "Compact local chat companion running beautifully on minimal consumer hardware setups."} ] @st.cache_resource def init_local_embedder(): return SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") model_universe = get_model_universe() embedder = init_local_embedder() categories_list = list(set([m["category"] for m in model_universe])) category_vectors = embedder.encode(categories_list, convert_to_tensor=True) # Crash-proof API environment lookup GROQ_KEY = os.environ.get("GROQ_API_KEY") or "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" groq_client = Groq(api_key=GROQ_KEY) # 4. Interface Header Display st.markdown("""
⚡ Smart Assistant & Model Recommendation Hub