brunhild217 commited on
Commit
b721670
Β·
1 Parent(s): 4f9dc3a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -7
app.py CHANGED
@@ -23,7 +23,6 @@ class EchoingTutor(SlightlyDelusionalTutor):
23
  self.conversation_memory = []
24
  self.flattened_conversation = ''
25
 
26
-
27
  ### Chatbot Functions ###
28
  def add_user_message(user_message, chat_tutor):
29
  """Display user message and update chat history to include it."""
@@ -37,6 +36,8 @@ def get_tutor_reply(user_message, chat_tutor):
37
  def get_conversation_history(chat_tutor):
38
  return chat_tutor.conversation_memory, chat_tutor
39
 
 
 
40
  def get_instructor_prompt(fileobj):
41
  file_path = fileobj.name
42
  f = open(file_path, "r")
@@ -47,14 +48,14 @@ def embed_prompt(instructor_prompt):
47
  os.environ["SECRET_PROMPT"] = instructor_prompt
48
  return os.environ.get("SECRET_PROMPT")
49
 
 
 
50
  with gr.Blocks() as demo:
 
51
  #initialize tutor (with state)
52
  study_tutor = gr.State(EchoingTutor())
53
 
54
- # Instead of ask students to provide key, the key is now directly provided by the instructor
55
- api_input = os.environ.get("OPENAI_API_KEY")
56
- embed_key(api_input, study_tutor)
57
-
58
  with gr.Tab("For Students"):
59
  # Chatbot interface
60
  gr.Markdown("""
@@ -94,8 +95,32 @@ with gr.Blocks() as demo:
94
  export_dialogue_button_json.click(save_json, study_tutor, file_download, show_progress=True)
95
  export_dialogue_button_txt.click(save_txt, study_tutor, file_download, show_progress=True)
96
  export_dialogue_button_csv.click(save_csv, study_tutor, file_download, show_progress=True)
97
-
 
98
  with gr.Tab("Instructor Only"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  with gr.Blocks():
100
  # testing purpose, change visible to False at deployment
101
  test_secret = gr.Textbox(label="Current secret prompt", value=os.environ.get("SECRET_PROMPT"), visible=True)
@@ -105,8 +130,11 @@ with gr.Blocks() as demo:
105
  elem_classes="short-height")
106
  instructor_prompt = gr.Textbox(label="Verify your prompt content", visible=True)
107
  file_input.upload(fn=get_instructor_prompt, inputs=file_input, outputs=instructor_prompt)
108
-
 
109
  prompt_submit_btn = gr.Button("Submit")
110
  prompt_submit_btn.click(fn=embed_prompt, inputs=instructor_prompt, outputs=test_secret)
 
 
111
 
112
  demo.queue().launch(server_name='0.0.0.0', server_port=7860)
 
23
  self.conversation_memory = []
24
  self.flattened_conversation = ''
25
 
 
26
  ### Chatbot Functions ###
27
  def add_user_message(user_message, chat_tutor):
28
  """Display user message and update chat history to include it."""
 
36
  def get_conversation_history(chat_tutor):
37
  return chat_tutor.conversation_memory, chat_tutor
38
 
39
+
40
+ ### Instructor Interface Helper Functions ###
41
  def get_instructor_prompt(fileobj):
42
  file_path = fileobj.name
43
  f = open(file_path, "r")
 
48
  os.environ["SECRET_PROMPT"] = instructor_prompt
49
  return os.environ.get("SECRET_PROMPT")
50
 
51
+
52
+ ### User Interfaces ###
53
  with gr.Blocks() as demo:
54
+
55
  #initialize tutor (with state)
56
  study_tutor = gr.State(EchoingTutor())
57
 
58
+ # Student interface
 
 
 
59
  with gr.Tab("For Students"):
60
  # Chatbot interface
61
  gr.Markdown("""
 
95
  export_dialogue_button_json.click(save_json, study_tutor, file_download, show_progress=True)
96
  export_dialogue_button_txt.click(save_txt, study_tutor, file_download, show_progress=True)
97
  export_dialogue_button_csv.click(save_csv, study_tutor, file_download, show_progress=True)
98
+
99
+ # Instructor interface
100
  with gr.Tab("Instructor Only"):
101
+ # API Authentication functionality
102
+ # Instead of ask students to provide key, the key is now provided by the instructor
103
+ with gr.Box():
104
+
105
+ gr.Markdown("### OpenAI API Key ")
106
+ gr.HTML("""<span>Embed your OpenAI API key below; if you haven't created one already, visit
107
+ <a href="https://platform.openai.com/account/api-keys">platform.openai.com/account/api-keys</a>
108
+ to sign up for an account and get your personal API key</span>""",
109
+ elem_classes="textbox_label")
110
+ api_input = gr.Textbox(show_label=False, type="password", container=False, autofocus=True,
111
+ placeholder="●●●●●●●●●●●●●●●●●", value='')
112
+ api_input.submit(fn=embed_key, inputs=[api_input, study_tutor], outputs=study_tutor)
113
+ api_input.blur(fn=embed_key, inputs=[api_input, study_tutor], outputs=study_tutor)
114
+
115
+ """
116
+ Another way to permanently set the key is to directly go to
117
+ Settings -> Variables and secrets -> Secrets
118
+ Then replace OPENAI_API_KEY value with whatever openai key of the instructor.
119
+ """
120
+ # api_input = os.environ.get("OPENAI_API_KEY")
121
+ # embed_key(api_input, study_tutor)
122
+
123
+ # Upload secret prompt functionality
124
  with gr.Blocks():
125
  # testing purpose, change visible to False at deployment
126
  test_secret = gr.Textbox(label="Current secret prompt", value=os.environ.get("SECRET_PROMPT"), visible=True)
 
130
  elem_classes="short-height")
131
  instructor_prompt = gr.Textbox(label="Verify your prompt content", visible=True)
132
  file_input.upload(fn=get_instructor_prompt, inputs=file_input, outputs=instructor_prompt)
133
+
134
+ # Set the secret prompt in this session
135
  prompt_submit_btn = gr.Button("Submit")
136
  prompt_submit_btn.click(fn=embed_prompt, inputs=instructor_prompt, outputs=test_secret)
137
+
138
+ # TODO: may need a way to set the secret prompt permanently in settings/secret
139
 
140
  demo.queue().launch(server_name='0.0.0.0', server_port=7860)