import streamlit as st from transformers import pipeline from ldclient import LDClient, Config, Context import os style = False # Retrieve the LaunchDarkly SDK key from environment variables ld_sdk_key = os.getenv("LAUNCHDARKLY_SDK_KEY") # Initialize LaunchDarkly client with the correct configuration ld_client = LDClient(Config(ld_sdk_key)) # Function to get the AI model configuration from LaunchDarkly def get_model_config(user_name): flag_key = "model-swap" # Replace with your flag key # Create a context using Context Builder—it can be anything, but for this use case, I’m just defaulting to myself. context = Context.builder(f"context-key-{user_name}").name(user_name).build() flag_variation = ld_client.variation(flag_key, context, default={}) model_id = flag_variation.get("modelID", "distilbert-base-uncased") return model_id # Function to get Style from LaunchDarkly def get_style_config(): flag_key = "style" style_context = Context.builder("context-key-style").build() flag_variation = ld_client.variation(flag_key, style_context,default=False) return flag_variation # Function to translate sentiment labels to user-friendly terms def translate_label(label): label_mapping = { "LABEL_0": "🤬 Negative", "LABEL_1": "😶 Neutral", "LABEL_2": "😃 Positive", "1 star": "🤬 Negative", "2 stars": "🤬 Negative", "3 stars": "😶 Neutral", "4 stars": "😃 Positive", "5 stars": "😃 Positive" } return label_mapping.get(label, "Unknown") style = get_style_config() # popup with the styel value st.write(f"Style: {style}") if style: custom_css = """ """ st.markdown(custom_css, unsafe_allow_html=True) else: cust_css = "" # Streamlit app st.title("Sentiment Analysis Demo with AI Model Flags") user_input = st.text_area("Enter text for sentiment analysis:") # Add an input box for the user to enter their name name = st.text_input("Enter your name", "AJ") # if no name is anter add anonymous if not name: name = "Anonymous" if st.button("Analyze"): model_id = get_model_config(name) model = pipeline("sentiment-analysis", model=model_id) # Display model details st.write(f"Using model: {model_id}") # Perform sentiment analysis results = model(user_input) st.write("Results:") # Translate and display the results for result in results: label = translate_label(result['label']) score = result['score'] st.write(f"Sentiment: {label}, Confidence: {score:.2f}") # Closing the LD client ld_client.close()