Files changed (1) hide show
  1. app.py +59 -9
app.py CHANGED
@@ -8,18 +8,24 @@ from PIL import Image
8
  from io import BytesIO
9
  import random
10
  import numpy as np
 
 
 
 
 
11
  MODEL = "gpt-3.5-turbo"
12
  API_URL = os.getenv("API_URL")
13
  DISABLED = os.getenv("DISABLED") == 'True'
14
- OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
15
  NUM_THREADS = int(16)
16
  TOTAL_K = 5
17
  SAMPLE_IDX = []
18
- RANDOM_POSITION = [[145 + 200 * i + 400 * (i//2), j * 110 + 900] for i in range(4) for j in range(4) ]
19
  CURRENT_POSITION = []
20
 
21
  print (NUM_THREADS)
22
 
 
23
  def exception_handler(exception_type, exception, traceback):
24
  print("%s: %s" % (exception_type.__name__, exception))
25
  sys.excepthook = exception_handler
@@ -44,6 +50,9 @@ def parse_codeblock(text):
44
  lines[i] = "<br/>" + line.replace("<", "&lt;").replace(">", "&gt;")
45
  return "".join(lines)
46
 
 
 
 
47
  def random_sample():
48
  global SAMPLE_IDX
49
  # SAMPLE_IDX = get_random_sample(range(25), TOTAL_K)
@@ -87,14 +96,50 @@ Assistant: <utterance>
87
  In this app, you can explore the outputs of a gpt-3.5 LLM.
88
  """
89
 
90
- def submit(image, *agents):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  global CURRENT_POSITION
92
  balloon = Image.open(os.path.join(os.path.dirname(__file__), 'data/balloon.png')).resize((64, 64))
93
  new_image = Image.fromarray(image).convert('RGBA')
94
  for k in range(TOTAL_K):
95
  new_image.paste(balloon, [CURRENT_POSITION[k][0], CURRENT_POSITION[k][1] - 64], balloon)
96
 
97
- Answer = 'O'
 
 
 
 
 
98
  new_agents = []
99
  for k in range(TOTAL_K):
100
  new_agents.append(Answer)
@@ -102,6 +147,7 @@ def submit(image, *agents):
102
  return np.array(new_image), *[gr.Textbox.update(value=answer) for answer in new_agents]
103
 
104
  theme = gr.themes.Default(primary_hue="green")
 
105
  agents = []
106
  with gr.Blocks(css = """#col_container { margin-left: auto; margin-right: auto;}
107
  #chatbot {height: 520px; overflow: auto;}""",
@@ -112,6 +158,7 @@ with gr.Blocks(css = """#col_container { margin-left: auto; margin-right: auto;}
112
  #gr.HTML('''<center><a href="https://huggingface.co/spaces/yuntian-deng/ChatGPT?duplicate=true"><img src="https://bit.ly/3gLdBN6" alt="Duplicate Space"></a>Duplicate the Space and run securely with your OpenAI API Key</center>''')
113
  with gr.Column(elem_id = "col_container", visible=False) as main_block:
114
 
 
115
  with gr.Row():
116
  with gr.Column(scale=7):
117
  image = gr.Image(os.path.join(os.path.dirname(__file__), "data/Court.jpeg"), height = 800, width = 1600)
@@ -120,10 +167,13 @@ with gr.Blocks(css = """#col_container { margin-left: auto; margin-right: auto;}
120
  text = gr.Textbox(label=f"Random Sample - {idx+1}")
121
  agents.append(text)
122
 
123
- # chatbot = gr.Chatbot(elem_id='chatbot') #c
124
  with gr.Row():
125
- with gr.Column(scale=7):
126
- inputs = gr.Textbox(placeholder= "Hi there!", label= "Type an input and press Enter") #t
 
 
 
 
127
  with gr.Column(scale=3):
128
  b1 = gr.Button('Submit', visible=not DISABLED)
129
 
@@ -168,9 +218,9 @@ with gr.Blocks(css = """#col_container { margin-left: auto; margin-right: auto;}
168
  accept_checkbox.change(fn=enable_inputs, inputs=[], outputs=[user_consent_block, main_block], queue=False)
169
 
170
  b0.click(random_sample, inputs = [], outputs = [image])
171
- b2.click(reset_sample, inputs = [], outputs = [image, *agents])
172
 
173
- b1.click(submit, inputs = [image, *agents], outputs = [image, *agents])
174
 
175
  # inputs.submit(reset_textbox, [], [inputs, b1], queue=False)
176
  # inputs.submit(predict, [inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter, server_status_code, inputs, b1],) #openai_api_key
 
8
  from io import BytesIO
9
  import random
10
  import numpy as np
11
+
12
+ from thinkgpt.llm import ThinkGPT
13
+ # from transformers import AutoModelForCausalLM, AutoTokenizer
14
+
15
+
16
  MODEL = "gpt-3.5-turbo"
17
  API_URL = os.getenv("API_URL")
18
  DISABLED = os.getenv("DISABLED") == 'True'
19
+
20
  NUM_THREADS = int(16)
21
  TOTAL_K = 5
22
  SAMPLE_IDX = []
23
+ RANDOM_POSITION = [(145 + 200 * i + 400 * (i//2), j * 110 + 900) for i in range(4) for j in range(4) ]
24
  CURRENT_POSITION = []
25
 
26
  print (NUM_THREADS)
27
 
28
+
29
  def exception_handler(exception_type, exception, traceback):
30
  print("%s: %s" % (exception_type.__name__, exception))
31
  sys.excepthook = exception_handler
 
50
  lines[i] = "<br/>" + line.replace("<", "&lt;").replace(">", "&gt;")
51
  return "".join(lines)
52
 
53
+ def reset_textbox():
54
+ return gr.update(value='', interactive=False), gr.update(interactive=False)
55
+
56
  def random_sample():
57
  global SAMPLE_IDX
58
  # SAMPLE_IDX = get_random_sample(range(25), TOTAL_K)
 
96
  In this app, you can explore the outputs of a gpt-3.5 LLM.
97
  """
98
 
99
+
100
+ memorize_list = ['국민참여재판에 참여한 사람은 몇 개월의 징역을 선고하는게 좋은지 말해야 한다.',
101
+ "'너는 몇살이야?' 라고 '철수'에게 물어봤을 때, '철수'는 '나의 나이는 23살이야'라고 대답함",
102
+ "'너는 남자야?' 라고 '철수'에게 물어봤을 때, '철수'는 '응 나의 성별은 남자야'라고 대답함",
103
+ "'월욜날 면접임 월욜날 면접임' 라고 '철수'에게 물어봤을 때, '철수'는 ' 면접은 언제'라고 대답함",
104
+ "'오 나도 통햇네' 라고 '철수'에게 물어봤을 때, '철수'는 ' 헐그케 빨리?대박이네자기소개 같은거 유튜브에 찾아바괜찮은거 많을걸'라고 대답함",
105
+ "'이렇게 해도 야근할거 같아.....ㅎ 이렇게 해도 야근할거 같아.....ㅎ' 라고 '철수'에게 물어봤을 때, '철수'는 ' ㅜㅜ진짜 할거많은가보다오늘 행사준비까지 갔으면 큰일 날뻔했는데...'라고 대답함",
106
+ "'행사준비.......ㅎ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 그럼 내일도 안가?아니면 내일은가...?'라고 대답함",
107
+ "'내일은 가야돼 허허허' 라고 '철수'에게 물어봤을 때, '철수'는 ' ㅜㅜ앙대'라고 대답함",
108
+ "'근데 근데 주휴수당이 유급휴가를 준다는말이잖아 뭔지 잘 이해안돼...' 라고 '철수'에게 물어봤을 때, '철수'는 ' 한번찾아볼께에'라고 대답함",
109
+ "'웅ㅠㅠ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 쉬든안쉬든주당 15시간 이상근무한사람은무조건 주휴수당을 주어야하나봥이거 참고해볼래용~?'라고 대답함",
110
+ "'근데 2주는 쉬는날이없는데 뭔가 이상해..흠' 라고 '철수'에게 물어봤을 때, '철수'는 ' 계정주5일이상 15시간이상근로자에게무조건 지급하는건가봐아니구나 근로계약상 제시한 근무날짜만기, 총근로시간 / 4주 평균 15시간 이상 근로 가 조건인가??'라고 대답함",
111
+ "'근데 휴가 끝나야 현장 시작할 듯 근데 휴가 끝나야 현장 시작할 듯 휴가 못 바꿈. 지시 내려왔으 8월1일~10일 ㅋ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 헐'라고 대답함",
112
+ "'1~9이군.' 라고 '철수'에게 물어봤을 때, '철수'는 ' 헐헐휴가 못바꾸면 어째??'라고 대답함",
113
+ "'이름야 나 낼 자젼거 못탈듯!!! 이름야 나 낼 자젼거 못탈듯!!! 이번주에 면접이 좌좌좌작 생겻어!!!!' 라고 '철수'에게 물어봤을 때, '철수'는 ' 헐키아라써'라고 대답함",
114
+ "'웅웅 미안쓰!!!ㅠㅠ' 라고 '철수'에게 물어봤을 때, '철수'는 ' ㅋㅋㅋㅋㅋ 괜차나'라고 대답함",
115
+ "'오늘도 면접 뛰엇써' 라고 '철수'에게 물어봤을 때, '철수'는 ' 고생했다 ㅠㅠ'라고 대답함",
116
+ "'저귀여!!!! 저귀여!!!! 저 오늘 사무실 혼자거뎡여!!!' 라고 '철수'에게 물어봤을 때, '철수'는 ' 오오ㅓ 대박최곤데???'라고 대답함",
117
+ "'녜에에에 아주 혼자 파티파티할지경임다!!' 라고 '철수'에게 물어봤을 때, '철수'는 ' 너한테 놀러가고싶음심정ㅋㅋㅋㅋㅋㅋㅋㅋㅋ급한거 말고 최대한 일 내일로 미뤄혼자일때 일하는거 아녀 ㅎ'라고 대답함",
118
+ "'이제 빨리자고 빨리일러나는 연습해야잼... 이제 빨리자고 빨리일러나는 연습해야잼... 8시 출근..ㅠㅠ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 헐 8시출근!?ㅠㅜㅜㅜ겁내 일찍충근이네ㅠ'라고 대답함",
119
+ "'오픈 8시^^... 그래두 ㅁㅏ감은 5시 출근!!!ㅋㅋㅋㅋㅋㅋㅋㅋ 오픈부터 가르칠건가바..' 라고 '철수'에게 물어봤을 때, '철수'는 ' 오오옹오픈하면 몇시에마쳐!?'라고 대답함",
120
+ "'월급이 들어왓어여 월급이 들어왓어여 이번달부터 십마넌이 올랏네여..조금 올랏네.ㅎㅎ,,, 세금 빠지는건 똑같아서 다행..' 라고 '철수'에게 물어봤을 때, '철수'는 ' 잘했다'라고 대답함",
121
+ "'십이 뭐야십이 이따 점심시간에 돈보낼겡' 라고 '철수'에게 물어봤을 때, '철수'는 ' 응'라고 대답함",
122
+ "'일을 너무 일찍끝내지말고 일을 너무 일찍끝내지말고 천천히해봐요ㅠ 일찍 끝내면 자꾸 다른일이 들어와..' 라고 '철수'에게 물어봤을 때, '철수'는 ' 응.. 난 빨리끝내놓고 빨리 쉴라고하는건데쉬면 자꾸 일이 들어오더라ㅋㅋㅋ요령있게 해야되는데 빨리빨리 성격상 안돼ㅠ'라고 대답함",
123
+ "'오빠도 그런스타일인데 일겁나많이줘ㅠㅠㅠㅠ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 우리 정말 호구아니야?ㅋㅋㅋㅋ일은 우리가 다한대잖아 차장님이..'라고 대답함",
124
+ "'그러면 8월 말 - 9월 초에 직접 가야한다는거임 ?? 그러면 8월 말 - 9월 초에 직접 가야한다는거임 ?? 죤나 이 디지털 시대에 무슨 ㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답다바게 일하네 증말' 라고 '철수'에게 물어봤을 때, '철수'는 ' 그걸몰라그니까국가직은 갱 인터넷등록인데이름가 저번엔 직접등록이엇대월욜날 전화해서 물어볼게'라고 대답함",
125
+ "'ㅇㅋㄷㅋ' 라고 '철수'에게 물어봤을 때, '철수'는 ' 아냐아냐동기들한테두물어봣대'라고 대답함",
126
+ "'원장님이 원장님이 올려준 청년채움 못받을거같은데 오년못채워;;' 라고 '철수'에게 물어봤을 때, '철수'는 ' ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ'라고 대답함",
127
+ "'오랬지내가!여기루!' 라고 '철수'에게 물어봤을 때, '철수'는 ' ㅋㅋㅋㅋㅋ조아'라고 대답함"]
128
+
129
+
130
+ def submit(openai_api_key, question, image, *agents):
131
  global CURRENT_POSITION
132
  balloon = Image.open(os.path.join(os.path.dirname(__file__), 'data/balloon.png')).resize((64, 64))
133
  new_image = Image.fromarray(image).convert('RGBA')
134
  for k in range(TOTAL_K):
135
  new_image.paste(balloon, [CURRENT_POSITION[k][0], CURRENT_POSITION[k][1] - 64], balloon)
136
 
137
+ # Answer
138
+ os.environ['OPENAI_API_KEY'] = openai_api_key
139
+
140
+ llm = ThinkGPT(model_name="gpt-3.5-turbo")
141
+ Answer = llm.predict(question, remember=llm.remember('철수', limit = 30))
142
+
143
  new_agents = []
144
  for k in range(TOTAL_K):
145
  new_agents.append(Answer)
 
147
  return np.array(new_image), *[gr.Textbox.update(value=answer) for answer in new_agents]
148
 
149
  theme = gr.themes.Default(primary_hue="green")
150
+
151
  agents = []
152
  with gr.Blocks(css = """#col_container { margin-left: auto; margin-right: auto;}
153
  #chatbot {height: 520px; overflow: auto;}""",
 
158
  #gr.HTML('''<center><a href="https://huggingface.co/spaces/yuntian-deng/ChatGPT?duplicate=true"><img src="https://bit.ly/3gLdBN6" alt="Duplicate Space"></a>Duplicate the Space and run securely with your OpenAI API Key</center>''')
159
  with gr.Column(elem_id = "col_container", visible=False) as main_block:
160
 
161
+
162
  with gr.Row():
163
  with gr.Column(scale=7):
164
  image = gr.Image(os.path.join(os.path.dirname(__file__), "data/Court.jpeg"), height = 800, width = 1600)
 
167
  text = gr.Textbox(label=f"Random Sample - {idx+1}")
168
  agents.append(text)
169
 
 
170
  with gr.Row():
171
+ with gr.Column(scale=3):
172
+ openai_api_key = gr.Textbox(placeholder= "sk-", label= "Type an openai api key")
173
+
174
+ with gr.Column(scale=4):
175
+ question = gr.Textbox(placeholder= "Hi there!", label= "Type an input and press Enter") #t
176
+
177
  with gr.Column(scale=3):
178
  b1 = gr.Button('Submit', visible=not DISABLED)
179
 
 
218
  accept_checkbox.change(fn=enable_inputs, inputs=[], outputs=[user_consent_block, main_block], queue=False)
219
 
220
  b0.click(random_sample, inputs = [], outputs = [image])
221
+ b2.click(reset_sample, inputs = [], outputs = [image])
222
 
223
+ b1.click(submit, inputs = [openai_api_key, question, image, *agents], outputs = [image, *agents])
224
 
225
  # inputs.submit(reset_textbox, [], [inputs, b1], queue=False)
226
  # inputs.submit(predict, [inputs, top_p, temperature, chat_counter, chatbot, state], [chatbot, state, chat_counter, server_status_code, inputs, b1],) #openai_api_key