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() |