sentimentAi / app.py
Alejadro Sanchez-Giraldo
add test framework and skin change on flag
4190c8f
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()