Spaces:
Sleeping
Sleeping
| 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 = """ | |
| <style> | |
| html, body { | |
| height: 100%; | |
| } | |
| .main{ | |
| background: green; | |
| } | |
| </style> | |
| """ | |
| 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() |