| import streamlit as st |
| import pandas as pd |
| import logging |
| from deeploy import Client |
| from utils import ChangeButtonColour |
| from utils import get_input_values, get_texts, feature_texts, example_input, response, first_five_posneg_indices |
|
|
| logging.basicConfig(level=logging.INFO) |
|
|
| st.set_page_config(layout="wide") |
|
|
| st.title("Observing potential fraudulent transactions") |
| st.divider() |
|
|
| st.write( |
| "Fill in left hand side and click on button to observe a potential fraudulent transaction" |
| ) |
|
|
| def send_evaluation(client, deployment_id, request_log_id, prediction_log_id, evaluation_input): |
| """Send evaluation to Deeploy.""" |
| try: |
| with st.spinner("Submitting response..."): |
| |
| client.evaluate(deployment_id, request_log_id, prediction_log_id, evaluation_input) |
| return True |
| except Exception as e: |
| logging.error(e) |
| st.error( |
| "Failed to submit feedback." |
| + "Check whether you are using the right model URL and Token. " |
| + "Contact Deeploy if the problem persists." |
| ) |
| st.write(f"Error message: {e}") |
|
|
|
|
| def get_model_url(): |
| """Get model url and retrieve workspace id and deployment id from it""" |
| model_url = st.text_area( |
| "Model URL (default is the demo deployment)", |
| "https://api.app.deeploy.ml/workspaces/708b5808-27af-461a-8ee5-80add68384c7/deployments/1785f8b8-c5a6-4f55-9a83-df8bdb0b9977/", |
| height=125, |
| ) |
| elems = model_url.split("/") |
| try: |
| workspace_id = elems[4] |
| deployment_id = elems[6] |
| except IndexError: |
| workspace_id = "" |
| deployment_id = "" |
| return model_url, workspace_id, deployment_id |
|
|
| st.markdown(""" |
| <style> |
| [data-testid=stSidebar] { |
| background-color: #E0E0E0; ##E5E6EA |
| } |
| </style> |
| """, unsafe_allow_html=True) |
|
|
| with st.sidebar: |
| |
| st.image("deeploy_logo.png", width=270) |
| |
| host = st.text_input("Host (changing is optional)", "app.deeploy.ml") |
| model_url, workspace_id, deployment_id = get_model_url() |
| deployment_token = st.text_input("Deeploy Model Token", "my-secret-token") |
| if deployment_token == "my-secret-token": |
| button_clicked = st.button("Get suspicious transaction", key="get1", help="Click to get a suspicious transaction", use_container_width=True, on_click=lambda: st.experimental_rerun()) |
|
|
| |
| client_options = { |
| "host": host, |
| "deployment_token": deployment_token, |
| "workspace_id": workspace_id, |
| } |
| client = Client(**client_options) |
|
|
|
|
| ChangeButtonColour("Get suspicious transaction", '#FFFFFF', "#00052D") |
|
|
|
|
| positive_and_negative_indices = first_five_posneg_indices(response) |
| positive_texts, negative_texts = get_texts(positive_and_negative_indices, feature_texts) |
| positive_vals, negative_vals = get_input_values(positive_and_negative_indices, example_input) |
|
|
| |
| def create_table(texts, values, title): |
| |
| |
| |
| |
| |
| |
| |
| |
| df = pd.DataFrame({"Feature Explanation": texts, 'Value': values}) |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| st.markdown(f'#### {title}') |
| st.dataframe(df, hide_index=True) |
| |
|
|
| |
| col1, col2 = st.columns(2,gap="small") |
|
|
| |
| with col1: |
| create_table(positive_texts, positive_vals, 'Important Suspicious Variables') |
|
|
| with col2: |
| create_table(negative_texts, negative_vals, 'Important Unsuspicious Variables') |
|
|
|
|