arslan-ahmed commited on
Commit
d8f4e8d
1 Parent(s): 16e4fc4
app.py CHANGED
@@ -70,17 +70,17 @@ def initializeChatbot(temp, k, modelName, stdlQs, api_key_st, vsDict_st, progres
70
  print('Chatbot initialized at ', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
71
 
72
  return qa_chain_st, btn.update(interactive=True), initChatbot_btn.update('Chatbot ready. Now visit the chatbot Tab.', interactive=False)\
73
- , aKey_tb.update(), gr.Tabs.update(selected='cb'), chatbot.update(value=[('', welMsg)])
74
 
75
 
76
- def setApiKey(api_key):
77
  api_key = transformApi(api_key)
78
  try:
79
  openai.Model.list(api_key=api_key) # test the API key
80
  api_key_st = api_key
81
- return aKey_tb.update('API Key accepted', interactive=False, type='text'), aKey_btn.update(interactive=False), api_key_st
82
  except Exception as e:
83
- return aKey_tb.update(str(e), type='text'), *[x.update() for x in [aKey_btn, api_key_state]]
84
 
85
  # convert user uploaded data to vectorstore
86
  def uiData_vecStore(userFiles, userUrls, api_key_st, vsDict_st={}, progress=gr.Progress()):
@@ -172,7 +172,7 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue='orange', secondary_hue='gray
172
  # Initialize state variables - stored in this browser session - these can only be used within input or output of .click/.submit etc, not as a python var coz they are not stored in backend, only as a frontend gradio component
173
  # but if you initialize it with a default value, that value will be stored in backend and accessible across all users. You can also change it with statear.value='newValue'
174
  qa_state = gr.State()
175
- api_key_state = gr.State(os.getenv("OPENAI_API_KEY") if mode.type=='personalBot' else 'Null')
176
  chromaVS_state = gr.State({})
177
 
178
 
@@ -182,10 +182,10 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue='orange', secondary_hue='gray
182
  with gr.Tab('Initialization', id='init'):
183
  with gr.Row():
184
  with gr.Column():
185
- aKey_tb = gr.Textbox(label="OpenAI API Key", type='password'\
186
  , info='You can find OpenAI API key at https://platform.openai.com/account/api-keys'\
187
  , placeholder='Enter your API key here and hit enter to begin chatting')
188
- aKey_btn = gr.Button("Submit API Key")
189
  with gr.Row(visible=mode.uiAddDataVis):
190
  upload_fb = gr.Files(scale=5, label="Upload (multiple) Files - pdf/txt/docx supported", file_types=['.doc', '.docx', 'text', '.pdf', '.csv'])
191
  urls_tb = gr.Textbox(scale=5, label="Enter URLs starting with https (comma separated)"\
@@ -221,9 +221,9 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue='orange', secondary_hue='gray
221
  ### Setup the Gradio Event Listeners
222
 
223
  # API button
224
- aKey_btn_args = {'fn':setApiKey, 'inputs':[aKey_tb], 'outputs':[aKey_tb, aKey_btn, api_key_state]}
225
- aKey_btn.click(**aKey_btn_args)
226
- aKey_tb.submit(**aKey_btn_args)
227
 
228
  # Data Ingest Button
229
  data_ingest_event = data_ingest_btn.click(uiData_vecStore, [upload_fb, urls_tb, api_key_state, chromaVS_state], [chromaVS_state, status_tb, data_ingest_btn, upload_fb, urls_tb])
@@ -236,7 +236,7 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue='orange', secondary_hue='gray
236
  stdlQs_rb.change(**advSet_args)
237
 
238
  # Initialize button
239
- initCb_args = {'fn':initializeChatbot, 'inputs':[temp_sld, k_sld, model_dd, stdlQs_rb, api_key_state, chromaVS_state], 'outputs':[qa_state, btn, initChatbot_btn, aKey_tb, tabs, chatbot]}
240
  if mode.type=='personalBot':
241
  demo.load(**initCb_args) # load Chatbot UI directly on startup
242
  initChatbot_btn.click(**initCb_args)
 
70
  print('Chatbot initialized at ', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
71
 
72
  return qa_chain_st, btn.update(interactive=True), initChatbot_btn.update('Chatbot ready. Now visit the chatbot Tab.', interactive=False)\
73
+ , oaiKey_tb.update(), gr.Tabs.update(selected='cb'), chatbot.update(value=[('', welMsg)])
74
 
75
 
76
+ def setOaiApiKey(api_key):
77
  api_key = transformApi(api_key)
78
  try:
79
  openai.Model.list(api_key=api_key) # test the API key
80
  api_key_st = api_key
81
+ return oaiKey_tb.update('API Key accepted', interactive=False, type='text'), oaiKey_btn.update(interactive=False), api_key_st
82
  except Exception as e:
83
+ return oaiKey_tb.update(str(e), type='text'), *[x.update() for x in [oaiKey_btn, api_key_state]]
84
 
85
  # convert user uploaded data to vectorstore
86
  def uiData_vecStore(userFiles, userUrls, api_key_st, vsDict_st={}, progress=gr.Progress()):
 
172
  # Initialize state variables - stored in this browser session - these can only be used within input or output of .click/.submit etc, not as a python var coz they are not stored in backend, only as a frontend gradio component
173
  # but if you initialize it with a default value, that value will be stored in backend and accessible across all users. You can also change it with statear.value='newValue'
174
  qa_state = gr.State()
175
+ api_key_state = gr.State(getPersonalBotApiKey() if mode.type=='personalBot' else 'Null') # can be string (OpenAI) or dict (WX)
176
  chromaVS_state = gr.State({})
177
 
178
 
 
182
  with gr.Tab('Initialization', id='init'):
183
  with gr.Row():
184
  with gr.Column():
185
+ oaiKey_tb = gr.Textbox(label="OpenAI API Key", type='password'\
186
  , info='You can find OpenAI API key at https://platform.openai.com/account/api-keys'\
187
  , placeholder='Enter your API key here and hit enter to begin chatting')
188
+ oaiKey_btn = gr.Button("Submit API Key")
189
  with gr.Row(visible=mode.uiAddDataVis):
190
  upload_fb = gr.Files(scale=5, label="Upload (multiple) Files - pdf/txt/docx supported", file_types=['.doc', '.docx', 'text', '.pdf', '.csv'])
191
  urls_tb = gr.Textbox(scale=5, label="Enter URLs starting with https (comma separated)"\
 
221
  ### Setup the Gradio Event Listeners
222
 
223
  # API button
224
+ oaiKey_btn_args = {'fn':setOaiApiKey, 'inputs':[oaiKey_tb], 'outputs':[oaiKey_tb, oaiKey_btn, api_key_state]}
225
+ oaiKey_btn.click(**oaiKey_btn_args)
226
+ oaiKey_tb.submit(**oaiKey_btn_args)
227
 
228
  # Data Ingest Button
229
  data_ingest_event = data_ingest_btn.click(uiData_vecStore, [upload_fb, urls_tb, api_key_state, chromaVS_state], [chromaVS_state, status_tb, data_ingest_btn, upload_fb, urls_tb])
 
236
  stdlQs_rb.change(**advSet_args)
237
 
238
  # Initialize button
239
+ initCb_args = {'fn':initializeChatbot, 'inputs':[temp_sld, k_sld, model_dd, stdlQs_rb, api_key_state, chromaVS_state], 'outputs':[qa_state, btn, initChatbot_btn, oaiKey_tb, tabs, chatbot]}
240
  if mode.type=='personalBot':
241
  demo.load(**initCb_args) # load Chatbot UI directly on startup
242
  initChatbot_btn.click(**initCb_args)
ttyd_functions.py CHANGED
@@ -261,4 +261,16 @@ def num_tokens_from_string(string, encoding_name = "cl100k_base"):
261
  """Returns the number of tokens in a text string."""
262
  encoding = tiktoken.get_encoding(encoding_name)
263
  num_tokens = len(encoding.encode(string))
264
- return num_tokens
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  """Returns the number of tokens in a text string."""
262
  encoding = tiktoken.get_encoding(encoding_name)
263
  num_tokens = len(encoding.encode(string))
264
+ return num_tokens
265
+
266
+ def getPersonalBotApiKey():
267
+ print('funcCalled')
268
+ if os.getenv("OPENAI_API_KEY"):
269
+ return os.getenv("OPENAI_API_KEY")
270
+ elif os.getenv("WX_API_KEY"):
271
+ wxCreds = {'credentials' : {"url": "https://us-south.ml.cloud.ibm.com", "apikey": os.getenv("WX_API_KEY") },
272
+ 'project_id': os.getenv("WX_PROJECT_ID")
273
+ }
274
+ return wxCreds
275
+ else:
276
+ return None
vecstore/c87f6fd4-541b-11ee-842a-acde48001122/c2ef6a64-23e9-4547-8d53-32e82b52f85f/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
3
+ size 6284000
vecstore/c87f6fd4-541b-11ee-842a-acde48001122/c2ef6a64-23e9-4547-8d53-32e82b52f85f/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
3
+ size 100
vecstore/c87f6fd4-541b-11ee-842a-acde48001122/c2ef6a64-23e9-4547-8d53-32e82b52f85f/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4fa0f3de3eca485efea4ea8901f5a34a2bf77ee4fbba4afb491745539ccee6af
3
+ size 4000
vecstore/c87f6fd4-541b-11ee-842a-acde48001122/c2ef6a64-23e9-4547-8d53-32e82b52f85f/link_lists.bin ADDED
File without changes
vecstore/c87f6fd4-541b-11ee-842a-acde48001122/chroma.sqlite3 ADDED
Binary file (168 kB). View file
 
vecstore/ea86f048-541b-11ee-a314-acde48001122/chroma.sqlite3 ADDED
Binary file (168 kB). View file
 
vecstore/ea86f048-541b-11ee-a314-acde48001122/eebc97bc-095a-4715-8ec5-f3ffedb1b4ea/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
3
+ size 6284000
vecstore/ea86f048-541b-11ee-a314-acde48001122/eebc97bc-095a-4715-8ec5-f3ffedb1b4ea/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
3
+ size 100
vecstore/ea86f048-541b-11ee-a314-acde48001122/eebc97bc-095a-4715-8ec5-f3ffedb1b4ea/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc19b1997119425765295aeab72d76faa6927d4f83985d328c26f20468d6cc76
3
+ size 4000
vecstore/ea86f048-541b-11ee-a314-acde48001122/eebc97bc-095a-4715-8ec5-f3ffedb1b4ea/link_lists.bin ADDED
File without changes
vecstore/ff5dbf74-541b-11ee-a0d2-acde48001122/4dda0e11-f96d-46f6-ad54-53cd3dde649f/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
3
+ size 6284000
vecstore/ff5dbf74-541b-11ee-a0d2-acde48001122/4dda0e11-f96d-46f6-ad54-53cd3dde649f/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
3
+ size 100
vecstore/ff5dbf74-541b-11ee-a0d2-acde48001122/4dda0e11-f96d-46f6-ad54-53cd3dde649f/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc19b1997119425765295aeab72d76faa6927d4f83985d328c26f20468d6cc76
3
+ size 4000
vecstore/ff5dbf74-541b-11ee-a0d2-acde48001122/4dda0e11-f96d-46f6-ad54-53cd3dde649f/link_lists.bin ADDED
File without changes
vecstore/ff5dbf74-541b-11ee-a0d2-acde48001122/chroma.sqlite3 ADDED
Binary file (168 kB). View file