TTsamurai commited on
Commit
fc80039
·
1 Parent(s): 5180b54

update for testing

Browse files
Files changed (2) hide show
  1. .gitignore +1 -1
  2. app.py +26 -33
.gitignore CHANGED
@@ -1,5 +1,5 @@
1
  log/
2
-
3
  # Byte-compiled / optimized / DLL files
4
  __pycache__/
5
  *.py[cod]
 
1
  log/
2
+ user_feedback/
3
  # Byte-compiled / optimized / DLL files
4
  __pycache__/
5
  *.py[cod]
app.py CHANGED
@@ -4,7 +4,8 @@ from datetime import datetime
4
  import json
5
  import uuid
6
  from pathlib import Path
7
- from huggingface_hub import CommitScheduler
 
8
  import gradio as gr
9
  import markdown
10
  from together import Together
@@ -94,6 +95,7 @@ def save_feedback(user_id: str, uuid: str, type: str, value, feedback_file) -> N
94
 
95
  # Load the required static content from files
96
  def load_static_content(file_path):
 
97
  with open(file_path, "r") as f:
98
  return f.read()
99
 
@@ -121,13 +123,29 @@ PERSONALITY_INT = load_static_content(PERSONALITY_INT_FILE)
121
  # Other constants
122
  FIRST_MESSAGE = "Hey"
123
  USER_PREFERENCE_SUMMARY = True
124
- DEBUG = True
125
  API_TYPE = "together"
126
  assert API_TYPE in ["together", "local", "debug"], "The API should be either 'together' or 'local'"
127
  if API_TYPE == "together":
128
  TOGETHER_CLIENT = Together(api_key=os.getenv("TOGETHER_API_KEY"))
129
 
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  def get_context_list(synthetic_data_path):
132
  # Load data from the synthetic data file
133
  with open(synthetic_data_path, "r") as f:
@@ -233,7 +251,6 @@ def log_action(user_id, tab_name, action, details):
233
  if os.path.exists(log_file_dir) is False:
234
  os.makedirs(log_file_dir)
235
  log_file = os.path.join(log_file_dir, f"{tab_name}.txt")
236
- print(log_file)
237
  with open(log_file, "a") as f:
238
  f.write(f"Action: {action} | Details: {details}\n")
239
 
@@ -242,8 +259,8 @@ def add_user_profile_to_system_instruction(
242
  user_id, system_instruction, user_preference_elicitation_data, summary, terminator
243
  ):
244
  exp_id = int(user_id.split("_")[-3])
245
- # exp_id = 2 => No personalization
246
- if exp_id == 2:
247
  print("Non-personalizationかチェック:" + system_instruction)
248
  return system_instruction
249
  if summary:
@@ -268,7 +285,6 @@ def add_user_profile_to_system_instruction(
268
  {"summarization": summ},
269
  feedback_file_summarization,
270
  )
271
- # print(f"Preference Summary:{summ}")
272
  system_instruction += f"\nUser Profile collected in the previous conversations: {user_preference_elicitation_data['summary_history']}\n"
273
  else:
274
  system_instruction += (
@@ -415,7 +431,7 @@ def create_demo():
415
  providing_information = likert_evaluation("The advisor provides the financial knowledge needed")
416
  with gr.Row():
417
  textbox = gr.HTML()
418
- submit_ranking = gr.Button(value="Submit Ranking")
419
  return {
420
  "first": ranking_first_comp,
421
  "second": ranking_second_comp,
@@ -722,8 +738,6 @@ def create_demo():
722
  summary=USER_PREFERENCE_SUMMARY,
723
  terminator=terminator,
724
  )
725
- # Formatting Input
726
- print(f"User Message: {message} in Tab: {tab_name}")
727
  # From string to list [{"role":"user", "content": message}, ...]
728
  history = gradio_to_huggingface_message(history)
729
  # We can implement context window here as we need all the system interaction. We can cut some of the early interactions if needed.
@@ -742,8 +756,6 @@ def create_demo():
742
  # exclude system interaction and store the others in the history
743
  history = huggingface_to_gradio_message(history)
744
  if tab_name is not None:
745
- print(f"Tab: {tab_name}\nSystem Output: {outputs_text}")
746
-
747
  # Log the user message and response
748
  save_feedback(
749
  user_id,
@@ -764,7 +776,6 @@ def create_demo():
764
  # Store the updated history for this tab
765
  tab_data["history"] = history
766
  if user_elicitation:
767
- print(f"User Elicitation\nSystem Output: {outputs_text}")
768
  save_feedback(
769
  user_id,
770
  uuid_this_session,
@@ -802,8 +813,6 @@ def create_demo():
802
  if system_description_without_context is not None and system_instruction_context is not None:
803
  system_instruction = system_description_without_context + "\n" + system_instruction_context
804
  if not user_elicitation:
805
- print(f"User Preference Elicitation Data: {user_preference_elicitation_data}")
806
- print(f"Tab data: {tab_data}")
807
  system_instruction = add_user_profile_to_system_instruction(
808
  user_id,
809
  system_instruction,
@@ -829,7 +838,6 @@ def create_demo():
829
  # Format
830
  history = huggingface_to_gradio_message(history)
831
  if tab_name is not None:
832
- print(f"Tab: {tab_name}\nHistory: {history}")
833
  # Log the user message and response
834
  save_feedback(
835
  user_id,
@@ -850,7 +858,6 @@ def create_demo():
850
  # Store the updated history for this tab
851
  tab_data["history"] = history
852
  if user_elicitation:
853
- print(f"User Elicitation\nHistory: {history}")
854
  save_feedback(
855
  user_id,
856
  uuid_this_session,
@@ -930,13 +937,10 @@ def create_demo():
930
  {"type": tab_name, "role": "assistant", "content": outputs_text},
931
  feedback_file_interaction,
932
  )
933
- # log_action(user_id, tab_name, "Show More of the Advisor’s Answer", "User continued the conversation")
934
- # log_action(user_id, tab_name, "Response", outputs_text)
935
 
936
  # Update history for this tab
937
  tab_data["history"] = history
938
  if user_elicitation:
939
- print(f"User Elicitation\nSystem Output: {outputs_text}")
940
  save_feedback(
941
  user_id,
942
  uuid_this_session,
@@ -957,7 +961,6 @@ def create_demo():
957
  def respond_evaluation(user_id, tab_data, evals, tab_name, evaluation_send_button, textbox):
958
 
959
  # dropdown, readon_button, multi-evaluator
960
- print(f"Tab: {tab_name}\nEvaluation: {evals}")
961
  if evals["likelihood"] is None or evals["confidence"] is None or evals["familiarity"] is None:
962
  return (
963
  tab_data,
@@ -1093,7 +1096,6 @@ def create_demo():
1093
  user_in_narrative_id = user_id.split("_")[-1]
1094
  narrative_id = user_id.split("_")[-2]
1095
  experiment_id = user_id.split("_")[-3]
1096
- print(f"User ID: {user_id}, User in Narrative ID: {user_in_narrative_id}, Narrative ID: {narrative_id}")
1097
  return user_id, user_in_narrative_id, narrative_id, experiment_id
1098
 
1099
  def get_inst_without_context(experiment_id):
@@ -1113,8 +1115,6 @@ def create_demo():
1113
  def get_stock_related_context(narrative_id, user_in_narrative_id):
1114
  raw_context_list = build_raw_context_list(context_info_list[int(narrative_id)])
1115
  stock_context_list = build_context(context_info_list[int(narrative_id)])
1116
- print("Raw Context List: ", len(raw_context_list))
1117
- print("Stock Context List: ", len(stock_context_list))
1118
  raw_context_list = reorder_list_based_on_user_in_narrative_id(user_in_narrative_id, raw_context_list)
1119
  stock_context_list = reorder_list_based_on_user_in_narrative_id(user_in_narrative_id, stock_context_list)
1120
  return raw_context_list, stock_context_list
@@ -1124,8 +1124,6 @@ def create_demo():
1124
  user_id, user_in_narrative_id, narrative_id, experiment_id = set_user_id(request)
1125
  # System instruction without prompt
1126
  system_description_without_context = get_inst_without_context(experiment_id)
1127
- print(f"Experiment ID: {experiment_id}")
1128
- print(f"System Description: {system_description_without_context}")
1129
  # Stock related context
1130
  raw_context_list, stock_context_list = get_stock_related_context(narrative_id, user_in_narrative_id)
1131
  # User Narrative
@@ -1353,13 +1351,8 @@ if __name__ == "__main__":
1353
  # Global variables
1354
  terminator = ["<eos>", "<unk>", "<sep>", "<pad>", "<cls>", "<mask>"]
1355
  demo = create_demo()
1356
- demo_user_pwd_list = [(f"demo_{i}_{j}_1", f"demo_{i}_{j}_1") for i in range(1, 5) for j in range(1, 4)]
1357
  demo.launch(
1358
- share=True,
1359
- auth=demo_user_pwd_list
1360
- + [
1361
- ("user_1_1_1", "pw1"),
1362
- ("user_2_1_1", "pw2"),
1363
- ("user_3_1_1", "pw3"),
1364
- ],
1365
  )
 
4
  import json
5
  import uuid
6
  from pathlib import Path
7
+ from huggingface_hub import CommitScheduler, login
8
+ from datasets import load_dataset
9
  import gradio as gr
10
  import markdown
11
  from together import Together
 
95
 
96
  # Load the required static content from files
97
  def load_static_content(file_path):
98
+
99
  with open(file_path, "r") as f:
100
  return f.read()
101
 
 
123
  # Other constants
124
  FIRST_MESSAGE = "Hey"
125
  USER_PREFERENCE_SUMMARY = True
126
+ DEBUG = False
127
  API_TYPE = "together"
128
  assert API_TYPE in ["together", "local", "debug"], "The API should be either 'together' or 'local'"
129
  if API_TYPE == "together":
130
  TOGETHER_CLIENT = Together(api_key=os.getenv("TOGETHER_API_KEY"))
131
 
132
 
133
+ def generate_username_pwd_list(data):
134
+ user_list = []
135
+ demo_list = []
136
+ for index, row in data.iterrows():
137
+ user_list.append((row["user"], str(row["pwd"])))
138
+ demo_list.append((row["demo"], str(row["pwd"])))
139
+ return user_list, demo_list
140
+
141
+
142
+ def load_username_and_pwd():
143
+ dataset = load_dataset(os.getenv("USER_PWD_FILE"))
144
+ df = dataset["train"].to_pandas()
145
+ user_list, demo_list = generate_username_pwd_list(df)
146
+ return user_list, demo_list
147
+
148
+
149
  def get_context_list(synthetic_data_path):
150
  # Load data from the synthetic data file
151
  with open(synthetic_data_path, "r") as f:
 
251
  if os.path.exists(log_file_dir) is False:
252
  os.makedirs(log_file_dir)
253
  log_file = os.path.join(log_file_dir, f"{tab_name}.txt")
 
254
  with open(log_file, "a") as f:
255
  f.write(f"Action: {action} | Details: {details}\n")
256
 
 
259
  user_id, system_instruction, user_preference_elicitation_data, summary, terminator
260
  ):
261
  exp_id = int(user_id.split("_")[-3])
262
+ # exp_id = 1 => No personalization
263
+ if exp_id == 1:
264
  print("Non-personalizationかチェック:" + system_instruction)
265
  return system_instruction
266
  if summary:
 
285
  {"summarization": summ},
286
  feedback_file_summarization,
287
  )
 
288
  system_instruction += f"\nUser Profile collected in the previous conversations: {user_preference_elicitation_data['summary_history']}\n"
289
  else:
290
  system_instruction += (
 
431
  providing_information = likert_evaluation("The advisor provides the financial knowledge needed")
432
  with gr.Row():
433
  textbox = gr.HTML()
434
+ submit_ranking = gr.Button(value="Submit Final Evaluation")
435
  return {
436
  "first": ranking_first_comp,
437
  "second": ranking_second_comp,
 
738
  summary=USER_PREFERENCE_SUMMARY,
739
  terminator=terminator,
740
  )
 
 
741
  # From string to list [{"role":"user", "content": message}, ...]
742
  history = gradio_to_huggingface_message(history)
743
  # We can implement context window here as we need all the system interaction. We can cut some of the early interactions if needed.
 
756
  # exclude system interaction and store the others in the history
757
  history = huggingface_to_gradio_message(history)
758
  if tab_name is not None:
 
 
759
  # Log the user message and response
760
  save_feedback(
761
  user_id,
 
776
  # Store the updated history for this tab
777
  tab_data["history"] = history
778
  if user_elicitation:
 
779
  save_feedback(
780
  user_id,
781
  uuid_this_session,
 
813
  if system_description_without_context is not None and system_instruction_context is not None:
814
  system_instruction = system_description_without_context + "\n" + system_instruction_context
815
  if not user_elicitation:
 
 
816
  system_instruction = add_user_profile_to_system_instruction(
817
  user_id,
818
  system_instruction,
 
838
  # Format
839
  history = huggingface_to_gradio_message(history)
840
  if tab_name is not None:
 
841
  # Log the user message and response
842
  save_feedback(
843
  user_id,
 
858
  # Store the updated history for this tab
859
  tab_data["history"] = history
860
  if user_elicitation:
 
861
  save_feedback(
862
  user_id,
863
  uuid_this_session,
 
937
  {"type": tab_name, "role": "assistant", "content": outputs_text},
938
  feedback_file_interaction,
939
  )
 
 
940
 
941
  # Update history for this tab
942
  tab_data["history"] = history
943
  if user_elicitation:
 
944
  save_feedback(
945
  user_id,
946
  uuid_this_session,
 
961
  def respond_evaluation(user_id, tab_data, evals, tab_name, evaluation_send_button, textbox):
962
 
963
  # dropdown, readon_button, multi-evaluator
 
964
  if evals["likelihood"] is None or evals["confidence"] is None or evals["familiarity"] is None:
965
  return (
966
  tab_data,
 
1096
  user_in_narrative_id = user_id.split("_")[-1]
1097
  narrative_id = user_id.split("_")[-2]
1098
  experiment_id = user_id.split("_")[-3]
 
1099
  return user_id, user_in_narrative_id, narrative_id, experiment_id
1100
 
1101
  def get_inst_without_context(experiment_id):
 
1115
  def get_stock_related_context(narrative_id, user_in_narrative_id):
1116
  raw_context_list = build_raw_context_list(context_info_list[int(narrative_id)])
1117
  stock_context_list = build_context(context_info_list[int(narrative_id)])
 
 
1118
  raw_context_list = reorder_list_based_on_user_in_narrative_id(user_in_narrative_id, raw_context_list)
1119
  stock_context_list = reorder_list_based_on_user_in_narrative_id(user_in_narrative_id, stock_context_list)
1120
  return raw_context_list, stock_context_list
 
1124
  user_id, user_in_narrative_id, narrative_id, experiment_id = set_user_id(request)
1125
  # System instruction without prompt
1126
  system_description_without_context = get_inst_without_context(experiment_id)
 
 
1127
  # Stock related context
1128
  raw_context_list, stock_context_list = get_stock_related_context(narrative_id, user_in_narrative_id)
1129
  # User Narrative
 
1351
  # Global variables
1352
  terminator = ["<eos>", "<unk>", "<sep>", "<pad>", "<cls>", "<mask>"]
1353
  demo = create_demo()
1354
+ user_list, demo_list = load_username_and_pwd()
1355
  demo.launch(
1356
+ share=False,
1357
+ auth=user_list + demo_list,
 
 
 
 
 
1358
  )