Rauhan commited on
Commit
ea8ad26
·
1 Parent(s): 30a2f1b

UPDATE: activity log

Browse files
Files changed (2) hide show
  1. app.py +14 -1
  2. functions.py +5 -1
app.py CHANGED
@@ -252,6 +252,7 @@ async def newChatbot(chatbotName: str, username: str):
252
 
253
  @app.post("/loadPDF")
254
  async def loadPDF(vectorstore: str, pdf: UploadFile = File(...)):
 
255
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
256
  source = pdf.filename
257
  pdf = await pdf.read()
@@ -285,6 +286,7 @@ async def loadPDF(vectorstore: str, pdf: UploadFile = File(...)):
285
 
286
  @app.post("/loadImagePDF")
287
  async def loadImagePDF(vectorstore: str, pdf: UploadFile = File(...)):
 
288
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
289
  source = pdf.filename
290
  pdf = await pdf.read()
@@ -319,6 +321,7 @@ class AddText(BaseModel):
319
 
320
  @app.post("/loadText")
321
  async def loadText(addTextConfig: AddText):
 
322
  vectorstore, text = addTextConfig.vectorstore, addTextConfig.text
323
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
324
  text = cleanText(text = text)
@@ -379,6 +382,7 @@ class LoadWebsite(BaseModel):
379
  @app.post("/loadWebURLs")
380
  async def loadWebURLs(loadWebsite: LoadWebsite):
381
  vectorstore, urls, source = loadWebsite.vectorstore, loadWebsite.urls, loadWebsite.source
 
382
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
383
  text = extractTextFromUrlList(urls=urls)
384
  dct = {
@@ -406,6 +410,7 @@ async def loadWebURLs(loadWebsite: LoadWebsite):
406
 
407
  @app.post("/answerQuery")
408
  async def answerQuestion(request: Request, query: str, vectorstore: str, llmModel: str = "llama3-70b-8192"):
 
409
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
410
  output = answerQuery(query=query, vectorstore=vectorstore, llmModel=llmModel)
411
  ip_address = request.client.host
@@ -424,6 +429,7 @@ async def answerQuestion(request: Request, query: str, vectorstore: str, llmMode
424
 
425
  @app.post("/deleteChatbot")
426
  async def deleteChatbot(vectorstore: str):
 
427
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
428
  supabase.table('ConversAI_ChatbotInfo').delete().eq('user_id', username).eq('chatbotname', chatbotName).execute()
429
  return deleteTable(tableName=vectorstore)
@@ -459,6 +465,7 @@ class YtTranscript(BaseModel):
459
  @app.post("/loadYoutubeTranscript")
460
  async def loadYoutubeTranscript(ytTranscript: YtTranscript):
461
  vectorstore, urls = ytTranscript.vectorstore, ytTranscript.urls
 
462
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
463
  text = getTranscript(urls=urls)
464
  dct = {
@@ -507,6 +514,7 @@ async def analyzeAndAnswer(query: str, file: UploadFile = File(...)):
507
 
508
  @app.post("/getChatHistory")
509
  async def chatHistory(vectorstore: str):
 
510
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
511
  response = supabase.table("ConversAI_ChatHistory").select("timestamp", "question", "response").eq("username",
512
  username).eq(
@@ -516,6 +524,7 @@ async def chatHistory(vectorstore: str):
516
 
517
  @app.post("/listChatbotSources")
518
  async def listChatbotSources(vectorstore: str):
 
519
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
520
  result = supabase.table("ConversAI_ChatbotDataSources").select("*").eq("username", username).eq("chatbotName",
521
  chatbotName).execute().data
@@ -523,7 +532,8 @@ async def listChatbotSources(vectorstore: str):
523
 
524
 
525
  @app.post("/deleteChatbotSource")
526
- async def deleteChatbotSource(dataSourceName: str):
 
527
  response = supabase.table("ConversAI_ChatbotDataSources").delete().eq("dataSourceName", dataSourceName).execute()
528
  response = supabase.storage.from_('ConversAI').remove(f"{dataSourceName}_data.json")
529
  return {
@@ -541,6 +551,7 @@ class LoadEditedJson(BaseModel):
541
  @app.post("/loadEditedJson")
542
  async def loadEditedJson(loadEditedJsonConfig: LoadEditedJson):
543
  username, chatbotName = loadEditedJsonConfig.vectorstore.split("$")[1], loadEditedJsonConfig.vectorstore.split("$")[2]
 
544
  jsonData = json.dumps(loadEditedJsonConfig.jsonData, indent = 1).encode("utf-8")
545
  fileName = createDataSourceName(loadEditedJsonConfig.dataSourceName)
546
  response = supabase.storage.from_("ConversAI").upload(file=jsonData, path=f"{fileName}_data.json")
@@ -561,6 +572,7 @@ async def loadEditedJson(loadEditedJsonConfig: LoadEditedJson):
561
 
562
  @app.post("/publicOrPrivate")
563
  async def publicOrPrivate(vectorstore: str, mode: str = "public"):
 
564
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
565
  response = (
566
  supabase.table("ConversAI_ChatbotInfo")
@@ -583,6 +595,7 @@ class TrainChatbot(BaseModel):
583
  @app.post("/trainChatbot")
584
  async def trainChatbot(trainChatbotConfig: TrainChatbot):
585
  vectorstore, UrlSources = trainChatbotConfig.vectorstore, trainChatbotConfig.urls
 
586
  texts = []
587
  sources = []
588
  fileTypes = [supabase.table("ConversAI_ChatbotDataSources").select("sourceEndpoint").eq("sourceContentURL",
 
252
 
253
  @app.post("/loadPDF")
254
  async def loadPDF(vectorstore: str, pdf: UploadFile = File(...)):
255
+ trackUsage(vectorstore=vectorstore, endpoint="/loadPDF")
256
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
257
  source = pdf.filename
258
  pdf = await pdf.read()
 
286
 
287
  @app.post("/loadImagePDF")
288
  async def loadImagePDF(vectorstore: str, pdf: UploadFile = File(...)):
289
+ trackUsage(vectorstore=vectorstore, endpoint="/loadImagePDF")
290
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
291
  source = pdf.filename
292
  pdf = await pdf.read()
 
321
 
322
  @app.post("/loadText")
323
  async def loadText(addTextConfig: AddText):
324
+ trackUsage(vectorstore=vectorstore, endpoint="/loadText")
325
  vectorstore, text = addTextConfig.vectorstore, addTextConfig.text
326
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
327
  text = cleanText(text = text)
 
382
  @app.post("/loadWebURLs")
383
  async def loadWebURLs(loadWebsite: LoadWebsite):
384
  vectorstore, urls, source = loadWebsite.vectorstore, loadWebsite.urls, loadWebsite.source
385
+ trackUsage(vectorstore=vectorstore, endpoint="/loadWebURLs")
386
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
387
  text = extractTextFromUrlList(urls=urls)
388
  dct = {
 
410
 
411
  @app.post("/answerQuery")
412
  async def answerQuestion(request: Request, query: str, vectorstore: str, llmModel: str = "llama3-70b-8192"):
413
+ trackUsage(vectorstore=vectorstore, endpoint="/answerQuery")
414
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
415
  output = answerQuery(query=query, vectorstore=vectorstore, llmModel=llmModel)
416
  ip_address = request.client.host
 
429
 
430
  @app.post("/deleteChatbot")
431
  async def deleteChatbot(vectorstore: str):
432
+ trackUsage(vectorstore=vectorstore, endpoint="/deleteChatbot")
433
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
434
  supabase.table('ConversAI_ChatbotInfo').delete().eq('user_id', username).eq('chatbotname', chatbotName).execute()
435
  return deleteTable(tableName=vectorstore)
 
465
  @app.post("/loadYoutubeTranscript")
466
  async def loadYoutubeTranscript(ytTranscript: YtTranscript):
467
  vectorstore, urls = ytTranscript.vectorstore, ytTranscript.urls
468
+ trackUsage(vectorstore=vectorstore, endpoint="/loadYoutubeTranscript")
469
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
470
  text = getTranscript(urls=urls)
471
  dct = {
 
514
 
515
  @app.post("/getChatHistory")
516
  async def chatHistory(vectorstore: str):
517
+ trackUsage(vectorstore=vectorstore, endpoint="/getChatHistory")
518
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
519
  response = supabase.table("ConversAI_ChatHistory").select("timestamp", "question", "response").eq("username",
520
  username).eq(
 
524
 
525
  @app.post("/listChatbotSources")
526
  async def listChatbotSources(vectorstore: str):
527
+ trackUsage(vectorstore=vectorstore, endpoint="/listChatbotSources")
528
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
529
  result = supabase.table("ConversAI_ChatbotDataSources").select("*").eq("username", username).eq("chatbotName",
530
  chatbotName).execute().data
 
532
 
533
 
534
  @app.post("/deleteChatbotSource")
535
+ async def deleteChatbotSource(vectorstore: str, dataSourceName: str):
536
+ trackUsage(vectorstore=vectorstore, endpoint="/deleteChatbotSource")
537
  response = supabase.table("ConversAI_ChatbotDataSources").delete().eq("dataSourceName", dataSourceName).execute()
538
  response = supabase.storage.from_('ConversAI').remove(f"{dataSourceName}_data.json")
539
  return {
 
551
  @app.post("/loadEditedJson")
552
  async def loadEditedJson(loadEditedJsonConfig: LoadEditedJson):
553
  username, chatbotName = loadEditedJsonConfig.vectorstore.split("$")[1], loadEditedJsonConfig.vectorstore.split("$")[2]
554
+ trackUsage(vectorstore=loadEditedJsonConfig.vectorstore, endpoint="/loadEditedJson")
555
  jsonData = json.dumps(loadEditedJsonConfig.jsonData, indent = 1).encode("utf-8")
556
  fileName = createDataSourceName(loadEditedJsonConfig.dataSourceName)
557
  response = supabase.storage.from_("ConversAI").upload(file=jsonData, path=f"{fileName}_data.json")
 
572
 
573
  @app.post("/publicOrPrivate")
574
  async def publicOrPrivate(vectorstore: str, mode: str = "public"):
575
+ trackUsage(vectorstore=vectorstore, endpoint="/publicOrPrivate")
576
  username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
577
  response = (
578
  supabase.table("ConversAI_ChatbotInfo")
 
595
  @app.post("/trainChatbot")
596
  async def trainChatbot(trainChatbotConfig: TrainChatbot):
597
  vectorstore, UrlSources = trainChatbotConfig.vectorstore, trainChatbotConfig.urls
598
+ trackUsage(vectorstore=vectorstore, endpoint="/trainChatbot")
599
  texts = []
600
  sources = []
601
  fileTypes = [supabase.table("ConversAI_ChatbotDataSources").select("sourceEndpoint").eq("sourceContentURL",
functions.py CHANGED
@@ -368,4 +368,8 @@ def createDataSourceName(sourceName):
368
  while True:
369
  sourceName = sourceName + "-" + str(i)
370
  return createDataSourceName(sourceName)
371
-
 
 
 
 
 
368
  while True:
369
  sourceName = sourceName + "-" + str(i)
370
  return createDataSourceName(sourceName)
371
+
372
+
373
+ def trackUsage(vectorstore: str, endpoint: str):
374
+ username, chatbotName = vectorstore.split("$")[1], vectorstore.split("$")[2]
375
+ client.table("ConversAI_ActivityLog").insert({"username": username, "chatbotName": chatbotName, "endpointUsed": endpoint}).execute()