Myranda commited on
Commit
2c9c4d1
1 Parent(s): 587e02a

Merge pull request #162 from vanderbilt-data-science/survey

Browse files
Files changed (2) hide show
  1. app.py +16 -8
  2. requirements.txt +1 -0
app.py CHANGED
@@ -5,10 +5,11 @@ import yaml
5
  from yaml.loader import SafeLoader
6
  import os
7
  from cryptography.fernet import Fernet
8
-
9
  from free_speech_app.DataLoadDb import *
10
  from free_speech_app.FreeSpeechPromptsResponses import *
11
  from langchain.chat_models import ChatOpenAI
 
12
 
13
 
14
  #connect to/create Deta user database
@@ -90,6 +91,16 @@ if authentication_status:
90
  org_principles = str(file.read())
91
 
92
  if page == "Account Setup":
 
 
 
 
 
 
 
 
 
 
93
 
94
  st.title("Account Setup")
95
  st.markdown("Please use this page to provide your OpenAI API Key, Principles and Writing Style. **Please make sure to press the Save Changes button after providing the information.**")
@@ -103,17 +114,14 @@ if authentication_status:
103
  encrypted_api_key = str(encrypt(api_input, fernet))
104
  st.session_state.api_key = api_input
105
 
106
-
107
- user_principles = user_data["principles"] if user_data and "principles" in user_data else ""
108
- user_principles = user_principles + "\n" + org_principles
109
-
110
- principles = st.text_area("My Principles (Paste Principles here. If you affiliated with a registered organization, these principles will also appear here.)", height = 300, placeholder = "Think about the hate speech you want to counter. What makes you want to write back? Note any principles that are true to your heart, from an abstract thought to a well-defined concept. For ideas, consider: a theory, philosophy, law, policy, workplace professional ethic, cultural norm, family value, idiomatic saying, colloquialism, life lesson, habit, intuition, literary or artistic expression, fortune cookie message, etc.", value=user_principles)
111
  writing_style = st.text_area("My Writing Style (Paste Examples)", height = 300, placeholder = "Provide examples of your writing style here", value=user_data["writing_style"] if user_data and "writing_style" in user_data else "")
112
  #sources = st.text_area("Sources (This autopopulates for your reference)", value=st.session_state.sources if 'sources' in st.session_state else '', key = 'sources_key', height = 100)
113
 
114
  # Update button
115
  if st.button("Save Changes"):
116
- db.put({"key": username, "principles": principles, "writing_style": writing_style, "api_key": encrypted_api_key})
117
 
118
  if page == "API Key Help":
119
 
@@ -233,7 +241,7 @@ if authentication_status:
233
  principles = user_data["principles"] if user_data and "principles" in user_data else ""
234
  encrypted_api_key = str(encrypt(st.session_state.api_key, fernet))
235
 
236
- db.put({"key": username, "writing_style": writing_style, "principles": principles,"api_key": encrypted_api_key})
237
  st.write("Response saved to your writing style.")
238
 
239
  # Assessment of the response
 
5
  from yaml.loader import SafeLoader
6
  import os
7
  from cryptography.fernet import Fernet
8
+ import streamlit_survey as ss
9
  from free_speech_app.DataLoadDb import *
10
  from free_speech_app.FreeSpeechPromptsResponses import *
11
  from langchain.chat_models import ChatOpenAI
12
+ import json as json_module
13
 
14
 
15
  #connect to/create Deta user database
 
91
  org_principles = str(file.read())
92
 
93
  if page == "Account Setup":
94
+
95
+ if not user_data or user_data.get('login_count') in [None, 0]:
96
+ survey = ss.StreamlitSurvey("Please answer the following questions to help define your principles")
97
+ survey.text_input("Who would you identify as a hero or exemplar, fictional or real, whose moral courage reflects what you also believe in? Why?", id="Q1")
98
+ survey.text_input("What is an instance of hate that would cross a line for you, making you feel a need to respond?", id="Q2")
99
+ survey.text_input("Given your character, how would you seek to address the harms of hate (i.e., to educate, persuade, deescalate, forgive, repair, etc.)?", id="Q3")
100
+ json_string = survey.to_json()
101
+ json_dict = json_module.loads(json_string)
102
+ survey_responses = json_dict["Q1"]["value"] + " " + json_dict["Q2"]["value"] + " " + json_dict["Q3"]["value"]
103
+
104
 
105
  st.title("Account Setup")
106
  st.markdown("Please use this page to provide your OpenAI API Key, Principles and Writing Style. **Please make sure to press the Save Changes button after providing the information.**")
 
114
  encrypted_api_key = str(encrypt(api_input, fernet))
115
  st.session_state.api_key = api_input
116
 
117
+ principles = st.text_area("My Principles (Enter or autopopulates from questions above)", height = 300, value= user_data["principles"] +"\n" + org_principles if user_data and "principles" in user_data and user_data["principles"].strip() != "" else survey_responses + "\n" + org_principles)
118
+
 
 
 
119
  writing_style = st.text_area("My Writing Style (Paste Examples)", height = 300, placeholder = "Provide examples of your writing style here", value=user_data["writing_style"] if user_data and "writing_style" in user_data else "")
120
  #sources = st.text_area("Sources (This autopopulates for your reference)", value=st.session_state.sources if 'sources' in st.session_state else '', key = 'sources_key', height = 100)
121
 
122
  # Update button
123
  if st.button("Save Changes"):
124
+ db.put({"key": username, "principles": principles, "writing_style": writing_style, "api_key": encrypted_api_key, "login_count": 0 if principles.strip() == "" else 1})
125
 
126
  if page == "API Key Help":
127
 
 
241
  principles = user_data["principles"] if user_data and "principles" in user_data else ""
242
  encrypted_api_key = str(encrypt(st.session_state.api_key, fernet))
243
 
244
+ db.put({"key": username, "writing_style": writing_style, "principles": principles,"api_key": encrypted_api_key, "login_count": 0 if principles.strip() == "" else 1})
245
  st.write("Response saved to your writing style.")
246
 
247
  # Assessment of the response
requirements.txt CHANGED
@@ -10,3 +10,4 @@ chromadb
10
  tiktoken
11
  unstructured
12
  nltk
 
 
10
  tiktoken
11
  unstructured
12
  nltk
13
+ streamlit_survey