import gradio as gr import torch import numpy as np from sentence_transformers import SentenceTransformer, util # Load pre-trained transformer model for vectorization model = SentenceTransformer("all-MiniLM-L6-v2") # Predefined correct answer (can be a phrase, word, or number) correct_answer = "AI is powerful" # Convert correct answer into vector correct_vector = model.encode(correct_answer, convert_to_tensor=True) def check_answer(user_input): """ Function to compare user input with the correct answer """ if not user_input.strip(): return "Please enter a valid input.", 0.0 # Vectorize user input user_vector = model.encode(user_input, convert_to_tensor=True) # Compute similarity score (cosine similarity) similarity_score = util.pytorch_cos_sim(user_vector, correct_vector).item() # Set a threshold for winning threshold = 0.9 # Game logic: Check if user wins if similarity_score >= threshold: return f"🎉 Congratulations! Your input is {similarity_score*100:.2f}% similar. You won!", similarity_score else: return f"❌ Try again! Your input is {similarity_score*100:.2f}% similar. Retry or Exit.", similarity_score # Gradio UI with gr.Blocks() as demo: gr.Markdown("# Transformer-Based AI Game 🎮") gr.Markdown("### Enter a phrase that closely matches the correct answer to win!") user_input = gr.Textbox(label="Your Input") submit_btn = gr.Button("Submit") output_text = gr.Textbox(label="Game Result", interactive=False) output_score = gr.Number(label="Similarity Score", interactive=False) submit_btn.click(check_answer, inputs=[user_input], outputs=[output_text, output_score]) # Launch the Gradio app if __name__ == "__main__": demo.launch()