Spaces:
Runtime error
Runtime error
File size: 3,263 Bytes
ebd06cc f73cf1f ebd06cc 11dccc3 ebd06cc 775521b e99c3d5 3c13580 ebd06cc 775521b 857c3ab ebd06cc 11dccc3 1acc6c8 11dccc3 857c3ab 11dccc3 ebd06cc 8d7feb0 f4b28b5 ebd06cc 3c13580 93bc1c1 3c13580 ebd06cc f31e047 ebd06cc c1313e9 ebd06cc 8d7feb0 ebd06cc adeac66 857c3ab adeac66 8ed200b 8d7feb0 ebd06cc e99c3d5 ee4103c ebd06cc e99c3d5 0756fa3 ebd06cc 857c3ab 5d4719e 857c3ab 5d4719e 857c3ab 5d4719e 857c3ab ee4103c 9467b57 ee4103c ebd06cc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
from datetime import datetime
import logging,os
import fastapi
from fastapi import Body, Depends
import uvicorn
from fastapi import HTTPException , status
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI as Response
from sse_starlette.sse import EventSourceResponse
from starlette.responses import StreamingResponse
from starlette.requests import Request
from pydantic import BaseModel, Extra
from enum import Enum
from typing import List, Dict, Any, Generator, Optional, cast, Callable
from chromaIntf import ChromaIntf
import baseInfra.dropbox_handler as dbh
import traceback
chromaIntf=ChromaIntf()
class PathRequest(BaseModel):
dir: str = "/"
class MetaD(BaseModel):
timestamp: Optional[str]= datetime.now().isoformat()
class Config:
allow_population_by_field_name = True
extra = Extra.allow
class DocWithMeta(BaseModel):
text: str = ""
metadata: Optional[MetaD] = MetaD()
async def catch_exceptions_middleware(
request: Request, call_next: Callable[[Request], Any]
) -> Response:
try:
#print("In exception cater middleware")
#print(request.headers)
#print(await request.body())
return await call_next(request)
except Exception as e:
print(repr(e))
print("from the catch exception")
traceback.print_exc()
return JSONResponse(content={"error": repr(e)}, status_code=500)
app = fastapi.FastAPI(title="Maya Persistence")
app.middleware("http")(catch_exceptions_middleware)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
api_base="/api/v1"
@app.post(api_base+"/getMatchingDocs")
async def get_matching_docs(inStr: str ) -> Any:
"""
Gets the query embeddings and uses metadata appropriately and gets the matching docs for query
TODO: Add parameter for type of query and number of docs to return
TODO: Add parameter to return the source information as well
"""
return await chromaIntf.getRelevantDocs(inStr)
@app.post(api_base+"/addTextDocument")
async def add_text_document(inDoc: DocWithMeta ) -> Any:
"""
Add text and metadata to the db
"""
print("Received request for")
print(inDoc)
return await chromaIntf.addText(inDoc.text,inDoc.metadata)
@app.get(api_base+"/persist")
async def persist_db():
return await chromaIntf.persist()
@app.get(api_base+"/reset")
async def reset_db():
return await dbh.restoreFolder("db")
@app.post(api_base+"/walk")
def walk(path: PathRequest):
print("Received walk request")
dirs=[]
fileList=[]
try:
for root, items, files in os.walk(path.dir,topdown=True):
for item in items:
dirs.append(item)
for filea in files:
fileList.append(filea)
except Exception:
print("got exception",Exception)
response= JSONResponse(content= {"dirs":dirs,"files":fileList})
return response
@app.get(api_base+"/list")
async def list_docs():
return await chromaIntf.listDocs()
print(__name__)
if __name__ == '__main__' or __name__ == "src.main":
uvicorn.run(app, host="0.0.0.0", port=8000) |