| from langchain_community.document_loaders import PyPDFLoader |
| from langchain_text_splitters import RecursiveCharacterTextSplitter |
| from langchain_core.messages import AIMessage, HumanMessage |
| from fastapi import FastAPI |
| from pydantic import BaseModel |
| import os |
| from rag import Rag |
| from storePDF import get_documents_from_path |
|
|
| folder_path = "files" |
| all_documents = get_documents_from_path(folder_path) |
| text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200, add_start_index=True) |
| texts = text_splitter.split_documents(all_documents) |
|
|
| rag_llm = Rag(); |
|
|
| rag_llm.createRagChain() |
|
|
| |
| chat_history = [] |
|
|
| class ChatInput(BaseModel): |
| question: str |
|
|
| app = FastAPI() |
|
|
| @app.get("/") |
| async def root(): |
| return {"message": "Hello World"} |
|
|
| @app.post("/generatechat/") |
| async def generateResponse(chat_input: ChatInput): |
| ai_msg = rag_llm.generateResponse(chat_input.question, chat_history) |
| chat_history.extend( |
| [ |
| HumanMessage(content=chat_input.question), |
| AIMessage(content=ai_msg["answer"]), |
| ] |
| ) |
| return {"response": ai_msg} |
|
|
| def run_server(): |
| import uvicorn |
| uvicorn.run(app, host="127.0.0.1", port=8000) |
| print("Server is running") |
|
|
| if __name__ == "__main__": |
| run_server() |