Spaces:
Sleeping
Sleeping
UPDATE: activity log
Browse files- app.py +14 -1
- 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()
|