|
|
import os |
|
|
import sys |
|
|
import time |
|
|
import signal |
|
|
import io |
|
|
|
|
|
from fastapi import FastAPI, Request, status, Form, UploadFile |
|
|
from fastapi.staticfiles import StaticFiles |
|
|
from fastapi.middleware.cors import CORSMiddleware |
|
|
from pydantic import BaseModel, Field |
|
|
from fastapi.exceptions import RequestValidationError |
|
|
from fastapi.responses import JSONResponse |
|
|
|
|
|
import fn |
|
|
import gradio as gr |
|
|
from app import demo |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
app.add_middleware( |
|
|
CORSMiddleware, |
|
|
allow_origins=['*'], |
|
|
allow_credentials=True, |
|
|
allow_methods=["*"], |
|
|
allow_headers=["*"], |
|
|
) |
|
|
|
|
|
gr.mount_gradio_app(app, demo, path="/gradio") |
|
|
|
|
|
@app.post("/upload") |
|
|
async def api_save(args: dict): |
|
|
fn.download(args) |
|
|
docs = fn.docs_load(args) |
|
|
if 'chunk_size' in args and args['chunk_size']: |
|
|
docs = fn.chunk_split(docs, int(args['chunk_size'])) |
|
|
fn.vector_save(docs, args) |
|
|
return {"status": 0, "result": "saved."} |
|
|
|
|
|
@app.post("/search") |
|
|
async def api_search(args: dict): |
|
|
vector_store = fn.vector_load(args) |
|
|
result, detail = fn.search(vector_store, args) |
|
|
return {"status": 0, "result": result, "detail": detail} |
|
|
|