import gradio as gr import requests import numpy as np import os # إعدادات الموديل API_URL = "https://api-inference.huggingface.co/models/sentence-transformers/paraphrase-mpnet-base-v2" HEADERS = {"Authorization": f"Bearer {os.getenv('HUGGINGFACE_API_TOKEN')}"} def get_embedding(text): response = requests.post(API_URL, headers=HEADERS, json={"inputs": text}) if response.status_code == 200: return np.array(response.json()[0]) else: return None def cosine_similarity(vec1, vec2): if vec1 is None or vec2 is None: return "❌ Error fetching embeddings" dot = np.dot(vec1, vec2) norm_a = np.linalg.norm(vec1) norm_b = np.linalg.norm(vec2) if norm_a == 0 or norm_b == 0: return 0.0 return float(dot / (norm_a * norm_b)) def compare_sentences(sentence1, sentence2): embedding1 = get_embedding(sentence1) embedding2 = get_embedding(sentence2) similarity = cosine_similarity(embedding1, embedding2) return { "Sentence 1": sentence1, "Sentence 2": sentence2, "Cosine Similarity": round(similarity, 4) if isinstance(similarity, float) else similarity } # واجهة Gradio iface = gr.Interface( fn=compare_sentences, inputs=[ gr.Textbox(label="Sentence 1", placeholder="Enter the first sentence..."), gr.Textbox(label="Sentence 2", placeholder="Enter the second sentence...") ], outputs="json", title="Sentence Similarity using HuggingFace API", description="Compares two sentences using the `paraphrase-mpnet-base-v2` model and returns the cosine similarity." ) iface.launch(share=True)