Spaces:
Runtime error
Runtime error
File size: 3,403 Bytes
8a3759d 7c6aa59 ac000e9 7c6aa59 033c928 7c6aa59 d4f0069 033c928 b80550c 833008d 7c6aa59 d4f0069 833008d d4f0069 a4db61c 7c6aa59 a4db61c 7c6aa59 033c928 7c6aa59 167d317 833008d 167d317 7c6aa59 167d317 ac000e9 167d317 ac000e9 167d317 833008d 167d317 033c928 833008d b80550c 7c6aa59 b80550c 833008d b80550c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import streamlit as st
import requests
import json
import time
st.title("Transaction Summarizer")
# Input for selecting model
model_selection = st.radio("Select model to use:", ["Gemma", "Tinyllama"])
# Input for submitting new transactions
new_transactions_input = st.text_area("Enter your transactions (comma-separated)", key="input_area")
submit_button = st.button("Submit New Transactions", key="submit_button")
if submit_button:
# Split transactions and strip whitespace
new_transactions = [i.strip() for i in new_transactions_input.split(',') if i.strip()]
else:
new_transactions = []
# Determine URL based on model selection
if model_selection == "Gemma":
base_url = "https://api.runpod.ai/v2/cdvoxheesm31dc/"
elif model_selection == "Tinyllama":
base_url = "https://api.runpod.ai/v2/0wnm75vx5o77s1/"
# Processing flag
processing = False
# When submit button is clicked and there are transactions to process
if submit_button and new_transactions:
url = base_url + "run"
# Retrieve API key from Streamlit secrets
api_key = st.secrets["api_key"]
headers = {
'Content-Type': 'application/json',
'Authorization': api_key
}
data = {
'input': {
'transaction': new_transactions
}
}
json_data = json.dumps(data)
# Show a spinner while waiting for the response
with st.spinner("Processing..."):
try:
processing = True
# Send POST request to start processing
response = requests.post(url, headers=headers, data=json_data)
response.raise_for_status() # Raise an error for bad status codes
# Parse response to get job ID
result = response.json()
job_id = result['id']
st.write(f"New Job ID: {job_id}")
# Keep checking status until it's no longer 'IN_QUEUE'
status_url = f"{base_url}status/{job_id}"
status = "IN_QUEUE"
while status != "COMPLETED":
status_response = requests.get(status_url, headers=headers)
status_data = status_response.json()
status = status_data.get('status', '')
time.sleep(2) # Adjust interval as needed
# Once status changes, display final status
st.write("Final status:", status_data)
except requests.exceptions.RequestException as e:
st.error(f"An error occurred: {e}")
finally:
processing = False
st.spinner(False) # Turn off the spinner after response is received
# Disable input elements while processing
if processing:
st.text_area("Enter your transactions (comma-separated)", value=new_transactions_input, key="disabled_area", disabled=True)
st.radio("Select model to use:", ["Gemma", "Tinyllama"], index=0, key="disabled_radio", disabled=True)
st.button("Submit New Transactions", disabled=True, key="disabled_button")
else:
st.text_area("Enter your transactions (comma-separated)", value=new_transactions_input, key="enabled_area")
st.radio("Select model to use:", ["Gemma", "Tinyllama"], index=0, key="enabled_radio")
st.button("Submit New Transactions", key="enabled_button")
if st.button("Reset", key="reset_button"):
st.text_area("Enter your transactions (comma-separated)", value="", key="reset_area")
|