Spaces:
Sleeping
Sleeping
| import os | |
| from openai import OpenAI | |
| import pandas as pd | |
| import numpy as np | |
| import faiss | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| from pathlib import Path | |
| from src.E_openAI_embeddings import calculate_openai_similarity, load_openai_embeddings | |
| # Streamlit UI | |
| st.title("Sentence Similarity Finder") | |
| # Initialize session state for embeddings | |
| if 'embeddings' not in st.session_state: | |
| st.session_state.embeddings = None | |
| if 'api_key' not in st.session_state: | |
| st.session_state.api_key = None | |
| try: | |
| api_key = os.getenv('OPENAI_API_KEY') | |
| # session_state.api_key = api_key | |
| st.session_state.api_key = api_key | |
| if not api_key: | |
| st.error("OpenAI API key not found. Please set it in the .env file.") | |
| else: | |
| st.success("OpenAI API key loaded successfully.") | |
| api_key = st.session_state.api_key | |
| openai = OpenAI() | |
| openai.api_key = api_key # Initialize OpenAI API | |
| except Exception as e: | |
| st.error(f"An error occurred while loading the OpenAI API: {e}") | |
| # Button to load OpenAI embeddings | |
| if st.button("Get OpenAI embeddings"): | |
| embeddings_path = Path("embeddings") / "openai_embeddings.csv" | |
| if not embeddings_path.exists(): | |
| st.error(f"Embeddings file not found at {embeddings_path}.") | |
| else: | |
| # Load embeddings and store in session state | |
| embeddings = load_openai_embeddings(str(embeddings_path)) | |
| st.session_state.embeddings = embeddings | |
| st.success(f"Embeddings loaded from {embeddings_path}.") | |
| # User input for sentence similarity | |
| user_input = st.text_input("Enter a sentence:") | |
| # Button to calculate similarity | |
| similarity_button = st.button("Calculate similarity") | |
| if similarity_button: | |
| if st.session_state.embeddings is None: | |
| st.warning("Please load embeddings by clicking the 'Get OpenAI embeddings' button.") | |
| elif not user_input.strip(): | |
| st.warning("Please enter a valid sentence for similarity calculation.") | |
| else: | |
| top_similar_sentences = get_openai_similarity(user_input, st.session_state.embeddings, top_n=5) | |
| st.write(f'top_similar_sentences: {top_similar_sentences[:1]}') | |
| if top_similar_sentences: | |
| st.write("**Top 5 similar sentences:**") | |
| for i, (sentence, score) in enumerate(top_similar_sentences, 1): | |
| st.write(f"{i}. **Sentence:** {sentence}") | |
| st.write(f" **Similarity score:** {score:.4f}") | |
| else: | |
| st.info("No similar sentences found.") | |
| stop() | |
| # Button to calculate similarity | |
| if st.button("Calculate similarity"): | |
| try: | |
| if st.session_state.embeddings is None: | |
| st.warning("Please load embeddings by clicking the 'Get OpenAI embeddings' button.") | |
| elif not user_input.strip(): | |
| st.warning("Please enter a valid sentence for similarity calculation.") | |
| else: | |
| top_similar_sentences = calculate_openai_similarity(user_input, st.session_state.embeddings, top_n=5) | |
| st.write(f'top_similar_sentences: {top_similar_sentences[:1]}') | |
| if top_similar_sentences: | |
| st.write("**Top 5 similar sentences:**") | |
| for i, (sentence, score) in enumerate(top_similar_sentences, 1): | |
| st.write(f"{i}. **Sentence:** {sentence}") | |
| st.write(f" **Similarity score:** {score:.4f}") | |
| else: | |
| st.info("No similar sentences found.") | |
| except Exception as e: | |
| print(f"An error occurred during similarity calculation: {e}") | |
| st.error(f"An error occurred during similarity calculation: {e}") |