From 0eded8e79b660d4214111753c6d84e8004a375f3 Mon Sep 17 00:00:00 2001 From: Maarten Segers Date: Tue, 18 Jun 2024 09:11:00 +0200 Subject: [PATCH 1/2] Fix .env remove spaced before and after environment variable assignments " = " --- example.env | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/example.env b/example.env index 3eef484d..f4009fc6 100644 --- a/example.env +++ b/example.env @@ -1,24 +1,24 @@ # Mandatory -OPENAI_API_KEY = "" -DIFFBOT_API_KEY = "" +OPENAI_API_KEY="" +DIFFBOT_API_KEY="" # Optional Backend -EMBEDDING_MODEL = "all-MiniLM-L6-v2" -IS_EMBEDDING = "true" -KNN_MIN_SCORE = "0.94" +EMBEDDING_MODEL="all-MiniLM-L6-v2" +IS_EMBEDDING="true" +KNN_MIN_SCORE="0.94" # Enable Gemini (default is False) | Can be False or True -GEMINI_ENABLED = False +GEMINI_ENABLED=False # Enable Google Cloud logs (default is False) | Can be False or True -GCP_LOG_METRICS_ENABLED = False -NUMBER_OF_CHUNKS_TO_COMBINE = 6 -UPDATE_GRAPH_CHUNKS_PROCESSED = 20 -NEO4J_URI = "neo4j://database:7687" -NEO4J_USERNAME = "neo4j" -NEO4J_PASSWORD = "password" -LANGCHAIN_API_KEY = "" -LANGCHAIN_PROJECT = "" -LANGCHAIN_TRACING_V2 = "true" -LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com" +GCP_LOG_METRICS_ENABLED=False +NUMBER_OF_CHUNKS_TO_COMBINE=6 +UPDATE_GRAPH_CHUNKS_PROCESSED=20 +NEO4J_URI="neo4j://database:7687" +NEO4J_USERNAME="neo4j" +NEO4J_PASSWORD="password" +LANGCHAIN_API_KEY="" +LANGCHAIN_PROJECT="" +LANGCHAIN_TRACING_V2="true" +LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" # Optional Frontend BACKEND_API_URL="http://localhost:8000" From 083f487f40e5eaa26747601b8b39a1af91d0e53d Mon Sep 17 00:00:00 2001 From: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Date: Tue, 2 Jul 2024 21:25:45 +0530 Subject: [PATCH 2/2] Staging To Main (#495) * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * recent merges * pdf deletion due to out of diskspace * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * Convert is_cancelled value from string to bool * added the default page size * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * offset in chunks (#389) * page number in gcs loader (#393) * added youtube timestamps (#392) * chat pop up button (#387) * expand * minimize-icon * css changes * chat history * chatbot wider Side Nav * expand icon * chatbot UI * Delete * merge fixes * code suggestions --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * chunks create before extraction using is_pre_process variable (#383) * chunks create before extraction using is_pre_process variable * Return total pages for Model * update requirement.txt * total pages on uplaod API * added the Confirmation Dialog * added the selected files into the confirmation modal * format and lint fixes * added the stop watch image * fileselection on alert dialog * Add timeout in docker for gunicorn workers * Add cancel icon to info popup (#384) * Info Modal Changes * css changes * recent merges * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * added the default page size * Convert is_cancelled value from string to bool * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Save Total Pages in DB * Added total Pages * file selection when we didn't select anything from Main table * added the danger icon only for large files * added the overflow for more files and file selection for all new files * moved the interface to types * added the icon accoroding to the source * set total page for wiki and youtube * h3 heading * merge * updated the alert on basis if total pages * deleted chunks * polling based on total pages * isNan check * large file based on file size for s3 and gcs * file source in server side event * time calculation based on chunks for gcs and s3 --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * fixed the layout issue * Populate graph schema (#399) * crreate new endpoint populate_graph_schema and update the query for getting lables from DB * Added main.py changes * conditionally-including-the-gcs-login-flow-in-gcs-as-source (#396) * added the condtion * removed llms * Fixed issue : Remove extra unused param * get emb only if used (#278) * Chatbot chunks (#402) * Added file name to the content sent to LLM * added chunk text in the response * increased the docs parts sent to llm * Modified graph query * mardown rendering * youtube starttime * icons * offset changes * removed the files due to codespace space issue --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user (#405) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * fixed css issue * fixed status blank issue * Modified response when no docs is retrived (#413) * Fixed env/docker-compose for local deployments + README doc (#410) * Fixed env/docker-compose for local deployments + README doc * wrong place for ENV in README * by default, removed langsmith + fixed knn score string to float * by default, removed langsmith + fixed knn score string to float * Fixed strings in docker-compose env * Added requirements (neo4j 5.15 or later, APOC, and instructions for Neo4j Desktop) * Missed the TIME_PER_PAGE env, was causing NaN issue in the approx time processing notification. fixed that * Support for all unstructured files (#401) * all unstructured files * responsiveness * added file type * added the extensions * spell mistake * ppt file changes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user with checkbox (#415) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * Extract schema using direct ChatOpenAI API and Chain * integrated the checkbox for schema to text dialog * Update SettingModal.tsx --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * gcs file content read via storage client (#417) * gcs file content read via storage client * added the access token the file state --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * pypdf2 to read files from gcs (#420) * 407 remove driver from frontend (#416) * removed driver * removed API * connecting to database on page refresh --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Css handling of info modal and Tooltips (#418) * css change * toolTips * Sidebar Tooltips * copy to clip * css change * added image types * added gcs * type fix * docker changes * speech * added the toolip for dropzone sources --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed retrival bugs (#421) * yarn format fixes * changed the delete message * added the cancel button * changed the message on tooltip * added space * UI fixes * tooltip for setting * updated req * wikipedia URL input (#424) * accept only wikipedia links * added wikipedia link * added wikilink regex * wikipedia single url only * changed the alert message * wording change * pushed validation state persist error --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * speech and copy (#422) * speech and copy * startTime * added chunk properties * tooltips --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed issue for out of range in KNN API * solved conflicts * conflict solved * Remove logging info from update KNN API * tooltip changes * format and lint fixes * responsiveness changes * Fixed issue for total pages GCS, S3 * UI polishing (#428) * button and tooltip changes * checking validation on change * settings module populate fix * format fixes * opening the modal after auth success * removed the limit * added the scrobar for dropdowns * speech state (#426) * speech state * Button Details changes * delete wording change * Total pages in buckets (#431) * page number NA for buckets * added N/A for gcs and s3 pages * total pages for gcs * remove unwanted logger --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * removed the max width * Update FileTable.tsx * Update the docker file * Modified prompt (#438) * Update Dockerfile * Update Dockerfile * Update Dockerfile * rendering Fix * Local file upload gcs (#442) * Uplaod file to GCS * GCS local upload fixed issue and delete file from GCS after processing and failed or cancelled * Add life cycle rule on uploaded bucket * pdf upload local and gcs bucket check * delete files when processed and extract changes --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Modified chat length and entities used (#443) * metadata for unstructured files (#446) * Unstructured file metadata (#447) * metadata for unstructured files * sleep in gcs upload * updated * icons added to chunks (#435) * icons added to chunks * info modal icons * Dev (#433) * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * recent merges * pdf deletion due to out of diskspace * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * Convert is_cancelled value from string to bool * added the default page size * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * offset in chunks (#389) * page number in gcs loader (#393) * added youtube timestamps (#392) * chat pop up button (#387) * expand * minimize-icon * css changes * chat history * chatbot wider Side Nav * expand icon * chatbot UI * Delete * merge fixes * code suggestions --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * chunks create before extraction using is_pre_process variable (#383) * chunks create before extraction using is_pre_process variable * Return total pages for Model * update requirement.txt * total pages on uplaod API * added the Confirmation Dialog * added the selected files into the confirmation modal * format and lint fixes * added the stop watch image * fileselection on alert dialog * Add timeout in docker for gunicorn workers * Add cancel icon to info popup (#384) * Info Modal Changes * css changes * recent merges * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * added the default page size * Convert is_cancelled value from string to bool * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Save Total Pages in DB * Added total Pages * file selection when we didn't select anything from Main table * added the danger icon only for large files * added the overflow for more files and file selection for all new files * moved the interface to types * added the icon accoroding to the source * set total page for wiki and youtube * h3 heading * merge * updated the alert on basis if total pages * deleted chunks * polling based on total pages * isNan check * large file based on file size for s3 and gcs * file source in server side event * time calculation based on chunks for gcs and s3 --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * fixed the layout issue * Populate graph schema (#399) * crreate new endpoint populate_graph_schema and update the query for getting lables from DB * Added main.py changes * conditionally-including-the-gcs-login-flow-in-gcs-as-source (#396) * added the condtion * removed llms * Fixed issue : Remove extra unused param * get emb only if used (#278) * Chatbot chunks (#402) * Added file name to the content sent to LLM * added chunk text in the response * increased the docs parts sent to llm * Modified graph query * mardown rendering * youtube starttime * icons * offset changes * removed the files due to codespace space issue --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user (#405) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * fixed css issue * fixed status blank issue * Modified response when no docs is retrived (#413) * Fixed env/docker-compose for local deployments + README doc (#410) * Fixed env/docker-compose for local deployments + README doc * wrong place for ENV in README * by default, removed langsmith + fixed knn score string to float * by default, removed langsmith + fixed knn score string to float * Fixed strings in docker-compose env * Added requirements (neo4j 5.15 or later, APOC, and instructions for Neo4j Desktop) * Missed the TIME_PER_PAGE env, was causing NaN issue in the approx time processing notification. fixed that * Support for all unstructured files (#401) * all unstructured files * responsiveness * added file type * added the extensions * spell mistake * ppt file changes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user with checkbox (#415) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * Extract schema using direct ChatOpenAI API and Chain * integrated the checkbox for schema to text dialog * Update SettingModal.tsx --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * gcs file content read via storage client (#417) * gcs file content read via storage client * added the access token the file state --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * pypdf2 to read files from gcs (#420) * 407 remove driver from frontend (#416) * removed driver * removed API * connecting to database on page refresh --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Css handling of info modal and Tooltips (#418) * css change * toolTips * Sidebar Tooltips * copy to clip * css change * added image types * added gcs * type fix * docker changes * speech * added the toolip for dropzone sources --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed retrival bugs (#421) * yarn format fixes * changed the delete message * added the cancel button * changed the message on tooltip * added space * UI fixes * tooltip for setting * updated req * wikipedia URL input (#424) * accept only wikipedia links * added wikipedia link * added wikilink regex * wikipedia single url only * changed the alert message * wording change * pushed validation state persist error --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * speech and copy (#422) * speech and copy * startTime * added chunk properties * tooltips --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed issue for out of range in KNN API * solved conflicts * conflict solved * Remove logging info from update KNN API * tooltip changes * format and lint fixes * responsiveness changes * Fixed issue for total pages GCS, S3 * UI polishing (#428) * button and tooltip changes * checking validation on change * settings module populate fix * format fixes * opening the modal after auth success * removed the limit * added the scrobar for dropdowns * speech state (#426) * speech state * Button Details changes * delete wording change * Total pages in buckets (#431) * page number NA for buckets * added N/A for gcs and s3 pages * total pages for gcs * remove unwanted logger --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * removed the max width * Update FileTable.tsx * Update the docker file * Modified prompt (#438) * Update Dockerfile * Update Dockerfile * Update Dockerfile * rendering Fix * Local file upload gcs (#442) * Uplaod file to GCS * GCS local upload fixed issue and delete file from GCS after processing and failed or cancelled * Add life cycle rule on uploaded bucket * pdf upload local and gcs bucket check * delete files when processed and extract changes --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Modified chat length and entities used (#443) * metadata for unstructured files (#446) * Unstructured file metadata (#447) * metadata for unstructured files * sleep in gcs upload * updated * icons added to chunks (#435) * icons added to chunks * info modal icons --------- Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: Ajay Meena Co-authored-by: Morgan Senechal Co-authored-by: karanchellani <142801957+karanchellani@users.noreply.github.com> * fixed gcs status message issue * added if check for failed count * Null issue Fixed from backend for upload API and graph_document when model name mismatch * added word break issue * Added neo4j-rust-ext * processing time estimation based on bytes * File extension upper case fixed, File delete from GCS or local based on env variable. * timer per byte * Update Dockerfile * Adding sort rows on the table (#451) * Gcs upload folder hashed (#453) * implement foldername hashed in GCS bucket uplaod * Raise exception if invalid model selected * folder name for gcs upload --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * upload all unstructuredfiles to gcs (#455) * Mofified chunk query (#454) * Added libre office for fixing error -- soffice command was not found. Please install libreoffice on your system and try again. - Install instructions: https://www.libreoffice.org/get-help/install-howto/ - Mac: https://formulae.brew.sh/cask/libreoffice - Debian: https://wiki.debian.org/LibreOffice" * Fix the PARTIAL CONTENT issue * File-table no data found (#456) * 'file-table'' * review comment * Llm format change (#459) * changed the llm models format to lowercase * added the error message * llm model changes * format fixes * removed unused import * added the capitalize method * delete files from merged_file_path only if source is local file --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * commented total page code (#460) * format fixes * removed the disabled check on dropdown * Large file env * DEV to STAGING (#461) * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * recent merges * pdf deletion due to out of diskspace * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * Convert is_cancelled value from string to bool * added the default page size * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * offset in chunks (#389) * page number in gcs loader (#393) * added youtube timestamps (#392) * chat pop up button (#387) * expand * minimize-icon * css changes * chat history * chatbot wider Side Nav * expand icon * chatbot UI * Delete * merge fixes * code suggestions --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * chunks create before extraction using is_pre_process variable (#383) * chunks create before extraction using is_pre_process variable * Return total pages for Model * update requirement.txt * total pages on uplaod API * added the Confirmation Dialog * added the selected files into the confirmation modal * format and lint fixes * added the stop watch image * fileselection on alert dialog * Add timeout in docker for gunicorn workers * Add cancel icon to info popup (#384) * Info Modal Changes * css changes * recent merges * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * added the default page size * Convert is_cancelled value from string to bool * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Save Total Pages in DB * Added total Pages * file selection when we didn't select anything from Main table * added the danger icon only for large files * added the overflow for more files and file selection for all new files * moved the interface to types * added the icon accoroding to the source * set total page for wiki and youtube * h3 heading * merge * updated the alert on basis if total pages * deleted chunks * polling based on total pages * isNan check * large file based on file size for s3 and gcs * file source in server side event * time calculation based on chunks for gcs and s3 --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * fixed the layout issue * Populate graph schema (#399) * crreate new endpoint populate_graph_schema and update the query for getting lables from DB * Added main.py changes * conditionally-including-the-gcs-login-flow-in-gcs-as-source (#396) * added the condtion * removed llms * Fixed issue : Remove extra unused param * get emb only if used (#278) * Chatbot chunks (#402) * Added file name to the content sent to LLM * added chunk text in the response * increased the docs parts sent to llm * Modified graph query * mardown rendering * youtube starttime * icons * offset changes * removed the files due to codespace space issue --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user (#405) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * fixed css issue * fixed status blank issue * Modified response when no docs is retrived (#413) * Fixed env/docker-compose for local deployments + README doc (#410) * Fixed env/docker-compose for local deployments + README doc * wrong place for ENV in README * by default, removed langsmith + fixed knn score string to float * by default, removed langsmith + fixed knn score string to float * Fixed strings in docker-compose env * Added requirements (neo4j 5.15 or later, APOC, and instructions for Neo4j Desktop) * Missed the TIME_PER_PAGE env, was causing NaN issue in the approx time processing notification. fixed that * Support for all unstructured files (#401) * all unstructured files * responsiveness * added file type * added the extensions * spell mistake * ppt file changes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user with checkbox (#415) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * Extract schema using direct ChatOpenAI API and Chain * integrated the checkbox for schema to text dialog * Update SettingModal.tsx --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * gcs file content read via storage client (#417) * gcs file content read via storage client * added the access token the file state --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * pypdf2 to read files from gcs (#420) * 407 remove driver from frontend (#416) * removed driver * removed API * connecting to database on page refresh --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Css handling of info modal and Tooltips (#418) * css change * toolTips * Sidebar Tooltips * copy to clip * css change * added image types * added gcs * type fix * docker changes * speech * added the toolip for dropzone sources --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed retrival bugs (#421) * yarn format fixes * changed the delete message * added the cancel button * changed the message on tooltip * added space * UI fixes * tooltip for setting * updated req * wikipedia URL input (#424) * accept only wikipedia links * added wikipedia link * added wikilink regex * wikipedia single url only * changed the alert message * wording change * pushed validation state persist error --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * speech and copy (#422) * speech and copy * startTime * added chunk properties * tooltips --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed issue for out of range in KNN API * solved conflicts * conflict solved * Remove logging info from update KNN API * tooltip changes * format and lint fixes * responsiveness changes * Fixed issue for total pages GCS, S3 * UI polishing (#428) * button and tooltip changes * checking validation on change * settings module populate fix * format fixes * opening the modal after auth success * removed the limit * added the scrobar for dropdowns * speech state (#426) * speech state * Button Details changes * delete wording change * Total pages in buckets (#431) * page number NA for buckets * added N/A for gcs and s3 pages * total pages for gcs * remove unwanted logger --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * removed the max width * Update FileTable.tsx * Update the docker file * Modified prompt (#438) * Update Dockerfile * Update Dockerfile * Update Dockerfile * rendering Fix * Local file upload gcs (#442) * Uplaod file to GCS * GCS local upload fixed issue and delete file from GCS after processing and failed or cancelled * Add life cycle rule on uploaded bucket * pdf upload local and gcs bucket check * delete files when processed and extract changes --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Modified chat length and entities used (#443) * metadata for unstructured files (#446) * Unstructured file metadata (#447) * metadata for unstructured files * sleep in gcs upload * updated * icons added to chunks (#435) * icons added to chunks * info modal icons * fixed gcs status message issue * added if check for failed count * Null issue Fixed from backend for upload API and graph_document when model name mismatch * added word break issue * Added neo4j-rust-ext * processing time estimation based on bytes * File extension upper case fixed, File delete from GCS or local based on env variable. * timer per byte * Update Dockerfile * Adding sort rows on the table (#451) * Gcs upload folder hashed (#453) * implement foldername hashed in GCS bucket uplaod * Raise exception if invalid model selected * folder name for gcs upload --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * upload all unstructuredfiles to gcs (#455) * Mofified chunk query (#454) * Added libre office for fixing error -- soffice command was not found. Please install libreoffice on your system and try again. - Install instructions: https://www.libreoffice.org/get-help/install-howto/ - Mac: https://formulae.brew.sh/cask/libreoffice - Debian: https://wiki.debian.org/LibreOffice" * Fix the PARTIAL CONTENT issue * File-table no data found (#456) * 'file-table'' * review comment * Llm format change (#459) * changed the llm models format to lowercase * added the error message * llm model changes * format fixes * removed unused import * added the capitalize method * delete files from merged_file_path only if source is local file --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * commented total page code (#460) * format fixes * removed the disabled check on dropdown * Large file env --------- Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: Ajay Meena Co-authored-by: Morgan Senechal Co-authored-by: karanchellani <142801957+karanchellani@users.noreply.github.com> * DEV to STAGING (#462) * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * recent merges * pdf deletion due to out of diskspace * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * Convert is_cancelled value from string to bool * added the default page size * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * offset in chunks (#389) * page number in gcs loader (#393) * added youtube timestamps (#392) * chat pop up button (#387) * expand * minimize-icon * css changes * chat history * chatbot wider Side Nav * expand icon * chatbot UI * Delete * merge fixes * code suggestions --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * chunks create before extraction using is_pre_process variable (#383) * chunks create before extraction using is_pre_process variable * Return total pages for Model * update requirement.txt * total pages on uplaod API * added the Confirmation Dialog * added the selected files into the confirmation modal * format and lint fixes * added the stop watch image * fileselection on alert dialog * Add timeout in docker for gunicorn workers * Add cancel icon to info popup (#384) * Info Modal Changes * css changes * recent merges * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * added the default page size * Convert is_cancelled value from string to bool * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Save Total Pages in DB * Added total Pages * file selection when we didn't select anything from Main table * added the danger icon only for large files * added the overflow for more files and file selection for all new files * moved the interface to types * added the icon accoroding to the source * set total page for wiki and youtube * h3 heading * merge * updated the alert on basis if total pages * deleted chunks * polling based on total pages * isNan check * large file based on file size for s3 and gcs * file source in server side event * time calculation based on chunks for gcs and s3 --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * fixed the layout issue * Populate graph schema (#399) * crreate new endpoint populate_graph_schema and update the query for getting lables from DB * Added main.py changes * conditionally-including-the-gcs-login-flow-in-gcs-as-source (#396) * added the condtion * removed llms * Fixed issue : Remove extra unused param * get emb only if used (#278) * Chatbot chunks (#402) * Added file name to the content sent to LLM * added chunk text in the response * increased the docs parts sent to llm * Modified graph query * mardown rendering * youtube starttime * icons * offset changes * removed the files due to codespace space issue --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user (#405) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * fixed css issue * fixed status blank issue * Modified response when no docs is retrived (#413) * Fixed env/docker-compose for local deployments + README doc (#410) * Fixed env/docker-compose for local deployments + README doc * wrong place for ENV in README * by default, removed langsmith + fixed knn score string to float * by default, removed langsmith + fixed knn score string to float * Fixed strings in docker-compose env * Added requirements (neo4j 5.15 or later, APOC, and instructions for Neo4j Desktop) * Missed the TIME_PER_PAGE env, was causing NaN issue in the approx time processing notification. fixed that * Support for all unstructured files (#401) * all unstructured files * responsiveness * added file type * added the extensions * spell mistake * ppt file changes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user with checkbox (#415) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * Extract schema using direct ChatOpenAI API and Chain * integrated the checkbox for schema to text dialog * Update SettingModal.tsx --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * gcs file content read via storage client (#417) * gcs file content read via storage client * added the access token the file state --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * pypdf2 to read files from gcs (#420) * 407 remove driver from frontend (#416) * removed driver * removed API * connecting to database on page refresh --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Css handling of info modal and Tooltips (#418) * css change * toolTips * Sidebar Tooltips * copy to clip * css change * added image types * added gcs * type fix * docker changes * speech * added the toolip for dropzone sources --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed retrival bugs (#421) * yarn format fixes * changed the delete message * added the cancel button * changed the message on tooltip * added space * UI fixes * tooltip for setting * updated req * wikipedia URL input (#424) * accept only wikipedia links * added wikipedia link * added wikilink regex * wikipedia single url only * changed the alert message * wording change * pushed validation state persist error --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * speech and copy (#422) * speech and copy * startTime * added chunk properties * tooltips --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed issue for out of range in KNN API * solved conflicts * conflict solved * Remove logging info from update KNN API * tooltip changes * format and lint fixes * responsiveness changes * Fixed issue for total pages GCS, S3 * UI polishing (#428) * button and tooltip changes * checking validation on change * settings module populate fix * format fixes * opening the modal after auth success * removed the limit * added the scrobar for dropdowns * speech state (#426) * speech state * Button Details changes * delete wording change * Total pages in buckets (#431) * page number NA for buckets * added N/A for gcs and s3 pages * total pages for gcs * remove unwanted logger --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * removed the max width * Update FileTable.tsx * Update the docker file * Modified prompt (#438) * Update Dockerfile * Update Dockerfile * Update Dockerfile * rendering Fix * Local file upload gcs (#442) * Uplaod file to GCS * GCS local upload fixed issue and delete file from GCS after processing and failed or cancelled * Add life cycle rule on uploaded bucket * pdf upload local and gcs bucket check * delete files when processed and extract changes --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Modified chat length and entities used (#443) * metadata for unstructured files (#446) * Unstructured file metadata (#447) * metadata for unstructured files * sleep in gcs upload * updated * icons added to chunks (#435) * icons added to chunks * info modal icons * fixed gcs status message issue * added if check for failed count * Null issue Fixed from backend for upload API and graph_document when model name mismatch * added word break issue * Added neo4j-rust-ext * processing time estimation based on bytes * File extension upper case fixed, File delete from GCS or local based on env variable. * timer per byte * Update Dockerfile * Adding sort rows on the table (#451) * Gcs upload folder hashed (#453) * implement foldername hashed in GCS bucket uplaod * Raise exception if invalid model selected * folder name for gcs upload --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * upload all unstructuredfiles to gcs (#455) * Mofified chunk query (#454) * Added libre office for fixing error -- soffice command was not found. Please install libreoffice on your system and try again. - Install instructions: https://www.libreoffice.org/get-help/install-howto/ - Mac: https://formulae.brew.sh/cask/libreoffice - Debian: https://wiki.debian.org/LibreOffice" * Fix the PARTIAL CONTENT issue * File-table no data found (#456) * 'file-table'' * review comment * Llm format change (#459) * changed the llm models format to lowercase * added the error message * llm model changes * format fixes * removed unused import * added the capitalize method * delete files from merged_file_path only if source is local file --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * commented total page code (#460) * format fixes * removed the disabled check on dropdown * Large file env --------- Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: Ajay Meena Co-authored-by: Morgan Senechal Co-authored-by: karanchellani <142801957+karanchellani@users.noreply.github.com> * added upload api * changed the dropzone error message * Dev to staging (#466) * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * recent merges * pdf deletion due to out of diskspace * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * Convert is_cancelled value from string to bool * added the default page size * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * offset in chunks (#389) * page number in gcs loader (#393) * added youtube timestamps (#392) * chat pop up button (#387) * expand * minimize-icon * css changes * chat history * chatbot wider Side Nav * expand icon * chatbot UI * Delete * merge fixes * code suggestions --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * chunks create before extraction using is_pre_process variable (#383) * chunks create before extraction using is_pre_process variable * Return total pages for Model * update requirement.txt * total pages on uplaod API * added the Confirmation Dialog * added the selected files into the confirmation modal * format and lint fixes * added the stop watch image * fileselection on alert dialog * Add timeout in docker for gunicorn workers * Add cancel icon to info popup (#384) * Info Modal Changes * css changes * recent merges * Integration_qa test (#375) * Test IntegrationQA added * update test cases * update test * update node count assertions * test changes * update changes * modification test * Code refatctor test cases * Handle allowedlist issue in test * test changes * update test * test case execution * test chatbot updates * test case update file * added file --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * fixed status blank issue * Rendering the file name instead of link for gcs and s3 sources in the info modal * added the default page size * Convert is_cancelled value from string to bool * Issue fixed Processed chunked as 0 when file re-process again * Youtube timestamps (#386) * Wikipedia source to accept all valid urls * wikipedia url to support multiple languages * integrated wiki langauge param for extract api * Youtube video timestamps --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * groq llm integration backend (#286) * groq llm integration backend * groq and description in node properties * added groq in options --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Save Total Pages in DB * Added total Pages * file selection when we didn't select anything from Main table * added the danger icon only for large files * added the overflow for more files and file selection for all new files * moved the interface to types * added the icon accoroding to the source * set total page for wiki and youtube * h3 heading * merge * updated the alert on basis if total pages * deleted chunks * polling based on total pages * isNan check * large file based on file size for s3 and gcs * file source in server side event * time calculation based on chunks for gcs and s3 --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * fixed the layout issue * Populate graph schema (#399) * crreate new endpoint populate_graph_schema and update the query for getting lables from DB * Added main.py changes * conditionally-including-the-gcs-login-flow-in-gcs-as-source (#396) * added the condtion * removed llms * Fixed issue : Remove extra unused param * get emb only if used (#278) * Chatbot chunks (#402) * Added file name to the content sent to LLM * added chunk text in the response * increased the docs parts sent to llm * Modified graph query * mardown rendering * youtube starttime * icons * offset changes * removed the files due to codespace space issue --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user (#405) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * fixed css issue * fixed status blank issue * Modified response when no docs is retrived (#413) * Fixed env/docker-compose for local deployments + README doc (#410) * Fixed env/docker-compose for local deployments + README doc * wrong place for ENV in README * by default, removed langsmith + fixed knn score string to float * by default, removed langsmith + fixed knn score string to float * Fixed strings in docker-compose env * Added requirements (neo4j 5.15 or later, APOC, and instructions for Neo4j Desktop) * Missed the TIME_PER_PAGE env, was causing NaN issue in the approx time processing notification. fixed that * Support for all unstructured files (#401) * all unstructured files * responsiveness * added file type * added the extensions * spell mistake * ppt file changes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Settings modal to support generating the labels from the llm by using text given by user with checkbox (#415) * added the json * added schema from text dialog * integrated the schemaAPI * added the alert * resize fixes * Extract schema using direct ChatOpenAI API and Chain * integrated the checkbox for schema to text dialog * Update SettingModal.tsx --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * gcs file content read via storage client (#417) * gcs file content read via storage client * added the access token the file state --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * pypdf2 to read files from gcs (#420) * 407 remove driver from frontend (#416) * removed driver * removed API * connecting to database on page refresh --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Css handling of info modal and Tooltips (#418) * css change * toolTips * Sidebar Tooltips * copy to clip * css change * added image types * added gcs * type fix * docker changes * speech * added the toolip for dropzone sources --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed retrival bugs (#421) * yarn format fixes * changed the delete message * added the cancel button * changed the message on tooltip * added space * UI fixes * tooltip for setting * updated req * wikipedia URL input (#424) * accept only wikipedia links * added wikipedia link * added wikilink regex * wikipedia single url only * changed the alert message * wording change * pushed validation state persist error --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * speech and copy (#422) * speech and copy * startTime * added chunk properties * tooltips --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * Fixed issue for out of range in KNN API * solved conflicts * conflict solved * Remove logging info from update KNN API * tooltip changes * format and lint fixes * responsiveness changes * Fixed issue for total pages GCS, S3 * UI polishing (#428) * button and tooltip changes * checking validation on change * settings module populate fix * format fixes * opening the modal after auth success * removed the limit * added the scrobar for dropdowns * speech state (#426) * speech state * Button Details changes * delete wording change * Total pages in buckets (#431) * page number NA for buckets * added N/A for gcs and s3 pages * total pages for gcs * remove unwanted logger --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * removed the max width * Update FileTable.tsx * Update the docker file * Modified prompt (#438) * Update Dockerfile * Update Dockerfile * Update Dockerfile * rendering Fix * Local file upload gcs (#442) * Uplaod file to GCS * GCS local upload fixed issue and delete file from GCS after processing and failed or cancelled * Add life cycle rule on uploaded bucket * pdf upload local and gcs bucket check * delete files when processed and extract changes --------- Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Modified chat length and entities used (#443) * metadata for unstructured files (#446) * Unstructured file metadata (#447) * metadata for unstructured files * sleep in gcs upload * updated * icons added to chunks (#435) * icons added to chunks * info modal icons * fixed gcs status message issue * added if check for failed count * Null issue Fixed from backend for upload API and graph_document when model name mismatch * added word break issue * Added neo4j-rust-ext * processing time estimation based on bytes * File extension upper case fixed, File delete from GCS or local based on env variable. * timer per byte * Update Dockerfile * Adding sort rows on the table (#451) * Gcs upload folder hashed (#453) * implement foldername hashed in GCS bucket uplaod * Raise exception if invalid model selected * folder name for gcs upload --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * upload all unstructuredfiles to gcs (#455) * Mofified chunk query (#454) * Added libre office for fixing error -- soffice command was not found. Please install libreoffice on your system and try again. - Install instructions: https://www.libreoffice.org/get-help/install-howto/ - Mac: https://formulae.brew.sh/cask/libreoffice - Debian: https://wiki.debian.org/LibreOffice" * Fix the PARTIAL CONTENT issue * File-table no data found (#456) * 'file-table'' * review comment * Llm format change (#459) * changed the llm models format to lowercase * added the error message * llm model changes * format fixes * removed unused import * added the capitalize method * delete files from merged_file_path only if source is local file --------- Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> * commented total page code (#460) * format fixes * removed the disabled check on dropdown * Large file env * added upload api * changed the dropzone error message --------- Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Prakriti Solankey <156313631+prakriti-solankey@users.noreply.github.com> Co-authored-by: Ajay Meena Co-authored-by: Morgan Senechal Co-authored-by: karanchellani <142801957+karanchellani@users.noreply.github.com> * format fixes * Close connect when graph object is not none * Call garbage collector to release the menory * Change error message * Added driver config as user_agent * Updated doc for the LLM_MODELS and GCS_FILE_CACHE (#473) * Web URLs are user input (#475) * web url support backend * added the tabs for input source * user agent added for Neo4jGraph connection * Tab view for sources * extract handling for web ur's * initial input handling * chunk creation before processing * code structure * format fixes --------- Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> * changed the regex for web and cancel button naming * changed the schema dropdown type * readme updates * PROD version fix * changed the alert message for gcs * Delete unconnected entities from DB (#482) * 457 add schema before generate graph (#478) * schema setting from generate graph * changes * changes * badge changes * bug fix * Fulltext index and Update similarity graph (#479) * added full_text index * added one common function for post_processing * post processing api * added tasks param * modifed logging * post processing changes --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> * Graph and vector search (#485) * Modified the retrival query * added the chatmode toggle component * Modified to vector search * Moved the templates to constants * added the icons * added chat modes * code structure changes * Intergrated the API changges * Modified retrieval queries,refactored code * API integration changes * added the score * order change * wording change * modified constants * added graph+vector * added the tooltips * Modified query * removed the graph mode * tooltip camel Case * added the icon and extern link for web source in the info modal * added the youtube link in the source used tab * format fixes * added the hoverable link --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> * Update InfoModal.tsx * removed hover from chunks * removed page number * removed page number * removed page number * Technical docs backend (#486) * technical docs * updated extract * updated sources_list * indentation correction * added architecture * added archirecture image * increased architecture size * Added chatbot docs * updated apis * backend api updated * Updated new API documentation * correct format * correct format of API update_extract_status * Fixed * Added docs for post processing API call * test * parameters highlighted and response in json --------- Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> * Error boundary integration (#490) * added the error boundary UI * added the docs link * wording change * changed the link * Modified retriver query (#491) * Failed file copy to another bucket, user agent configurable and added some extra logs * Update unconnected nodes query * Added limit on unconnected nodes query * Orphan entities deletion (#493) * added orphan delete dialog * added the API services for getting and deleting the orphan nodes * Delete dialog for orphan nodes * Integrated the UI for Orphan node * added the tooltip * checked state fix and aligned the select all with the checkbox of a particular file * added the delete menu * made the origins configurable * format fixes * Added check for empty chunk ids * checkbox fixes * fixed the unchecked bug * reinitialised the select all state * added the description for delete files --------- Co-authored-by: abhishekkumar-27 <164544129+abhishekkumar-27@users.noreply.github.com> Co-authored-by: Pravesh Kumar <121786590+praveshkumar1988@users.noreply.github.com> Co-authored-by: kartikpersistent <101251502+kartikpersistent@users.noreply.github.com> Co-authored-by: aashipandya <156318202+aashipandya@users.noreply.github.com> Co-authored-by: vasanthasaikalluri <165021735+vasanthasaikalluri@users.noreply.github.com> Co-authored-by: Ajay Meena Co-authored-by: Morgan Senechal Co-authored-by: karanchellani <142801957+karanchellani@users.noreply.github.com> --- POC_Documents/V1/From Local to Global.docx | Bin 321705 -> 0 bytes .../V1/propsed RAG genAI Architecture.docx | Bin 223859 -> 0 bytes .../V1/propsed chatbot architecture.jpg | Bin 136140 -> 0 bytes README.md | 162 ++-- backend/example.env | 4 +- backend/score.py | 141 +++- backend/src/QA_integration_new.py | 265 +++---- backend/src/chunkid_entities.py | 25 +- backend/src/document_sources/gcs_bucket.py | 11 + backend/src/document_sources/web_pages.py | 16 + backend/src/graphDB_dataAccess.py | 23 +- backend/src/graph_query.py | 6 +- backend/src/main.py | 59 +- backend/src/post_processing.py | 58 ++ backend/src/shared/common_fn.py | 11 +- backend/src/shared/constants.py | 165 +++- docker-compose.yml | 3 +- docs/backend/backend_docs.adoc | 712 ++++++++++++++++++ docs/frontend/frontend_docs.adoc | 0 docs/project architecture.png | Bin 0 -> 169011 bytes docs/project_docs.adoc | 126 ++++ example.env | 5 +- frontend/Dockerfile | 4 +- frontend/example.env | 5 +- frontend/src/App.css | 6 +- frontend/src/App.tsx | 19 +- frontend/src/HOC/SettingModalHOC.tsx | 28 + frontend/src/assets/images/db-search.svg | 8 + frontend/src/assets/images/graph-search.svg | 16 + frontend/src/assets/images/internet_logo.png | Bin 0 -> 7402 bytes .../assets/images/web-search-svgrepo-com.svg | 11 + .../src/assets/images/web-svgrepo-com.svg | 11 + .../src/components/ChatBot/ChatModeToggle.tsx | 50 ++ .../src/components/{ => ChatBot}/Chatbot.tsx | 34 +- .../ChatBot/ExpandedChatButtonContainer.tsx | 38 + .../src/components/ChatBot/Info/InfoModal.tsx | 352 +++++++++ frontend/src/components/Content.tsx | 270 +++++-- .../{ => DataSources/AWS}/S3Bucket.tsx | 8 +- .../{ => DataSources/AWS}/S3Modal.tsx | 14 +- .../{ => DataSources/GCS}/GCSButton.tsx | 8 +- .../{ => DataSources/GCS}/GCSModal.tsx | 16 +- .../{ => DataSources/Local}/DropZone.tsx | 18 +- frontend/src/components/FileTable.tsx | 16 +- .../{ => Graph}/GraphViewButton.tsx | 0 .../components/{ => Graph}/GraphViewModal.tsx | 15 +- .../components/{ => Graph}/LegendsChip.tsx | 10 +- frontend/src/components/IconsPlacement.tsx | 34 - frontend/src/components/InfoModal.tsx | 274 ------- .../src/components/Layout/DrawerChatbot.tsx | 2 +- .../src/components/Layout/DrawerDropzone.tsx | 262 +++---- frontend/src/components/Layout/Header.tsx | 34 +- frontend/src/components/Layout/PageLayout.tsx | 43 +- frontend/src/components/Layout/SideNav.tsx | 9 +- frontend/src/components/OverflowContainer.tsx | 32 - .../ConnectionModal}/ConnectionModal.tsx | 6 +- .../{ => Popups/DeletePopUp}/DeletePopUp.tsx | 0 .../DeletePopUpForOrphanNodes/index.tsx | 196 +++++ .../LargeFilePopUp}/ConfirmationDialog.tsx | 4 +- .../LargeFilePopUp}/LargeFilesAlert.tsx | 18 +- .../{ => Popups/Settings}/SchemaFromText.tsx | 10 +- .../{ => Popups/Settings}/SettingModal.tsx | 79 +- frontend/src/components/QuickStarter.tsx | 10 + frontend/src/components/{ => UI}/Alert.tsx | 2 +- .../components/{ => UI}/ButtonWithToolTip.tsx | 0 .../src/components/{ => UI}/CustomButton.tsx | 2 +- .../components/{ => UI}/CustomProgressBar.tsx | 0 frontend/src/components/UI/ErrroBoundary.tsx | 45 ++ .../src/components/{ => UI}/HoverableLink.tsx | 2 +- .../components/{ => UI}/IconButtonToolTip.tsx | 0 frontend/src/components/UI/Legend.tsx | 16 + frontend/src/components/UI/Menu.tsx | 41 + .../WebSources/CustomSourceInput.tsx | 71 ++ .../WebSources/GenericSourceButton.tsx | 37 + .../WebSources/GenericSourceModal.tsx | 75 ++ .../components/WebSources/Web/WebInput.tsx | 38 + .../WebSources/WikiPedia/WikipediaInput.tsx | 42 ++ .../WebSources/Youtube/YoutubeInput.tsx | 42 ++ frontend/src/components/Wikipedia.tsx | 10 - frontend/src/components/WikipediaModal.tsx | 165 ---- frontend/src/components/YoutubeButton.tsx | 16 - frontend/src/components/YoutubeModal.tsx | 132 ---- frontend/src/context/UsersFiles.tsx | 10 + frontend/src/hooks/useSourceInput.tsx | 176 +++++ .../{deleteFiles.ts => DeleteFiles.ts} | 0 frontend/src/services/DeleteOrphanNodes.ts | 20 + frontend/src/services/GetOrphanNodes.ts | 18 + frontend/src/services/GraphQuery.ts | 2 - .../{UpdateGraph.ts => PostProcessing.ts} | 7 +- frontend/src/services/QnaAPI.ts | 4 +- frontend/src/types.ts | 86 ++- frontend/src/utils/Constants.ts | 17 +- frontend/src/utils/FileAPI.ts | 20 +- frontend/src/utils/Loader.tsx | 4 +- frontend/src/utils/Utils.ts | 15 + 94 files changed, 3503 insertions(+), 1374 deletions(-) delete mode 100644 POC_Documents/V1/From Local to Global.docx delete mode 100644 POC_Documents/V1/propsed RAG genAI Architecture.docx delete mode 100644 POC_Documents/V1/propsed chatbot architecture.jpg create mode 100644 backend/src/document_sources/web_pages.py create mode 100644 backend/src/post_processing.py create mode 100644 docs/backend/backend_docs.adoc create mode 100644 docs/frontend/frontend_docs.adoc create mode 100644 docs/project architecture.png create mode 100644 docs/project_docs.adoc create mode 100644 frontend/src/HOC/SettingModalHOC.tsx create mode 100644 frontend/src/assets/images/db-search.svg create mode 100644 frontend/src/assets/images/graph-search.svg create mode 100644 frontend/src/assets/images/internet_logo.png create mode 100644 frontend/src/assets/images/web-search-svgrepo-com.svg create mode 100644 frontend/src/assets/images/web-svgrepo-com.svg create mode 100644 frontend/src/components/ChatBot/ChatModeToggle.tsx rename frontend/src/components/{ => ChatBot}/Chatbot.tsx (93%) create mode 100644 frontend/src/components/ChatBot/ExpandedChatButtonContainer.tsx create mode 100644 frontend/src/components/ChatBot/Info/InfoModal.tsx rename frontend/src/components/{ => DataSources/AWS}/S3Bucket.tsx (52%) rename frontend/src/components/{ => DataSources/AWS}/S3Modal.tsx (94%) rename frontend/src/components/{ => DataSources/GCS}/GCSButton.tsx (51%) rename frontend/src/components/{ => DataSources/GCS}/GCSModal.tsx (94%) rename frontend/src/components/{ => DataSources/Local}/DropZone.tsx (94%) rename frontend/src/components/{ => Graph}/GraphViewButton.tsx (100%) rename frontend/src/components/{ => Graph}/GraphViewModal.tsx (96%) rename frontend/src/components/{ => Graph}/LegendsChip.tsx (57%) delete mode 100644 frontend/src/components/IconsPlacement.tsx delete mode 100644 frontend/src/components/InfoModal.tsx delete mode 100644 frontend/src/components/OverflowContainer.tsx rename frontend/src/components/{ => Popups/ConnectionModal}/ConnectionModal.tsx (98%) rename frontend/src/components/{ => Popups/DeletePopUp}/DeletePopUp.tsx (100%) create mode 100644 frontend/src/components/Popups/DeletePopUpForOrphanNodes/index.tsx rename frontend/src/components/{ => Popups/LargeFilePopUp}/ConfirmationDialog.tsx (97%) rename frontend/src/components/{ => Popups/LargeFilePopUp}/LargeFilesAlert.tsx (87%) rename frontend/src/components/{ => Popups/Settings}/SchemaFromText.tsx (94%) rename frontend/src/components/{ => Popups/Settings}/SettingModal.tsx (80%) rename frontend/src/components/{ => UI}/Alert.tsx (91%) rename frontend/src/components/{ => UI}/ButtonWithToolTip.tsx (100%) rename frontend/src/components/{ => UI}/CustomButton.tsx (87%) rename frontend/src/components/{ => UI}/CustomProgressBar.tsx (100%) create mode 100644 frontend/src/components/UI/ErrroBoundary.tsx rename frontend/src/components/{ => UI}/HoverableLink.tsx (98%) rename frontend/src/components/{ => UI}/IconButtonToolTip.tsx (100%) create mode 100644 frontend/src/components/UI/Legend.tsx create mode 100644 frontend/src/components/UI/Menu.tsx create mode 100644 frontend/src/components/WebSources/CustomSourceInput.tsx create mode 100644 frontend/src/components/WebSources/GenericSourceButton.tsx create mode 100644 frontend/src/components/WebSources/GenericSourceModal.tsx create mode 100644 frontend/src/components/WebSources/Web/WebInput.tsx create mode 100644 frontend/src/components/WebSources/WikiPedia/WikipediaInput.tsx create mode 100644 frontend/src/components/WebSources/Youtube/YoutubeInput.tsx delete mode 100644 frontend/src/components/Wikipedia.tsx delete mode 100644 frontend/src/components/WikipediaModal.tsx delete mode 100644 frontend/src/components/YoutubeButton.tsx delete mode 100644 frontend/src/components/YoutubeModal.tsx create mode 100644 frontend/src/hooks/useSourceInput.tsx rename frontend/src/services/{deleteFiles.ts => DeleteFiles.ts} (100%) create mode 100644 frontend/src/services/DeleteOrphanNodes.ts create mode 100644 frontend/src/services/GetOrphanNodes.ts rename frontend/src/services/{UpdateGraph.ts => PostProcessing.ts} (70%) diff --git a/POC_Documents/V1/From Local to Global.docx b/POC_Documents/V1/From Local to Global.docx deleted file mode 100644 index 267ad2478deb4577fcb43c7fdb7909c7b903fd11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321705 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 z 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

2iy~-n{r5=0%er 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

%@+ASB*>i&9uj(Vq09Uz#QGR?`1x`0;0t9c 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 Z=w!rSfJ$Qk02}nj2#V>ifhK+e{tvta$vXf5 diff --git a/POC_Documents/V1/propsed RAG genAI Architecture.docx b/POC_Documents/V1/propsed RAG genAI Architecture.docx deleted file mode 100644 index d149b5195b16149f245fb7e9d69ded1bd824358c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223859 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%0DjU7V)4Ib>Zm-4AD-fQC;T&eIm=&lBdL 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

7k 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 A#{d8T diff --git a/POC_Documents/V1/propsed chatbot architecture.jpg b/POC_Documents/V1/propsed chatbot architecture.jpg deleted file mode 100644 index 5cb87df274b9f12939fa0fa1088ed72945a5c354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136140 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 Frontend +region : 32 [us-central 1] +Allow unauthenticated request : Yes +``` +```bash +# Backend deploy +gcloud run deploy --set-env-vars "OPENAI_API_KEY = " --set-env-vars "DIFFBOT_API_KEY = " --set-env-vars "NEO4J_URI = " --set-env-vars "NEO4J_PASSWORD = " --set-env-vars "NEO4J_USERNAME = " +source location current directory > Backend +region : 32 [us-central 1] +Allow unauthenticated request : Yes +``` + +## ENV | Env Variable Name | Mandatory/Optional | Default Value | Description | |-------------------------|--------------------|---------------|--------------------------------------------------------------------------------------------------| | OPENAI_API_KEY | Mandatory | | API key for OpenAI | @@ -86,7 +122,7 @@ Alternatively, you can run the backend and frontend separately: | KNN_MIN_SCORE | Optional | 0.94 | Minimum score for KNN algorithm | | GEMINI_ENABLED | Optional | False | Flag to enable Gemini | | GCP_LOG_METRICS_ENABLED | Optional | False | Flag to enable Google Cloud logs | -| NUMBER_OF_CHUNKS_TO_COMBINE | Optional | 6 | Number of chunks to combine when processing embeddings | +| NUMBER_OF_CHUNKS_TO_COMBINE | Optional | 5 | Number of chunks to combine when processing embeddings | | UPDATE_GRAPH_CHUNKS_PROCESSED | Optional | 20 | Number of chunks processed before updating progress | | NEO4J_URI | Optional | neo4j://database:7687 | URI for Neo4j database | | NEO4J_USERNAME | Optional | neo4j | Username for Neo4j database | @@ -98,86 +134,36 @@ Alternatively, you can run the backend and frontend separately: | BACKEND_API_URL | Optional | http://localhost:8000 | URL for backend API | | BLOOM_URL | Optional | https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true | URL for Bloom visualization | | REACT_APP_SOURCES | Optional | local,youtube,wiki,s3 | List of input sources that will be available | -| LLM_MODELS | Optional | Diffbot,OpenAI GPT 3.5,OpenAI GPT 4o | Models available for selection on the frontend, used for entities extraction and Q&A Chatbot | +| LLM_MODELS | Optional | diffbot,gpt-3.5,gpt-4o | Models available for selection on the frontend, used for entities extraction and Q&A Chatbot | | ENV | Optional | DEV | Environment variable for the app | | TIME_PER_CHUNK | Optional | 4 | Time per chunk for processing | -| CHUNK_SIZE | Optional | 5242880 | Size of each chunk for processing | +| CHUNK_SIZE | Optional | 5242880 | Size of each chunk of file for upload | | GOOGLE_CLIENT_ID | Optional | | Client ID for Google authentication | +| GCS_FILE_CACHE | Optional | False | If set to True, will save the files to process into GCS. If set to False, will save the files locally | -### -To deploy the app and packages on Google Cloud Platform, run the following command on google cloud run: -```bash -# Frontend deploy -gcloud run deploy -source location current directory > Frontend -region : 32 [us-central 1] -Allow unauthenticated request : Yes -``` -```bash -# Backend deploy -gcloud run deploy --set-env-vars "OPENAI_API_KEY = " --set-env-vars "DIFFBOT_API_KEY = " --set-env-vars "NEO4J_URI = " --set-env-vars "NEO4J_PASSWORD = " --set-env-vars "NEO4J_USERNAME = " -source location current directory > Backend -region : 32 [us-central 1] -Allow unauthenticated request : Yes -``` -### Features -- **PDF Upload**: Users can upload PDF documents using the Drop Zone. -- **S3 Bucket Integration**: Users can also specify PDF documents stored in an S3 bucket for processing. -- **Knowledge Graph Generation**: The application employs OpenAI/Diffbot's LLM to extract relevant information from the PDFs and construct a knowledge graph. -- **Neo4j Integration**: The extracted nodes and relationships are stored in a Neo4j database for easy visualization and querying. -- **Grid View of source node files with** : Name,Type,Size,Nodes,Relations,Duration,Status,Source,Model - -## Functions/Modules - -#### extract_graph_from_file(uri, userName, password, file_path, model): - Extracts nodes , relationships and properties from a PDF file leveraging LLM models. - - Args: - uri: URI of the graph to extract - userName: Username to use for graph creation ( if None will use username from config file ) - password: Password to use for graph creation ( if None will use password from config file ) - file: File object containing the PDF file path to be used - model: Type of model to use ('Gemini Pro' or 'Diffbot') - - Returns: - Json response to API with fileName, nodeCount, relationshipCount, processingTime, - status and model as attributes. - -neoooo - -#### create_source_node_graph(uri, userName, password, file): - - Creates a source node in Neo4jGraph and sets properties. - - Args: - uri: URI of Graph Service to connect to - userName: Username to connect to Graph Service with ( default : None ) - password: Password to connect to Graph Service with ( default : None ) - file: File object with information about file to be added - - Returns: - Success or Failure message of node creation - -neo_workspace - - -#### get_source_list_from_graph(): - - Returns a list of file sources in the database by querying the graph and - sorting the list by the last updated date. - -get_source - -#### Chunk nodes and embeddings creation in Neo4j - -chunking - - -## Application Walkthrough -https://github.com/neo4j-labs/llm-graph-builder/assets/121786590/b725a503-6ade-46d2-9e70-61d57443c311 + +## Usage +1. Connect to Neo4j Aura Instance by passing URI and password or using Neo4j credentials file. +2. Choose your source from a list of Unstructured sources to create graph. +3. Change the LLM (if required) from drop down, which will be used to generate graph. +4. Optionally, define schema(nodes and relationship labels) in entity graph extraction settings. +5. Either select multiple files to 'Generate Graph' or all the files in 'New' status will be processed for graph creation. +6. Have a look at the graph for individial files using 'View' in grid or select one or more files and 'Preview Graph' +7. Ask questions related to the processed/completed sources to chat-bot, Also get detailed information about your answers generated by LLM. ## Links - The Public [ Google cloud Run URL](https://devfrontend-dcavk67s4a-uc.a.run.app). - [Workspace URL](https://workspace-preview.neo4j.io/workspace) +[LLM Knowledge Graph Builder Application](https://llm-graph-builder.neo4jlabs.com/) + +[Neo4j Workspace](https://workspace-preview.neo4j.io/workspace/query) + +## Reference + +[Demo of application](https://www.youtube.com/watch?v=LlNy5VmV290) + +## Contact +For any inquiries or support, feel free to raise [Github Issue](https://github.com/neo4j-labs/llm-graph-builder/issues) + + +## Happy Graph Building! \ No newline at end of file diff --git a/backend/example.env b/backend/example.env index 20574cc6..fe9124bc 100644 --- a/backend/example.env +++ b/backend/example.env @@ -20,4 +20,6 @@ LANGCHAIN_API_KEY = "" LANGCHAIN_PROJECT = "" LANGCHAIN_TRACING_V2 = "" LANGCHAIN_ENDPOINT = "" -GCS_FILE_CACHE = "" #save the file into GCS or local, SHould be True or False \ No newline at end of file +GCS_FILE_CACHE = "" #save the file into GCS or local, SHould be True or False +NEO4J_USER_AGENT = "" +ENABLE_USER_AGENT = "" \ No newline at end of file diff --git a/backend/score.py b/backend/score.py index 70cb1048..abfa5007 100644 --- a/backend/score.py +++ b/backend/score.py @@ -18,6 +18,7 @@ from src.graphDB_dataAccess import graphDBdataAccess from src.graph_query import get_graph_results from src.chunkid_entities import get_entities_from_chunkids +from src.post_processing import create_fulltext from sse_starlette.sse import EventSourceResponse import json from typing import List, Mapping @@ -30,7 +31,9 @@ from google.cloud import logging as gclogger from src.logger import CustomLogger from datetime import datetime +from fastapi.middleware.gzip import GZipMiddleware import time +import gc logger = CustomLogger() CHUNK_DIR = os.path.join(os.path.dirname(__file__), "chunks") @@ -55,6 +58,7 @@ def sick(): allow_methods=["*"], allow_headers=["*"], ) +app.add_middleware(GZipMiddleware, minimum_size=1000) is_gemini_enabled = os.environ.get("GEMINI_ENABLED", "False").lower() in ("true", "1", "yes") if is_gemini_enabled: @@ -97,6 +101,9 @@ async def create_source_knowledge_graph_url( elif source_type == 'gcs bucket': lst_file_name,success_count,failed_count = create_source_node_graph_url_gcs(graph, model, gcs_project_id, gcs_bucket_name, gcs_bucket_folder, source_type,Credentials(access_token) ) + elif source_type == 'web-url': + lst_file_name,success_count,failed_count = await asyncio.to_thread(create_source_node_graph_web_url,graph, model, source_url, source_type + ) elif source_type == 'youtube': lst_file_name,success_count,failed_count = await asyncio.to_thread(create_source_node_graph_url_youtube,graph, model, source_url, source_type ) @@ -107,7 +114,7 @@ async def create_source_knowledge_graph_url( return create_api_response('Failed',message='source_type is other than accepted source') message = f"Source Node created successfully for source type: {source_type} and source: {source}" - josn_obj = {'api_name':'url_scan','db_url':uri,'url_scanned_file':lst_file_name} + josn_obj = {'api_name':'url_scan','db_url':uri,'url_scanned_file':lst_file_name, 'source_url':source_url, 'wiki_query':wiki_query} logger.log_struct(josn_obj) return create_api_response("Success",message=message,success_count=success_count,failed_count=failed_count,file_name=lst_file_name) except Exception as e: @@ -116,6 +123,8 @@ async def create_source_knowledge_graph_url( logging.exception(f'Exception Stack trace:') return create_api_response('Failed',message=message + error_message[:80],error=error_message,file_source=source_type) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'url/scan') @app.post("/extract") @@ -167,6 +176,10 @@ async def extract_knowledge_graph_from_file( elif source_type == 's3 bucket' and source_url: result = await asyncio.to_thread( extract_graph_from_file_s3, graph, model, source_url, aws_access_key_id, aws_secret_access_key, allowedNodes, allowedRelationship) + + elif source_type == 'web-url': + result = await asyncio.to_thread( + extract_graph_from_web_page, graph, model, source_url, allowedNodes, allowedRelationship) elif source_type == 'youtube' and source_url: result = await asyncio.to_thread( @@ -184,6 +197,9 @@ async def extract_knowledge_graph_from_file( if result is not None: result['db_url'] = uri result['api_name'] = 'extract' + result['source_url'] = source_url + result['wiki_query'] = wiki_query + result['source_type'] = source_type logger.log_struct(result) return create_api_response('Success', data=result, file_source= source_type) except Exception as e: @@ -194,15 +210,19 @@ async def extract_knowledge_graph_from_file( if source_type == 'local file': if gcs_file_cache == 'True': folder_name = create_gcs_bucket_folder_name_hashed(uri,file_name) + copy_failed_file(BUCKET_UPLOAD, BUCKET_FAILED_FILE, folder_name, file_name) + time.sleep(5) delete_file_from_gcs(BUCKET_UPLOAD,folder_name,file_name) else: logging.info(f'Deleted File Path: {merged_file_path} and Deleted File Name : {file_name}') delete_uploaded_local_file(merged_file_path,file_name) - josn_obj = {'message':message,'error_message':error_message, 'file_name': file_name,'status':'Failed','db_url':uri,'failed_count':1, 'source_type': source_type} + josn_obj = {'message':message,'error_message':error_message, 'file_name': file_name,'status':'Failed','db_url':uri,'failed_count':1, 'source_type': source_type, 'source_url':source_url, 'wiki_query':wiki_query} logger.log_struct(josn_obj) logging.exception(f'File Failed in extraction: {josn_obj}') return create_api_response('Failed', message=message + error_message[:100], error=error_message, file_name = file_name) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'extract') @app.get("/sources_list") @@ -225,41 +245,51 @@ async def get_source_list(uri:str, userName:str, password:str, database:str=None logging.exception(f'Exception:{error_message}') return create_api_response(job_status, message=message, error=error_message) -@app.post("/update_similarity_graph") -async def update_similarity_graph(uri=Form(None), userName=Form(None), password=Form(None), database=Form(None)): - """ - Calls 'update_graph' which post the query to update the similiar nodes in the graph - """ +@app.post("/post_processing") +async def post_processing(uri=Form(None), userName=Form(None), password=Form(None), database=Form(None), tasks=Form(None)): try: graph = create_graph_database_connection(uri, userName, password, database) - await asyncio.to_thread(update_graph, graph) - - josn_obj = {'api_name':'update_similarity_graph','db_url':uri} - logger.log_struct(josn_obj) - return create_api_response('Success',message='Updated KNN Graph') + tasks = set(map(str.strip, json.loads(tasks))) + + if "update_similarity_graph" in tasks: + await asyncio.to_thread(update_graph, graph) + josn_obj = {'api_name': 'post_processing/update_similarity_graph', 'db_url': uri} + logger.log_struct(josn_obj) + logging.info(f'Updated KNN Graph') + if "create_fulltext_index" in tasks: + await asyncio.to_thread(create_fulltext, uri=uri, username=userName, password=password, database=database) + josn_obj = {'api_name': 'post_processing/create_fulltext_index', 'db_url': uri} + logger.log_struct(josn_obj) + logging.info(f'Full Text index created') + + return create_api_response('Success', message='All tasks completed successfully') + except Exception as e: job_status = "Failed" - message="Unable to update KNN Graph" error_message = str(e) - logging.exception(f'Exception in update KNN graph:{error_message}') + message = f"Unable to complete tasks" + logging.exception(f'Exception in post_processing tasks: {error_message}') return create_api_response(job_status, message=message, error=error_message) + finally: - close_db_connection(graph, 'update_similarity_graph') + gc.collect() + if graph is not None: + close_db_connection(graph, 'post_processing') @app.post("/chat_bot") -async def chat_bot(uri=Form(None),model=Form(None),userName=Form(None), password=Form(None), database=Form(None),question=Form(None), session_id=Form(None)): +async def chat_bot(uri=Form(None),model=Form(None),userName=Form(None), password=Form(None), database=Form(None),question=Form(None), session_id=Form(None),mode=Form(None)): logging.info(f"QA_RAG called at {datetime.now()}") qa_rag_start_time = time.time() try: # database = "neo4j" graph = create_graph_database_connection(uri, userName, password, database) - result = await asyncio.to_thread(QA_RAG,graph=graph,model=model,question=question,session_id=session_id) + result = await asyncio.to_thread(QA_RAG,graph=graph,model=model,question=question,session_id=session_id,mode=mode) total_call_time = time.time() - qa_rag_start_time logging.info(f"Total Response time is {total_call_time:.2f} seconds") result["info"]["response_time"] = round(total_call_time, 2) - josn_obj = {'api_name':'chat_bot','db_url':uri} + josn_obj = {'api_name':'chat_bot','db_url':uri,'session_id':session_id} logger.log_struct(josn_obj) return create_api_response('Success',data=result) except Exception as e: @@ -268,11 +298,13 @@ async def chat_bot(uri=Form(None),model=Form(None),userName=Form(None), password error_message = str(e) logging.exception(f'Exception in chat bot:{error_message}') return create_api_response(job_status, message=message, error=error_message) + finally: + gc.collect() @app.post("/chunk_entities") async def chunk_entities(uri=Form(None),userName=Form(None), password=Form(None), chunk_ids=Form(None)): try: - logging.info(f"URI: {uri}, Username: {userName},password:{password}, chunk_ids: {chunk_ids}") + logging.info(f"URI: {uri}, Username: {userName}, chunk_ids: {chunk_ids}") result = await asyncio.to_thread(get_entities_from_chunkids,uri=uri, username=userName, password=password, chunk_ids=chunk_ids) josn_obj = {'api_name':'chunk_entities','db_url':uri} logger.log_struct(josn_obj) @@ -283,6 +315,8 @@ async def chunk_entities(uri=Form(None),userName=Form(None), password=Form(None) error_message = str(e) logging.exception(f'Exception in chat bot:{error_message}') return create_api_response(job_status, message=message, error=error_message) + finally: + gc.collect() @app.post("/graph_query") async def graph_query( @@ -302,7 +336,7 @@ async def graph_query( query_type=query_type, document_names=document_names ) - josn_obj = {'api_name':'graph_query','db_url':uri} + josn_obj = {'api_name':'graph_query','db_url':uri,'document_names':document_names} logger.log_struct(josn_obj) return create_api_response('Success', data=result) except Exception as e: @@ -311,6 +345,9 @@ async def graph_query( error_message = str(e) logging.exception(f'Exception in graph query: {error_message}') return create_api_response(job_status, message=message, error=error_message) + finally: + gc.collect() + @app.post("/clear_chat_bot") async def clear_chat_bot(uri=Form(None),userName=Form(None), password=Form(None), database=Form(None), session_id=Form(None)): @@ -325,6 +362,8 @@ async def clear_chat_bot(uri=Form(None),userName=Form(None), password=Form(None) logging.exception(f'Exception in chat bot:{error_message}') return create_api_response(job_status, message=message, error=error_message) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'clear_chat_bot') @app.post("/connect") @@ -363,6 +402,8 @@ async def upload_large_file_into_chunks(file:UploadFile = File(...), chunkNumber logging.exception(f'Exception:{error_message}') return create_api_response('Failed', message=message + error_message[:100], error=error_message, file_name = originalname) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'upload') @app.post("/schema") @@ -381,6 +422,8 @@ async def get_structured_schema(uri=Form(None), userName=Form(None), password=Fo logging.exception(f'Exception:{error_message}') return create_api_response("Failed", message=message, error=error_message) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'schema') def decode_password(pwd): @@ -424,13 +467,13 @@ async def generate(): return EventSourceResponse(generate(),ping=60) @app.post("/delete_document_and_entities") -async def delete_document_and_entities(uri=Form(None), - userName=Form(None), - password=Form(None), - database=Form(None), - filenames=Form(None), - source_types=Form(None), - deleteEntities=Form(None)): +async def delete_document_and_entities(uri=Form(), + userName=Form(), + password=Form(), + database=Form(), + filenames=Form(), + source_types=Form(), + deleteEntities=Form()): try: graph = create_graph_database_connection(uri, userName, password, database) graphDb_data_Access = graphDBdataAccess(graph) @@ -447,6 +490,8 @@ async def delete_document_and_entities(uri=Form(None), logging.exception(f'{message}:{error_message}') return create_api_response(job_status, message=message, error=error_message) finally: + gc.collect() + if graph is not None: close_db_connection(graph, 'delete_document_and_entities') @app.get('/document_status/{file_name}') @@ -497,7 +542,9 @@ async def cancelled_job(uri=Form(None), userName=Form(None), password=Form(None) logging.exception(f'Exception in cancelling the running job:{error_message}') return create_api_response(job_status, message=message, error=error_message) finally: - close_db_connection(graph, 'cancelled_job') + gc.collect() + if graph is not None: + close_db_connection(graph, 'cancelled_job') @app.post("/populate_graph_schema") async def populate_graph_schema(input_text=Form(None), model=Form(None), is_schema_description_checked=Form(None)): @@ -510,6 +557,44 @@ async def populate_graph_schema(input_text=Form(None), model=Form(None), is_sche error_message = str(e) logging.exception(f'Exception in getting the schema from text:{error_message}') return create_api_response(job_status, message=message, error=error_message) + finally: + gc.collect() + +@app.post("/get_unconnected_nodes_list") +async def get_unconnected_nodes_list(uri=Form(), userName=Form(), password=Form(), database=Form()): + try: + graph = create_graph_database_connection(uri, userName, password, database) + graphDb_data_Access = graphDBdataAccess(graph) + result = graphDb_data_Access.list_unconnected_nodes() + return create_api_response('Success',data=result) + except Exception as e: + job_status = "Failed" + message="Unable to get the list of unconnected nodes" + error_message = str(e) + logging.exception(f'Exception in getting list of unconnected nodes:{error_message}') + return create_api_response(job_status, message=message, error=error_message) + finally: + if graph is not None: + close_db_connection(graph,"get_unconnected_nodes_list") + gc.collect() + +@app.post("/delete_unconnected_nodes") +async def get_unconnected_nodes_list(uri=Form(), userName=Form(), password=Form(), database=Form(),unconnected_entities_list=Form()): + try: + graph = create_graph_database_connection(uri, userName, password, database) + graphDb_data_Access = graphDBdataAccess(graph) + result = graphDb_data_Access.delete_unconnected_nodes(unconnected_entities_list) + return create_api_response('Success',data=result,message="Unconnected entities delete successfully") + except Exception as e: + job_status = "Failed" + message="Unable to delete the unconnected nodes" + error_message = str(e) + logging.exception(f'Exception in delete the unconnected nodes:{error_message}') + return create_api_response(job_status, message=message, error=error_message) + finally: + if graph is not None: + close_db_connection(graph,"delete_unconnected_nodes") + gc.collect() if __name__ == "__main__": uvicorn.run(app) \ No newline at end of file diff --git a/backend/src/QA_integration_new.py b/backend/src/QA_integration_new.py index 8a706369..20347d07 100644 --- a/backend/src/QA_integration_new.py +++ b/backend/src/QA_integration_new.py @@ -2,9 +2,6 @@ from langchain.graphs import Neo4jGraph import os from dotenv import load_dotenv -from langchain_openai import ChatOpenAI -from langchain_google_vertexai import ChatVertexAI -from langchain_google_vertexai import HarmBlockThreshold, HarmCategory import logging from langchain_community.chat_message_histories import Neo4jChatMessageHistory from src.shared.common_fn import load_embedding_model, get_llm @@ -28,74 +25,13 @@ EMBEDDING_MODEL = os.getenv('EMBEDDING_MODEL') EMBEDDING_FUNCTION , _ = load_embedding_model(EMBEDDING_MODEL) -RETRIEVAL_QUERY = """ -WITH node as chunk, score -MATCH (chunk)-[:PART_OF]->(d:Document) -CALL { WITH chunk -MATCH (chunk)-[:HAS_ENTITY]->(e) -MATCH path=(e)(()-[rels:!HAS_ENTITY&!PART_OF]-()){0,2}(:!Chunk&!Document) -UNWIND rels as r -RETURN collect(distinct r) as rels -} -WITH d, collect(distinct chunk) as chunks, avg(score) as score, apoc.coll.toSet(apoc.coll.flatten(collect(rels))) as rels -WITH d, score, -[c in chunks | c.text] as texts, [c in chunks | c.id] as chunkIds, [c in chunks | c.start_time] as start_time, [c in chunks | c.page_number] as page_numbers, [c in chunks | c.start_time] as start_times, -[r in rels | coalesce(apoc.coll.removeAll(labels(startNode(r)),['__Entity__'])[0],"") +":"+ startNode(r).id + " "+ type(r) + " " + coalesce(apoc.coll.removeAll(labels(endNode(r)),['__Entity__'])[0],"") +":" + endNode(r).id] as entities -WITH d, score, -apoc.text.join(texts,"\n----\n") + -apoc.text.join(entities,"\n") -as text, entities, chunkIds, page_numbers ,start_times -RETURN text, score, {source: COALESCE(CASE WHEN d.url CONTAINS "None" THEN d.fileName ELSE d.url END, d.fileName), chunkIds:chunkIds, page_numbers:page_numbers,start_times:start_times,entities:entities} as metadata -""" - -SYSTEM_TEMPLATE = """ -You are an AI-powered question-answering agent. Your task is to provide accurate and comprehensive responses to user queries based on the given context, chat history, and available resources. - -### Response Guidelines: -1. **Direct Answers**: Provide clear and thorough answers to the user's queries without headers unless requested. Avoid speculative responses. -2. **Utilize History and Context**: Leverage relevant information from previous interactions, the current user input, and the context provided below. -3. **No Greetings in Follow-ups**: Start with a greeting in initial interactions. Avoid greetings in subsequent responses unless there's a significant break or the chat restarts. -4. **Admit Unknowns**: Clearly state if an answer is unknown. Avoid making unsupported statements. -5. **Avoid Hallucination**: Only provide information based on the context provided. Do not invent information. -6. **Response Length**: Keep responses concise and relevant. Aim for clarity and completeness within 4-5 sentences unless more detail is requested. -7. **Tone and Style**: Maintain a professional and informative tone. Be friendly and approachable. -8. **Error Handling**: If a query is ambiguous or unclear, ask for clarification rather than providing a potentially incorrect answer. -9. **Fallback Options**: If the required information is not available in the provided context, provide a polite and helpful response. Example: "I don't have that information right now." or "I'm sorry, but I don't have that information. Is there something else I can help with?" -10. **Context Availability**: If the context is empty, do not provide answers based solely on internal knowledge. Instead, respond appropriately by indicating the lack of information. - - -**IMPORTANT** : DO NOT ANSWER FROM YOUR KNOWLEDGE BASE USE THE BELOW CONTEXT - -### Context: - -{context} - - -### Example Responses: -User: Hi -AI Response: 'Hello there! How can I assist you today?' - -User: "What is Langchain?" -AI Response: "Langchain is a framework that enables the development of applications powered by large language models, such as chatbots. It simplifies the integration of language models into various applications by providing useful tools and components." - -User: "Can you explain how to use memory management in Langchain?" -AI Response: "Langchain's memory management involves utilizing built-in mechanisms to manage conversational context effectively. It ensures that the conversation remains coherent and relevant by maintaining the history of interactions and using it to inform responses." - -User: "I need help with PyCaret's classification model." -AI Response: "PyCaret simplifies the process of building and deploying machine learning models. For classification tasks, you can use PyCaret's setup function to prepare your data. After setup, you can compare multiple models to find the best one, and then fine-tune it for better performance." - -User: "What can you tell me about the latest realtime trends in AI?" -AI Response: "I don't have that information right now. Is there something else I can help with?" - -Note: This system does not generate answers based solely on internal knowledge. It answers from the information provided in the user's current and previous inputs, and from the context. -""" - -def get_neo4j_retriever(graph, index_name="vector", search_k=CHAT_SEARCH_KWARG_K, score_threshold=CHAT_SEARCH_KWARG_SCORE_THRESHOLD): + +def get_neo4j_retriever(graph, retrieval_query,index_name="vector", search_k=CHAT_SEARCH_KWARG_K, score_threshold=CHAT_SEARCH_KWARG_SCORE_THRESHOLD): try: neo_db = Neo4jVector.from_existing_index( embedding=EMBEDDING_FUNCTION, index_name=index_name, - retrieval_query=RETRIEVAL_QUERY, + retrieval_query=retrieval_query, graph=graph ) logging.info(f"Successfully retrieved Neo4jVector index '{index_name}'") @@ -107,20 +43,16 @@ def get_neo4j_retriever(graph, index_name="vector", search_k=CHAT_SEARCH_KWARG_K return None def create_document_retriever_chain(llm,retriever): - question_template= "Given the below conversation, generate a search query to look up in order to get information relevant to the conversation. Only respond with the query, nothing else." - query_transform_prompt = ChatPromptTemplate.from_messages( [ - ("system", question_template), + ("system", QUESTION_TRANSFORM_TEMPLATE), MessagesPlaceholder(variable_name="messages") ] ) output_parser = StrOutputParser() - splitter = TokenTextSplitter(chunk_size=2000, chunk_overlap=0) - # extractor = LLMChainExtractor.from_llm(llm) - # redundant_filter = EmbeddingsRedundantFilter(embeddings=EMBEDDING_FUNCTION) - embeddings_filter = EmbeddingsFilter(embeddings=EMBEDDING_FUNCTION, similarity_threshold=0.25) + splitter = TokenTextSplitter(chunk_size=CHAT_DOC_SPLIT_SIZE, chunk_overlap=0) + embeddings_filter = EmbeddingsFilter(embeddings=EMBEDDING_FUNCTION, similarity_threshold=CHAT_EMBEDDING_FILTER_SCORE_THRESHOLD) pipeline_compressor = DocumentCompressorPipeline( transformers=[splitter, embeddings_filter] @@ -157,9 +89,14 @@ def create_neo4j_chat_message_history(graph, session_id): logging.error(f"Error creating Neo4jChatMessageHistory: {e}") return None -def format_documents(documents): +def format_documents(documents,model): + prompt_token_cutoff = 4 + for models,value in CHAT_TOKEN_CUT_OFF.items(): + if model in models: + prompt_token_cutoff = value + sorted_documents = sorted(documents, key=lambda doc: doc.state["query_similarity_score"], reverse=True) - sorted_documents = sorted_documents[:7] + sorted_documents = sorted_documents[:prompt_token_cutoff] formatted_docs = [] sources = set() @@ -178,7 +115,7 @@ def format_documents(documents): return "\n\n".join(formatted_docs), sources -def get_rag_chain(llm,system_template=SYSTEM_TEMPLATE): +def get_rag_chain(llm,system_template=CHAT_SYSTEM_TEMPLATE): question_answering_prompt = ChatPromptTemplate.from_messages( [ ("system", system_template), @@ -193,54 +130,26 @@ def get_rag_chain(llm,system_template=SYSTEM_TEMPLATE): return question_answering_chain -def update_timestamps_with_min_seconds(result_dict): - def time_to_seconds(time_str): - h, m, s = map(int, time_str.split(':')) - return h * 3600 + m * 60 + s - - for source in result_dict.get('sources', []): - time_stamps = source.get('start_time', []) - if time_stamps: - seconds_list = [time_to_seconds(ts) for ts in time_stamps] - min_seconds = min(seconds_list) - source['start_time'] = min_seconds - - return result_dict - def get_sources_and_chunks(sources_used, docs): - docs_metadata = dict() + chunkdetails_list = [] + sources_used_set = set(sources_used) + for doc in docs: source = doc.metadata["source"] - chunkids = doc.metadata["chunkIds"] - page_numbers = doc.metadata["page_numbers"] - start_times = doc.metadata["start_times"] - docs_metadata[source] = [chunkids,page_numbers,start_times] - chunkids = list() - output_sources = list() - for source in sources_used: - if source in set(docs_metadata.keys()): - chunkids.extend(docs_metadata[source][0]) - page_numbers = docs_metadata[source][1] - start_times = docs_metadata[source][2] - current_source = { - "source_name":source, - "page_numbers":page_numbers if len(page_numbers) > 1 and page_numbers[0] is not None else [], - "start_time": start_times if len(start_times) > 1 and start_times[0] is not None else [], - } - output_sources.append(current_source) + chunkdetails = doc.metadata["chunkdetails"] + if source in sources_used_set: + chunkdetails = [{**chunkdetail, "score": round(chunkdetail["score"], 4)} for chunkdetail in chunkdetails] + chunkdetails_list.extend(chunkdetails) result = { - 'sources': output_sources, - 'chunkIds': chunkids + 'sources': sources_used, + 'chunkdetails': chunkdetails_list } - - result = update_timestamps_with_min_seconds(result) return result def summarize_messages(llm,history,stored_messages): if len(stored_messages) == 0: return False - # summarization_template = "Distill the below chat messages into a single summary message. Include as many specific details as you can." summarization_prompt = ChatPromptTemplate.from_messages( [ MessagesPlaceholder(variable_name="chat_history"), @@ -273,75 +182,98 @@ def clear_chat_history(graph,session_id): "user": "chatbot" } -def QA_RAG(graph,model,question,session_id): +def setup_chat(model, graph, session_id, retrieval_query): + start_time = time.time() + model_version = MODEL_VERSIONS[model] + llm = get_llm(model_version) + retriever = get_neo4j_retriever(graph=graph,retrieval_query=retrieval_query) + doc_retriever = create_document_retriever_chain(llm, retriever) + history = create_neo4j_chat_message_history(graph, session_id) + chat_setup_time = time.time() - start_time + logging.info(f"Chat setup completed in {chat_setup_time:.2f} seconds") + + return llm, doc_retriever, history, model_version + +def retrieve_documents(doc_retriever, messages): + start_time = time.time() + docs = doc_retriever.invoke({"messages": messages}) + doc_retrieval_time = time.time() - start_time + logging.info(f"Documents retrieved in {doc_retrieval_time:.2f} seconds") + return docs + +def process_documents(docs, question, messages, llm,model): + start_time = time.time() + formatted_docs, sources = format_documents(docs,model) + rag_chain = get_rag_chain(llm=llm) + ai_response = rag_chain.invoke({ + "messages": messages[:-1], + "context": formatted_docs, + "input": question + }) + result = get_sources_and_chunks(sources, docs) + content = ai_response.content + + if "gemini" in model: + total_tokens = ai_response.response_metadata['usage_metadata']['prompt_token_count'] + else: + total_tokens = ai_response.response_metadata['token_usage']['total_tokens'] + + predict_time = time.time() - start_time + logging.info(f"Final Response predicted in {predict_time:.2f} seconds") + + return content, result, total_tokens + +def summarize_and_log(history, messages, llm): + start_time = time.time() + summarize_messages(llm, history, messages) + history_summarized_time = time.time() - start_time + logging.info(f"Chat History summarized in {history_summarized_time:.2f} seconds") + +def QA_RAG(graph, model, question, session_id, mode): try: - start_time = time.time() - print(model) - model_version = MODEL_VERSIONS[model] - llm = get_llm(model_version) - retriever = get_neo4j_retriever(graph=graph) - doc_retriever = create_document_retriever_chain(llm,retriever) - history = create_neo4j_chat_message_history(graph,session_id ) - chat_setup_time = time.time() - start_time - logging.info(f"Chat setup completed in {chat_setup_time:.2f} seconds") - - start_time = time.time() + logging.info(f"Chat Mode : {mode}") + if mode == "vector": + retrieval_query = VECTOR_SEARCH_QUERY + elif mode == "graph": + #WIP + result = { + "session_id": session_id, + "user": "chatbot" + } + return result + else: + retrieval_query = VECTOR_GRAPH_SEARCH_QUERY + + llm, doc_retriever, history, model_version = setup_chat(model, graph, session_id, retrieval_query) messages = history.messages user_question = HumanMessage(content=question) messages.append(user_question) - docs = doc_retriever.invoke( - { - "messages":messages - } - ) + + docs = retrieve_documents(doc_retriever, messages) + if docs: - # print(docs) - formatted_docs,sources = format_documents(docs) - - doc_retrieval_time = time.time() - start_time - logging.info(f"Modified question and Documents retrieved in {doc_retrieval_time:.2f} seconds") - - start_time = time.time() - rag_chain = get_rag_chain(llm=llm) - ai_response = rag_chain.invoke( - { - "messages" : messages[:-1], - "context" : formatted_docs, - "input" : question - } - ) - result = get_sources_and_chunks(sources,docs) - content = ai_response.content - if "Gemini" in model: - total_tokens = ai_response.response_metadata['usage_metadata']['prompt_token_count'] - else: - total_tokens = ai_response.response_metadata['token_usage']['total_tokens'] - predict_time = time.time() - start_time - logging.info(f"Final Response predicted in {predict_time:.2f} seconds") + content, result, total_tokens = process_documents(docs, question, messages, llm,model) else: - ai_response = AIMessage(content="I couldn't find any relevant documents to answer your question.") - result = {"sources": [], "chunkIds": []} + content = "I couldn't find any relevant documents to answer your question." + result = {"sources": [], "chunkdetails": []} total_tokens = 0 - content = ai_response.content - - start_time = time.time() + + ai_response = AIMessage(content=content) messages.append(ai_response) - summarize_messages(llm,history,messages) - history_summarized_time = time.time() - start_time - logging.info(f"Chat History summarized in {history_summarized_time:.2f} seconds") - + summarize_and_log(history, messages, llm) + return { "session_id": session_id, "message": content, "info": { "sources": result["sources"], "model": model_version, - "chunkids":result["chunkIds"], + "chunkdetails": result["chunkdetails"], "total_tokens": total_tokens, "response_time": 0 }, "user": "chatbot" - } + } except Exception as e: logging.exception(f"Exception in QA component at {datetime.now()}: {str(e)}") @@ -354,4 +286,5 @@ def QA_RAG(graph,model,question,session_id): "chunkids": [], "error": f"{error_name} :- {str(e)}" }, - "user": "chatbot"} + "user": "chatbot" + } diff --git a/backend/src/chunkid_entities.py b/backend/src/chunkid_entities.py index aeaf6659..9785403a 100644 --- a/backend/src/chunkid_entities.py +++ b/backend/src/chunkid_entities.py @@ -102,14 +102,23 @@ def get_entities_from_chunkids(uri, username, password, chunk_ids): """ try: logging.info(f"Starting graph query process for chunk ids") - chunk_ids_list = chunk_ids.split(",") - driver = get_graphDB_driver(uri, username, password) - records, summary, keys = driver.execute_query(CHUNK_QUERY, chunksIds=chunk_ids_list) - result = process_records(records) - logging.info(f"Nodes and relationships are processed") - result["chunk_data"] = process_chunk_data(records) - logging.info(f"Query process completed successfully for chunk ids") - return result + if chunk_ids: + chunk_ids_list = chunk_ids.split(",") + driver = get_graphDB_driver(uri, username, password) + records, summary, keys = driver.execute_query(CHUNK_QUERY, chunksIds=chunk_ids_list) + result = process_records(records) + logging.info(f"Nodes and relationships are processed") + result["chunk_data"] = process_chunk_data(records) + logging.info(f"Query process completed successfully for chunk ids") + return result + else: + logging.info(f"chunkid_entities module: No chunk ids are passed") + result = { + "nodes": [], + "relationships": [], + "chunk_data":[] + } + return result except Exception as e: logging.error(f"chunkid_entities module: An error occurred in get_entities_from_chunkids. Error: {str(e)}") diff --git a/backend/src/document_sources/gcs_bucket.py b/backend/src/document_sources/gcs_bucket.py index 7c5dc4a5..5d8ba90c 100644 --- a/backend/src/document_sources/gcs_bucket.py +++ b/backend/src/document_sources/gcs_bucket.py @@ -139,3 +139,14 @@ def delete_file_from_gcs(bucket_name,folder_name, file_name): logging.info('File deleted from GCS successfully') except Exception as e: raise Exception(e) + +def copy_failed_file(source_bucket_name,dest_bucket_name,folder_name, file_name): + try: + storage_client = storage.Client() + bucket = storage_client.bucket(source_bucket_name) + folder_file_name = folder_name +'/'+file_name + source_blob = bucket.blob(folder_file_name) + bucket.copy_blob(source_blob,dest_bucket_name,file_name) + logging.info(f'Failed file {file_name} copied to {dest_bucket_name} from {source_bucket_name} in GCS successfully') + except Exception as e: + raise Exception(e) diff --git a/backend/src/document_sources/web_pages.py b/backend/src/document_sources/web_pages.py new file mode 100644 index 00000000..39f2fb85 --- /dev/null +++ b/backend/src/document_sources/web_pages.py @@ -0,0 +1,16 @@ +import logging +from langchain_community.document_loaders import WebBaseLoader +from src.api_response import create_api_response + +def get_documents_from_web_page(source_url:str): + try: + pages = WebBaseLoader(source_url).load() + file_name = pages[0].metadata['title'] + return file_name, pages + except Exception as e: + job_status = "Failed" + message="Failed To Process Web URL" + error_message = str(e) + logging.error(f"Failed To Process Web URL: {file_name}") + logging.exception(f'Exception Stack trace: {error_message}') + return create_api_response(job_status,message=message,error=error_message,file_name=file_name) \ No newline at end of file diff --git a/backend/src/graphDB_dataAccess.py b/backend/src/graphDB_dataAccess.py index 3c0ec191..367de329 100644 --- a/backend/src/graphDB_dataAccess.py +++ b/backend/src/graphDB_dataAccess.py @@ -213,4 +213,25 @@ def delete_file_from_graph(self, filenames, source_types, deleteEntities:str, me result = self.execute_query(query_to_delete_document, param) logging.info(f"Deleting {len(filename_list)} documents = '{filename_list}' from '{source_types_list}' with their entities from database") - return result, len(filename_list) \ No newline at end of file + return result, len(filename_list) + + def list_unconnected_nodes(self): + query = """ + MATCH (e:!Chunk&!Document) + WHERE NOT exists { (e)--(:!Chunk&!Document) } + OPTIONAL MATCH (doc:Document)<-[:PART_OF]-(c:Chunk)-[:HAS_ENTITY]->(e) + RETURN e {.*, embedding:null, elementId:elementId(e), labels:labels(e)} as e, + collect(distinct doc.fileName) as documents, count(distinct c) as chunkConnections + ORDER BY e.id ASC + LIMIT 100 + """ + return self.execute_query(query) + + def delete_unconnected_nodes(self,unconnected_entities_list): + entities_list = list(map(str.strip, json.loads(unconnected_entities_list))) + query = """ + MATCH (e) WHERE elementId(e) IN $elementIds + DETACH DELETE e + """ + param = {"elementIds":entities_list} + return self.execute_query(query,param) \ No newline at end of file diff --git a/backend/src/graph_query.py b/backend/src/graph_query.py index 4a321db1..dcce6fad 100644 --- a/backend/src/graph_query.py +++ b/backend/src/graph_query.py @@ -55,7 +55,11 @@ def get_graphDB_driver(uri, username, password): """ try: logging.info(f"Attempting to connect to the Neo4j database at {uri}") - driver = GraphDatabase.driver(uri, auth=(username, password), user_agent=os.environ.get('NEO4J_USER_AGENT')) + enable_user_agent = os.environ.get("ENABLE_USER_AGENT", "False").lower() in ("true", "1", "yes") + if enable_user_agent: + driver = GraphDatabase.driver(uri, auth=(username, password), user_agent=os.environ.get('NEO4J_USER_AGENT')) + else: + driver = GraphDatabase.driver(uri, auth=(username, password)) logging.info("Connection successful") return driver except Exception as e: diff --git a/backend/src/main.py b/backend/src/main.py index f51a334a..34adacb0 100644 --- a/backend/src/main.py +++ b/backend/src/main.py @@ -15,8 +15,9 @@ from src.document_sources.youtube import * from src.shared.common_fn import * from src.make_relationships import * +from src.document_sources.web_pages import * import re -from langchain_community.document_loaders import WikipediaLoader +from langchain_community.document_loaders import WikipediaLoader, WebBaseLoader import warnings from pytube import YouTube import sys @@ -96,6 +97,32 @@ def create_source_node_graph_url_gcs(graph, model, gcs_project_id, gcs_bucket_na 'gcsBucketName': gcs_bucket_name, 'gcsBucketFolder':obj_source_node.gcsBucketFolder, 'gcsProjectId':obj_source_node.gcsProjectId}) return lst_file_name,success_count,failed_count +def create_source_node_graph_web_url(graph, model, source_url, source_type): + success_count=0 + failed_count=0 + lst_file_name = [] + pages = WebBaseLoader(source_url, verify_ssl=False).load() + if pages==None or len(pages)==0: + failed_count+=1 + message = f"Unable to read data for given url : {source_url}" + raise Exception(message) + obj_source_node = sourceNode() + obj_source_node.file_type = 'text' + obj_source_node.file_source = source_type + obj_source_node.model = model + obj_source_node.total_pages = 1 + obj_source_node.url = urllib.parse.unquote(source_url) + obj_source_node.created_at = datetime.now() + obj_source_node.file_name = pages[0].metadata['title'] + obj_source_node.language = pages[0].metadata['language'] + obj_source_node.file_size = sys.getsizeof(pages[0].page_content) + + graphDb_data_Access = graphDBdataAccess(graph) + graphDb_data_Access.create_source_node(obj_source_node) + lst_file_name.append({'fileName':obj_source_node.file_name,'fileSize':obj_source_node.file_size,'url':obj_source_node.url,'status':'Success'}) + success_count+=1 + return lst_file_name,success_count,failed_count + def create_source_node_graph_url_youtube(graph, model, source_url, source_type): youtube_url, language = check_url_source(source_type=source_type, yt_url=source_url) @@ -110,7 +137,7 @@ def create_source_node_graph_url_youtube(graph, model, source_url, source_type): obj_source_node.url = youtube_url obj_source_node.created_at = datetime.now() match = re.search(r'(?:v=)([0-9A-Za-z_-]{11})\s*',obj_source_node.url) - logging.info(f"match value{match}") + logging.info(f"match value: {match}") obj_source_node.file_name = YouTube(obj_source_node.url).title transcript= get_youtube_combined_transcript(match.group(1)) if transcript==None or len(transcript)==0: @@ -165,7 +192,7 @@ def extract_graph_from_file_local_file(graph, model, merged_file_path, fileName, else: file_name, pages, file_extension = get_documents_from_file_by_path(merged_file_path,fileName) if pages==None or len(pages)==0: - raise Exception(f'Pdf content is not available for file : {file_name}') + raise Exception(f'File content is not available for file : {file_name}') return processing_source(graph, model, file_name, pages, allowedNodes, allowedRelationship, True, merged_file_path, uri) @@ -178,7 +205,16 @@ def extract_graph_from_file_s3(graph, model, source_url, aws_access_key_id, aws_ file_name, pages = get_documents_from_s3(source_url, aws_access_key_id, aws_secret_access_key) if pages==None or len(pages)==0: - raise Exception(f'Pdf content is not available for file : {file_name}') + raise Exception(f'File content is not available for file : {file_name}') + + return processing_source(graph, model, file_name, pages, allowedNodes, allowedRelationship) + +def extract_graph_from_web_page(graph, model, source_url, allowedNodes, allowedRelationship): + + file_name, pages = get_documents_from_web_page(source_url) + + if pages==None or len(pages)==0: + raise Exception(f'Content is not available for given URL : {file_name}') return processing_source(graph, model, file_name, pages, allowedNodes, allowedRelationship) @@ -203,7 +239,7 @@ def extract_graph_from_file_gcs(graph, model, gcs_project_id, gcs_bucket_name, g file_name, pages = get_documents_from_gcs(gcs_project_id, gcs_bucket_name, gcs_bucket_folder, gcs_blob_filename, access_token) if pages==None or len(pages)==0: - raise Exception(f'Pdf content is not available for file : {file_name}') + raise Exception(f'File content is not available for file : {file_name}') return processing_source(graph, model, file_name, pages, allowedNodes, allowedRelationship) @@ -239,7 +275,7 @@ def processing_source(graph, model, file_name, pages, allowedNodes, allowedRelat pages[i]=Document(page_content=str(text), metadata=pages[i].metadata) create_chunks_obj = CreateChunksofDocument(pages, graph) chunks = create_chunks_obj.split_file_into_chunks() - + chunkId_chunkDoc_list = create_relation_between_chunks(graph,file_name,chunks) if result[0]['Status'] != 'Processing': obj_source_node = sourceNode() status = "Processing" @@ -259,12 +295,12 @@ def processing_source(graph, model, file_name, pages, allowedNodes, allowedRelat job_status = "Completed" node_count = 0 rel_count = 0 - for i in range(0, len(chunks), update_graph_chunk_processed): + for i in range(0, len(chunkId_chunkDoc_list), update_graph_chunk_processed): select_chunks_upto = i+update_graph_chunk_processed logging.info(f'Selected Chunks upto: {select_chunks_upto}') - if len(chunks) <= select_chunks_upto: - select_chunks_upto = len(chunks) - selected_chunks = chunks[i:select_chunks_upto] + if len(chunkId_chunkDoc_list) <= select_chunks_upto: + select_chunks_upto = len(chunkId_chunkDoc_list) + selected_chunks = chunkId_chunkDoc_list[i:select_chunks_upto] result = graphDb_data_Access.get_current_status_document_node(file_name) is_cancelled_status = result[0]['is_cancelled'] logging.info(f"Value of is_cancelled : {result[0]['is_cancelled']}") @@ -326,8 +362,7 @@ def processing_source(graph, model, file_name, pages, allowedNodes, allowedRelat else: logging.info('File does not process because it\'s already in Processing status') -def processing_chunks(chunks,graph,file_name,model,allowedNodes,allowedRelationship, node_count, rel_count): - chunkId_chunkDoc_list = create_relation_between_chunks(graph,file_name,chunks) +def processing_chunks(chunkId_chunkDoc_list,graph,file_name,model,allowedNodes,allowedRelationship, node_count, rel_count): #create vector index and update chunk node with embedding update_embedding_create_vector_index( graph, chunkId_chunkDoc_list, file_name) logging.info("Get graph document list from models") diff --git a/backend/src/post_processing.py b/backend/src/post_processing.py new file mode 100644 index 00000000..60c202d2 --- /dev/null +++ b/backend/src/post_processing.py @@ -0,0 +1,58 @@ +from neo4j import GraphDatabase +import logging +import time + + +DROP_INDEX_QUERY = "DROP INDEX entities IF EXISTS;" +LABELS_QUERY = "CALL db.labels()" +FULL_TEXT_QUERY = "CREATE FULLTEXT INDEX entities FOR (n{labels_str}) ON EACH [n.id, n.description];" +FILTER_LABELS = ["Chunk","Document"] + +def create_fulltext(uri, username, password, database): + start_time = time.time() + logging.info("Starting the process of creating a full-text index.") + + try: + driver = GraphDatabase.driver(uri, auth=(username, password), database=database) + driver.verify_connectivity() + logging.info("Database connectivity verified.") + except Exception as e: + logging.error(f"Failed to create a database driver or verify connectivity: {e}") + return + + try: + with driver.session() as session: + try: + start_step = time.time() + session.run(DROP_INDEX_QUERY) + logging.info(f"Dropped existing index (if any) in {time.time() - start_step:.2f} seconds.") + except Exception as e: + logging.error(f"Failed to drop index: {e}") + return + try: + start_step = time.time() + result = session.run(LABELS_QUERY) + labels = [record["label"] for record in result] + + for label in FILTER_LABELS: + if label in labels: + labels.remove(label) + + labels_str = ":" + "|".join([f"`{label}`" for label in labels]) + logging.info(f"Fetched labels in {time.time() - start_step:.2f} seconds.") + except Exception as e: + logging.error(f"Failed to fetch labels: {e}") + return + try: + start_step = time.time() + session.run(FULL_TEXT_QUERY.format(labels_str=labels_str)) + logging.info(f"Created full-text index in {time.time() - start_step:.2f} seconds.") + except Exception as e: + logging.error(f"Failed to create full-text index: {e}") + return + except Exception as e: + logging.error(f"An error occurred during the session: {e}") + finally: + driver.close() + logging.info("Driver closed.") + logging.info(f"Process completed in {time.time() - start_time:.2f} seconds.") \ No newline at end of file diff --git a/backend/src/shared/common_fn.py b/backend/src/shared/common_fn.py index ec52bfd8..67a09491 100644 --- a/backend/src/shared/common_fn.py +++ b/backend/src/shared/common_fn.py @@ -18,7 +18,7 @@ from langchain_experimental.graph_transformers.diffbot import DiffbotGraphTransformer # from neo4j.debug import watch -#watch("neo4j") +# watch("neo4j") def check_url_source(source_type, yt_url:str=None, wiki_query:str=None): @@ -77,8 +77,11 @@ def get_chunk_and_graphDocument(graph_document_list, chunkId_chunkDoc_list): return lst_chunk_chunkId_document def create_graph_database_connection(uri, userName, password, database): - graph = Neo4jGraph(url=uri, database=database, username=userName, password=password, refresh_schema=False, sanitize=True) - #driver_config={'user_agent':os.environ.get('NEO4J_USER_AGENT')} + enable_user_agent = os.environ.get("ENABLE_USER_AGENT", "False").lower() in ("true", "1", "yes") + if enable_user_agent: + graph = Neo4jGraph(url=uri, database=database, username=userName, password=password, refresh_schema=False, sanitize=True,driver_config={'user_agent':os.environ.get('NEO4J_USER_AGENT')}) + else: + graph = Neo4jGraph(url=uri, database=database, username=userName, password=password, refresh_schema=False, sanitize=True) return graph @@ -142,7 +145,7 @@ def get_llm(model_version:str) : model_name=model_version) else: - llm = DiffbotGraphTransformer(diffbot_api_key=os.environ.get('DIFFBOT_API_KEY')) + llm = DiffbotGraphTransformer(diffbot_api_key=os.environ.get('DIFFBOT_API_KEY'),extract_types=['entities','facts']) logging.info(f"Model created - Model Version: {model_version}") return llm diff --git a/backend/src/shared/constants.py b/backend/src/shared/constants.py index ba9a68df..22cd5d8f 100644 --- a/backend/src/shared/constants.py +++ b/backend/src/shared/constants.py @@ -9,9 +9,168 @@ } OPENAI_MODELS = ["gpt-3.5", "gpt-4o"] GEMINI_MODELS = ["gemini-1.0-pro", "gemini-1.5-pro"] +GROQ_MODELS = ["groq-llama3"] +BUCKET_UPLOAD = 'llm-graph-builder-upload' +BUCKET_FAILED_FILE = 'llm-graph-builder-failed' +PROJECT_ID = 'llm-experiments-387609' + + +## CHAT SETUP CHAT_MAX_TOKENS = 1000 CHAT_SEARCH_KWARG_K = 3 CHAT_SEARCH_KWARG_SCORE_THRESHOLD = 0.7 -GROQ_MODELS = ["groq-llama3"] -BUCKET_UPLOAD = 'llm-graph-builder-upload' -PROJECT_ID = 'llm-experiments-387609' +CHAT_DOC_SPLIT_SIZE = 3000 +CHAT_EMBEDDING_FILTER_SCORE_THRESHOLD = 0.10 +CHAT_TOKEN_CUT_OFF = { + ("gpt-3.5","gemini-1.0-pro","gemini-1.5-pro","groq-llama3" ) : 4, + ("gpt-4","diffbot" , "gpt-4o") : 28 +} + + +### CHAT TEMPLATES +CHAT_SYSTEM_TEMPLATE = """ +You are an AI-powered question-answering agent. Your task is to provide accurate and comprehensive responses to user queries based on the given context, chat history, and available resources. + +### Response Guidelines: +1. **Direct Answers**: Provide clear and thorough answers to the user's queries without headers unless requested. Avoid speculative responses. +2. **Utilize History and Context**: Leverage relevant information from previous interactions, the current user input, and the context provided below. +3. **No Greetings in Follow-ups**: Start with a greeting in initial interactions. Avoid greetings in subsequent responses unless there's a significant break or the chat restarts. +4. **Admit Unknowns**: Clearly state if an answer is unknown. Avoid making unsupported statements. +5. **Avoid Hallucination**: Only provide information based on the context provided. Do not invent information. +6. **Response Length**: Keep responses concise and relevant. Aim for clarity and completeness within 4-5 sentences unless more detail is requested. +7. **Tone and Style**: Maintain a professional and informative tone. Be friendly and approachable. +8. **Error Handling**: If a query is ambiguous or unclear, ask for clarification rather than providing a potentially incorrect answer. +9. **Fallback Options**: If the required information is not available in the provided context, provide a polite and helpful response. Example: "I don't have that information right now." or "I'm sorry, but I don't have that information. Is there something else I can help with?" +10. **Context Availability**: If the context is empty, do not provide answers based solely on internal knowledge. Instead, respond appropriately by indicating the lack of information. + + +**IMPORTANT** : DO NOT ANSWER FROM YOUR KNOWLEDGE BASE USE THE BELOW CONTEXT + +### Context: + +{context} + + +### Example Responses: +User: Hi +AI Response: 'Hello there! How can I assist you today?' + +User: "What is Langchain?" +AI Response: "Langchain is a framework that enables the development of applications powered by large language models, such as chatbots. It simplifies the integration of language models into various applications by providing useful tools and components." + +User: "Can you explain how to use memory management in Langchain?" +AI Response: "Langchain's memory management involves utilizing built-in mechanisms to manage conversational context effectively. It ensures that the conversation remains coherent and relevant by maintaining the history of interactions and using it to inform responses." + +User: "I need help with PyCaret's classification model." +AI Response: "PyCaret simplifies the process of building and deploying machine learning models. For classification tasks, you can use PyCaret's setup function to prepare your data. After setup, you can compare multiple models to find the best one, and then fine-tune it for better performance." + +User: "What can you tell me about the latest realtime trends in AI?" +AI Response: "I don't have that information right now. Is there something else I can help with?" + +Note: This system does not generate answers based solely on internal knowledge. It answers from the information provided in the user's current and previous inputs, and from the context. +""" + + +QUESTION_TRANSFORM_TEMPLATE = "Given the below conversation, generate a search query to look up in order to get information relevant to the conversation. Only respond with the query, nothing else." + + +## CHAT QUERIES +VECTOR_SEARCH_QUERY = """ +WITH node AS chunk, score +MATCH (chunk)-[:PART_OF]->(d:Document) +WITH d, collect(distinct {chunk: chunk, score: score}) as chunks, avg(score) as avg_score +WITH d, avg_score, + [c in chunks | c.chunk.text] as texts, + [c in chunks | {id: c.chunk.id, score: c.score}] as chunkdetails +WITH d, avg_score, chunkdetails, + apoc.text.join(texts, "\n----\n") as text +RETURN text, avg_score AS score, + {source: COALESCE(CASE WHEN d.url CONTAINS "None" THEN d.fileName ELSE d.url END, d.fileName), chunkdetails: chunkdetails} as metadata +""" + +# VECTOR_GRAPH_SEARCH_QUERY=""" +# WITH node as chunk, score +# MATCH (chunk)-[:PART_OF]->(d:Document) +# CALL { WITH chunk +# MATCH (chunk)-[:HAS_ENTITY]->(e) +# MATCH path=(e)(()-[rels:!HAS_ENTITY&!PART_OF]-()){0,2}(:!Chunk&!Document) +# UNWIND rels as r +# RETURN collect(distinct r) as rels +# } +# WITH d, collect(DISTINCT {chunk: chunk, score: score}) AS chunks, avg(score) as avg_score, apoc.coll.toSet(apoc.coll.flatten(collect(rels))) as rels +# WITH d, avg_score, +# [c IN chunks | c.chunk.text] AS texts, +# [c IN chunks | {id: c.chunk.id, score: c.score}] AS chunkdetails, +# [r in rels | coalesce(apoc.coll.removeAll(labels(startNode(r)),['__Entity__'])[0],"") +":"+ startNode(r).id + " "+ type(r) + " " + coalesce(apoc.coll.removeAll(labels(endNode(r)),['__Entity__'])[0],"") +":" + endNode(r).id] as entities +# WITH d, avg_score,chunkdetails, +# apoc.text.join(texts,"\n----\n") + +# apoc.text.join(entities,"\n") +# as text +# RETURN text, avg_score AS score, {source: COALESCE( CASE WHEN d.url CONTAINS "None" THEN d.fileName ELSE d.url END, d.fileName), chunkdetails: chunkdetails} AS metadata +# """ + + +VECTOR_GRAPH_SEARCH_QUERY = """ +WITH node as chunk, score +// find the document of the chunk +MATCH (chunk)-[:PART_OF]->(d:Document) +// fetch entities +CALL { WITH chunk +// entities connected to the chunk +// todo only return entities that are actually in the chunk, remember we connect all extracted entities to all chunks +MATCH (chunk)-[:HAS_ENTITY]->(e) + +// depending on match to query embedding either 1 or 2 step expansion +WITH CASE WHEN true // vector.similarity.cosine($embedding, e.embedding ) <= 0.95 +THEN +collect { MATCH path=(e)(()-[rels:!HAS_ENTITY&!PART_OF]-()){0,1}(:!Chunk&!Document) RETURN path } +ELSE +collect { MATCH path=(e)(()-[rels:!HAS_ENTITY&!PART_OF]-()){0,2}(:!Chunk&!Document) RETURN path } +END as paths + +RETURN collect{ unwind paths as p unwind relationships(p) as r return distinct r} as rels, +collect{ unwind paths as p unwind nodes(p) as n return distinct n} as nodes +} +// aggregate chunk-details and de-duplicate nodes and relationships +WITH d, collect(DISTINCT {chunk: chunk, score: score}) AS chunks, avg(score) as avg_score, apoc.coll.toSet(apoc.coll.flatten(collect(rels))) as rels, + +// TODO sort by relevancy (embeddding comparision?) cut off after X (e.g. 25) nodes? +apoc.coll.toSet(apoc.coll.flatten(collect( + [r in rels |[startNode(r),endNode(r)]]),true)) as nodes + +// generate metadata and text components for chunks, nodes and relationships +WITH d, avg_score, + [c IN chunks | c.chunk.text] AS texts, + [c IN chunks | {id: c.chunk.id, score: c.score}] AS chunkdetails, + apoc.coll.sort([n in nodes | + +coalesce(apoc.coll.removeAll(labels(n),['__Entity__'])[0],"") +":"+ +n.id + (case when n.description is not null then " ("+ n.description+")" else "" end)]) as nodeTexts, + apoc.coll.sort([r in rels + // optional filter if we limit the node-set + // WHERE startNode(r) in nodes AND endNode(r) in nodes + | +coalesce(apoc.coll.removeAll(labels(startNode(r)),['__Entity__'])[0],"") +":"+ +startNode(r).id + +" " + type(r) + " " + +coalesce(apoc.coll.removeAll(labels(endNode(r)),['__Entity__'])[0],"") +":" + +endNode(r).id +]) as relTexts + +// combine texts into response-text +WITH d, avg_score,chunkdetails, +"Text Content:\n" + +apoc.text.join(texts,"\n----\n") + +"\n----\nEntities:\n"+ +apoc.text.join(nodeTexts,"\n") + +"\n----\nRelationships:\n"+ +apoc.text.join(relTexts,"\n") + +as text +RETURN text, avg_score as score, {length:size(text), source: COALESCE( CASE WHEN d.url CONTAINS "None" THEN d.fileName ELSE d.url END, d.fileName), chunkdetails: chunkdetails} AS metadata +""" + + + + + diff --git a/docker-compose.yml b/docker-compose.yml index 63ade96e..a93be695 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,6 +24,7 @@ services: - GCP_LOG_METRICS_ENABLED=${GCP_LOG_METRICS_ENABLED-False} - UPDATE_GRAPH_CHUNKS_PROCESSED=${UPDATE_GRAPH_CHUNKS_PROCESSED-20} - NUMBER_OF_CHUNKS_TO_COMBINE=${NUMBER_OF_CHUNKS_TO_COMBINE-6} + - GCS_FILE_CACHE=${GCS_FILE_CACHE-False} container_name: backend ports: - "8000:8000" @@ -39,7 +40,7 @@ services: args: - BACKEND_API_URL=${BACKEND_API_URL-http://localhost:8000} - REACT_APP_SOURCES=${REACT_APP_SOURCES-local,youtube,wiki,s3} - - LLM_MODELS=${LLM_MODELS-Diffbot,OpenAI GPT 3.5,OpenAI GPT 4o} + - LLM_MODELS=${LLM_MODELS-diffbot,gpt-3.5,gpt-4o} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID-""} - BLOOM_URL=${BLOOM_URL-https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true} - TIME_PER_CHUNK=${TIME_PER_CHUNK-4} diff --git a/docs/backend/backend_docs.adoc b/docs/backend/backend_docs.adoc new file mode 100644 index 00000000..a2887d6f --- /dev/null +++ b/docs/backend/backend_docs.adoc @@ -0,0 +1,712 @@ += LLM Knowledge Graph Builder Backend + +== API Reference + + +=== Connect to Neo4j Graph Database +----- +POST /connect +----- + +Neo4j database connection on frontend is done with this API. + +**API Parameters :** + +* `uri`= Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + + +**Response :** +[source,json,indent=0] +---- +{ + "status":"Success", + "message":"Connection Successful" +} +---- + + +=== Upload Files from Local +---- +POST /upload +---- + +The upload endpoint is designed to handle the uploading of large files by breaking them into smaller chunks. This method ensures that large files can be uploaded efficiently without overloading the server. + +***API Parameters*** + +* `file`=The file to be uploaded, received in chunks, +* `chunkNumber`=The current chunk number being uploaded, +* `totalChunks`=The total number of chunks the file is divided into (each chunk of 1Mb size), +* `originalname`=The original name of the file, +* `model`=The model associated with the file, +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "message": "File uploaded and chunks merged successfully." +} +.... + + +=== User defined schema +---- +POST /schema +---- + +User can set schema for graph generation (i.e. Nodes and relationship labels) in settings panel or get existing db schema through this API. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": [ + { + "labels": [ + "Access_token", + "Activity", + "Ai chatbot", + "Book", + "Metric", + "Mode", + "Mountain" + ], + "relationshipTypes": [ + "ACCELERATE", + "ACCEPTS", + "CONVERT", + "CORRELATE", + "ESTABLISHED", + "EXAMPLE_OF" + ] + } + ] +} +.... + +=== Graph schema from input text +---- +POST /populate_graph_schema +---- + +The API is used to populate a graph schema based on the provided input text, model, and schema description flag. + +**API Parameters :** + +* `input_text`=The input text used to populate the graph schema. +* `model`=The model to be used for populating the graph schema. +* `is_schema_description_checked`=A flag indicating whether the schema description should be considered. + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": [ + { + "labels": [ + "Technology", + "Company", + "Person", + "Location", + "Organization", + "Concept" + ], + "relationshipTypes": [ + "LOCATED_AT", + "SUBSIDARY_OF", + "BORN_IN", + "LAST_MESSAGE", + "ATTENDED", + "PARTNERED_WITH" + ] + } + ] +} +.... + + +=== Unstructured sources scan other than local +---- +POST /url/scan +---- + +Create Document node for other sources - s3 bucket, gcs bucket, wikipedia, youtube url and web pages. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name +* `model`= LLM model, +* `source_url`= , +* `aws_access_key_id`= AWS access key, +* `aws_secret_access_key`= AWS secret key, +* `wiki_query`= Wikipedia query sources, +* `gcs_project_id`= GCS project id, +* `gcs_bucket_name`= GCS bucket name, +* `gcs_bucket_folder`= GCS bucket folder, +* `source_type`= s3 bucket/ gcs bucket/ youtube/Wikipedia as source type +* `gcs_project_id`=Form(None), +* `access_token`=Form(None) + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "success_count": 2, + "failed_count": 0, + "message": "Source Node created successfully for source type: Wikipedia and source: Albert Einstein, neo4j", + "file_name": [ + { + "fileName": "Albert Einstein", + "fileSize": 8074, + "url": "https://en.wikipedia.org/wiki/Albert_Einstein", + "status": "Success" + } + ] +} +.... + + +=== Extration of nodes and relations from content +---- +POST /extract : +---- + +This API is responsible for - + +** Reading the content of source provided in the form of langchain Document object from respective langchain loaders + +** Dividing the document into multiple chunks, and make below relations - +*** PART_OF - relation from Document node to all chunk nodes +*** FIRST_CHUNK - relation from document node to first chunk node +*** NEXT_CHUNK - relation from a chunk pointing to next chunk of the document. +*** HAS_ENTITY - relation between chunk node and entities extracted from LLM. + +** Extracting nodes and relations in the form of GraphDocument from respective LLM. + +** Update embedding of chunks and create vector index. + +** Update K-Nearest Neighbors graph for similar chunks. + + +**Implementation :** + +** For multiple sources of content - + +*** Local file - User can upload pdf file from their device. + +*** s3 bucket - User passes the bucket url and all the pdf files inside folders and subfolders will be listed. + +*** GCS bucket - User passes gcs project id, gcs bucket name and folder name, do google authentication to access all the pdf files under that folder and its subfolders and if folder name is not passed by user, all the pdf files under the bucket and its subfolders will be listed if user have read access of the bucket. + +*** Web Sources - +**** Wikipedia - Wikipedia 1st page content is rendered url passed by user. + +**** Youtube - Youtube video transcript is processed and if no transcript is available then respective error is thrown. + +**** Web urls - Text Content from any web url is processed for generating graph. + +** Langchain's LLMGraphTransformer library is used to get nodes and relations in the form of GraphDocument from LLMs. User and System prompts, LLM chain, graphDocument schema are defined in the library itself. + +** SentenceTransformer embeddingds are used by default, also embeddings are made configurable to use either OpenAIEmbeddings or VertexAIEmbeddings. + +** Vector index is created in databse on embeddingds created for chunks. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name +* `model`= LLM model, +* `file_name` = File uploaded from device +* `source_url`= , +* `aws_access_key_id`= AWS access key, +* `aws_secret_access_key`= AWS secret key, +* `wiki_query`= Wikipedia query sources, +* `gcs_project_id`=GCS project id, +* `gcs_bucket_name`= GCS bucket name, +* `gcs_bucket_folder`= GCS bucket folder, +* `gcs_blob_filename` = GCS file name, +* `source_type`= local file/ s3 bucket/ gcs bucket/ youtube/ Wikipedia as source, +allowedNodes=Node labels passed from settings panel, +* `allowedRelationship`=Relationship labels passed from settings panel, +* `language`=Language in which wikipedia content will be extracted + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": { + "fileName": , + "nodeCount": , + "relationshipCount": , + "processingTime": , + "status": "Completed", + "model": + } +} +.... + + +=== Get list of sources +---- +GET /sources_list +---- + +List all sources (Document nodes) present in Neo4j graph database. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": [ + { + "fileName": "About Amazon.pdf", + "fileSize": 163931, + "errorMessage": "", + "fileSource": "local file", + "nodeCount": 62, + "model": "OpenAI GPT 4", + "fileType": "pdf", + "processingTime": 122.71, + "relationshipCount": 187, + "status": "Completed", + "updatedAt": { + "_DateTime__date": { + "_Date__ordinal": 738993, + "_Date__year": 2024, + "_Date__month": 4, + "_Date__day": 17 + }, + "_DateTime__time": { + "_Time__ticks": 28640715768000, + "_Time__hour": 7, + "_Time__minute": 57, + "_Time__second": 20, + "_Time__nanosecond": 715768000, + "_Time__tzinfo": null + } + } + } + ] +} +.... + + +=== Post processing after graph generation +---- +POST /post_processing : +---- + +This API is called at the end of processing of whole document to get create k-nearest neighbor relations between similar chunks of document based on KNN_MIN_SCORE which is 0.8 by default and to drop and create a full text index on db labels. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name +* `tasks`= List of tasks to perform + + +**Response :** +[source,json,indent=0] +.... +{ + "status":"Success", + "message":"All tasks completed successfully" +} +.... + + +=== Chat with Data +---- +POST /chat_bot +---- + +The API responsible for a chatbot system designed to leverage multiple AI models and a Neo4j graph database, providing answers to user queries. It interacts with AI models from OpenAI and Google's Vertex AI and utilizes embedding models to enhance the retrieval of relevant information. + +**Components :** + +** Embedding Models - Includes OpenAI Embeddings, VertexAI Embeddings, and SentenceTransformer Embeddings to support vector-based query operations. +** AI Models - OpenAI GPT 3.5, GPT 4o, Gemini Pro, Gemini 1.5 Pro and Groq llama3 can be configured for the chatbot backend to generate responses and process natural language. +** Graph Database (Neo4jGraph) - Manages interactions with the Neo4j database, retrieving, and storing conversation histories. +** Response Generation - Utilizes Vector Embeddings from the Neo4j database, chat history, and the knowledge base of the LLM used. + +**API Parameters :** + +* `uri`= Neo4j uri +* `userName`= Neo4j database username +* `password`= Neo4j database password +* `model`= LLM model +* `question`= User query for the chatbot +* `session_id`= Session ID used to maintain the history of chats during the user's connection + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": { + "session_id": "0901", + "message": "Fibrosis, also known as fibrotic scarring, is a pathological wound healing process where connective tissue replaces normal parenchymal tissue." + "info": { + "sources": [ + { + "source_name": "https://en.wikipedia.org/wiki/Fibrosis", + "page_numbers": [], + "start_time": [] + } + ], + "model": "gpt-4o", + "chunkids": [ + "54d8c0dbefb67f1ed3f6939d59267e1ff557a94c", + "4cc02ee8419706c8decdf71ab0d3896aad5c7dca", + "266ce95311bb1921791b4f1cd29a48d433027139", + "11e19513247e1e396475728fa6a197695045b248", + "8bafa01b6d851f70822bcb86863e485e1785a64c" + ], + "total_tokens": 2213, + "response_time": 10.17 + }, + "user": "chatbot" + } +} +.... + +=== Get entities from chunks +---- +/chunk_entities +---- + +This API is used to get the entities and relations associated with a particular chunk and chunk metadata. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name +* `chunk_ids` = Chunk ids of document + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": { + "nodes": [ + { + "element_id": "4:a69712a5-1102-40da-a96d-70c1143ea8e5:73267", + "labels": [ + "Condition" + ], + "properties": { + "id": "Fibrosis" + } + }, + + ], + "relationships": [ + { + "element_id": "5:a69712a5-1102-40da-a96d-70c1143ea8e5:1153057844048764467", + "type": "AFFECTS", + "start_node_element_id": "4:a69712a5-1102-40da-a96d-70c1143ea8e5:73267", + "end_node_element_id": "4:a69712a5-1102-40da-a96d-70c1143ea8e5:73282" + }, + { + "element_id": "5:a69712a5-1102-40da-a96d-70c1143ea8e5:1155309643862449715", + "type": "AFFECTS", + "start_node_element_id": "4:a69712a5-1102-40da-a96d-70c1143ea8e5:73267", + "end_node_element_id": "4:a69712a5-1102-40da-a96d-70c1143ea8e5:73294" + }, + ], + "chunk_data": [ + { + "id": "54d8c0dbefb67f1ed3f6939d59267e1ff557a94c", + "position": 1, + "text": "Fibrosis, also known as fibrotic scarring, is a pathological wound healing ...", + "content_offset": 0, + "fileName": "fibrosis", + "length": 1002, + "embedding": null + } + ] + } +} +.... + +=== View graph for a file +---- +POST /graph_query +---- + +This API is used to view graph for a particular file. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `query_type`= Neo4j database name +* `document_names` = File name for which user wants to view graph + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": { + "nodes": [ + { + "element_id": "4:98e5e9bb-8095-440d-9462-03985fed2fa2:9972", + "labels": [ + "Person" + ], + "properties": { + "id": "Jeff" + } + }, + { + "element_id": "4:98e5e9bb-8095-440d-9462-03985fed2fa2:9973", + "labels": [ + "Team" + ], + "properties": { + "id": "Miami" + } + } + ], + "relationships": [ + { + "element_id": "5:98e5e9bb-8095-440d-9462-03985fed2fa2:1153200780560312052", + "type": "PLAYER", + "start_node_element_id": "4:98e5e9bb-8095-440d-9462-03985fed2fa2:9972", + "end_node_element_id": "4:98e5e9bb-8095-440d-9462-03985fed2fa2:9973" + } + ] + } +} +.... + +=== Clear chat history +---- +POST /clear_chat_bot +---- + +This API is used to clear the chat history which is saved in Neo4j DB. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name, +* `session_id` = User session id for QA chat + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "data": { + "session_id": "99c1a808-377f-448f-9ea6-4b4a8de46b14", + "message": "The chat History is cleared", + "user": "chatbot" + } +} +.... + +=== SSE event to update processing status +---- +GET /update_extract_status +---- + +The API provides a continuous update on the extraction status of a specified file. It uses Server-Sent Events (SSE) to stream updates to the client. + +**API Parameters :** + +* `file_name`=The name of the file whose extraction status is being tracked, +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + + +**Response :** +[source,json,indent=0] +.... +{ + "fileName": "testFile.pdf", + "status": "Processing", + "processingTime": 0, + "nodeCount": 0, + "relationshipCount": 0, + "model": "OpenAI GPT 3.5", + "total_chunks": 3, + "total_pages": 1, + "fileSize": 92373, + "processed_chunk": 0 +} +.... + +=== Delete selected documents +---- +POST /delete_document_and_entities +---- + +**Overview :** + +Deleteion of nodes and relations for multiple files is done through this API. User can choose multiple documents to be deleted, also user have option to delete only 'Document' and 'Chunk' nodes and keep the entities extracted from that document. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name, +* `filenames`= List of files to be deleted, +* `source_types`= Document sources(Wikipedia, youtube, etc.), +* `deleteEntities`= Boolean value to check entities deletion is requested or not + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "message": "Deleted 1 documents with 68 entities from database" +} +.... + +=== Cancel processing job +---- +/cancelled_job +---- + +This API is responsible for cancelling an in process job. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name, +* `filenames`= Name of the file whose processing need to be stopped, +* `source_types`= Source of the file + + +**Response :** +[source,json,indent=0] +.... +{ + "message":"Cancelled the processing job successfully" +} +.... + + +=== Get the list of orphan nodes +---- +POST /get_unconnected_nodes_list +---- + +The API retrieves a list of nodes in the graph database that are not connected to any other nodes. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name + + +**Response :** +[source,json,indent=0] +.... +{ "status": "Success", + "data": [ + "e": + { + "id": "Leela Chess Zero", + "elementId": "4:abf6f691-928d-4b1c-80fc-2914ae517b4c:336", + "labels": ["Technology"], + "embedding": null + }, + "documents": ["AlphaZero - Wikipedia.pdf"], + "chunkConnections": 7 + ] +} +.... + + +=== Deletion of orpahn nodes +---- +POST /delete_unconnected_nodes +---- + +The API is used to delete unconnected entities from database. + +**API Parameters :** + +* `uri`=Neo4j uri, +* `userName`= Neo4j db username, +* `password`= Neo4j db password, +* `database`= Neo4j database name, +* `unconnected_entities_list`=selected entities list to delete of unconnected entities. + + +**Response :** +[source,json,indent=0] +.... +{ + "status": "Success", + "message: "Unconnected entities delete successfully" +} +.... + + +== Decisions + +* Process only 1st page of Wikipedia +* Split document content into chunks of size 200 and overlap of 20 +* Configurable elements - +** Number of chunks to combine +** Generate Embedding or not +** Embedding model +** minimum score for KNN graph +** Uploaded file storage location (GCS bucket or container) diff --git a/docs/frontend/frontend_docs.adoc b/docs/frontend/frontend_docs.adoc new file mode 100644 index 00000000..e69de29b diff --git a/docs/project architecture.png b/docs/project architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..81574930880e1900f59c228eab346025918e45a3 GIT binary patch literal 169011 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�nTZkr7!itlz2+ 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�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 Frontend +region : 32 [us-central 1] +Allow unauthenticated request : Yes +.... + + To deploy backend +.... +gcloud run deploy --set-env-vars "OPENAI_API_KEY = " --set-env-vars "DIFFBOT_API_KEY = " --set-env-vars "NEO4J_URI = " --set-env-vars "NEO4J_PASSWORD = " --set-env-vars "NEO4J_USERNAME = " +source location current directory > Backend +region : 32 [us-central 1] +Allow unauthenticated request : Yes +.... + +* Langserve is used with FAST API to deploy Langchain runnables and chains as a REST API. + +* Langsmith is used to monitor and evaluate the application + + +Developement url + +Production url + + + +== Appendix + +=== Limitations + +** Only pdf file uploaded from device or uploaded from s3 bucket or gcs bucket can be processed. + +** GCS buckets present under 1051503595507@cloudbuild.gserviceaccount.com service account can only be accessed. + +** Only 1st page of Wikipedia content is processed to generate graphDocument. + + +=== Known issues + +** InactiveRpcError error with Gemini 1.0 Pro - grpc_status:13, grpc_message:"Internal error encountered." + +** ResourceExhausted error with Gemini 1.5 Pro - 429 Quota exceeded for aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model with base model: gemini-1.5-pro + +** Gemini response validation errors even after making safety_settings parameters to BLOCK_NONE. + diff --git a/example.env b/example.env index 3eef484d..68132545 100644 --- a/example.env +++ b/example.env @@ -19,12 +19,13 @@ LANGCHAIN_API_KEY = "" LANGCHAIN_PROJECT = "" LANGCHAIN_TRACING_V2 = "true" LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com" +GCS_FILE_CACHE = False # Optional Frontend BACKEND_API_URL="http://localhost:8000" BLOOM_URL="https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true" -REACT_APP_SOURCES="local,youtube,wiki,s3" -LLM_MODELS="Diffbot,OpenAI GPT 3.5,OpenAI GPT 4o" +REACT_APP_SOURCES="local,youtube,wiki,s3,web" +LLM_MODELS="diffbot,gpt-3.5,gpt-4o" ENV="DEV" TIME_PER_CHUNK=4 TIME_PER_PAGE=50 diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 504bcc04..7e166bda 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -3,14 +3,14 @@ FROM node:20 AS build ARG BACKEND_API_URL="http://localhost:8000" ARG REACT_APP_SOURCES="" -ARG LLM_MODELS="diffbot,gpt-3.5,gpt-4o,gemini-1.0-pro" +ARG LLM_MODELS="" ARG GOOGLE_CLIENT_ID="" ARG BLOOM_URL="https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true" ARG TIME_PER_CHUNK=4 ARG TIME_PER_PAGE=50 ARG LARGE_FILE_SIZE=5242880 ARG CHUNK_SIZE=5242880 -ARG ENV="PROD" +ARG ENV="DEV" WORKDIR /app COPY package.json yarn.lock ./ diff --git a/frontend/example.env b/frontend/example.env index ced97193..bf7a7b03 100644 --- a/frontend/example.env +++ b/frontend/example.env @@ -1,9 +1,10 @@ BACKEND_API_URL="http://localhost:8000" BLOOM_URL="https://workspace-preview.neo4j.io/workspace/explore?connectURL={CONNECT_URL}&search=Show+me+a+graph&featureGenAISuggestions=true&featureGenAISuggestionsInternal=true" -REACT_APP_SOURCES="local,youtube,wiki,s3" -LLM_MODELS="Diffbot,OpenAI GPT 3.5,OpenAI GPT 4o" +REACT_APP_SOURCES="local,youtube,wiki,s3,web" +LLM_MODELS="diffbot,gpt-3.5,gpt-4o" ENV="DEV" TIME_PER_CHUNK=4 TIME_PER_PAGE=50 CHUNK_SIZE=5242880 +LARGE_FILE_SIZE=5242880 GOOGLE_CLIENT_ID="" \ No newline at end of file diff --git a/frontend/src/App.css b/frontend/src/App.css index 5c501b6f..52d8fcd5 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -25,7 +25,7 @@ } .contentWithExpansion { - width: calc(-800px + 100dvw); + width: calc(-840px + 100dvw); height: calc(100dvh - 58px); padding: 3px; display: flex; @@ -121,6 +121,10 @@ height: 55px; object-fit: contain; } +.webImg{ + width: 80px; + height: 80px; +} ::placeholder { color: rgb(135, 130, 130) !important; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 88f0164d..0caa501e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,22 +2,27 @@ import './App.css'; import '@neo4j-ndl/base/lib/neo4j-ds-styles.css'; import ThemeWrapper from './context/ThemeWrapper'; import QuickStarter from './components/QuickStarter'; - import { GoogleOAuthProvider } from '@react-oauth/google'; import { APP_SOURCES } from './utils/Constants'; +import ErrorBoundary from './components/UI/ErrroBoundary'; + const App: React.FC = () => { return ( <> {APP_SOURCES != undefined && APP_SOURCES.includes('gcs') ? ( - + + + + + + + + ) : ( + - - ) : ( - - - + )} ); diff --git a/frontend/src/HOC/SettingModalHOC.tsx b/frontend/src/HOC/SettingModalHOC.tsx new file mode 100644 index 00000000..7afe46d0 --- /dev/null +++ b/frontend/src/HOC/SettingModalHOC.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { SettingsModalProps } from '../types'; +import SettingsModal from '../components/Popups/Settings/SettingModal'; + +const SettingModalHOC: React.FC = ({ + openTextSchema, + open, + onClose, + isSchema, + settingView, + setIsSchema, + onContinue, + onClear, +}) => { + return ( + + ); +}; +export default SettingModalHOC; diff --git a/frontend/src/assets/images/db-search.svg b/frontend/src/assets/images/db-search.svg new file mode 100644 index 00000000..33c7a3ca --- /dev/null +++ b/frontend/src/assets/images/db-search.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/frontend/src/assets/images/graph-search.svg b/frontend/src/assets/images/graph-search.svg new file mode 100644 index 00000000..1be52147 --- /dev/null +++ b/frontend/src/assets/images/graph-search.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/frontend/src/assets/images/internet_logo.png b/frontend/src/assets/images/internet_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f79962b7cca4b8b18d52f0a4311ba92115318a9f GIT binary patch literal 7402 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/images/web-search-svgrepo-com.svg b/frontend/src/assets/images/web-search-svgrepo-com.svg new file mode 100644 index 00000000..199dd7cb --- /dev/null +++ b/frontend/src/assets/images/web-search-svgrepo-com.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/src/assets/images/web-svgrepo-com.svg b/frontend/src/assets/images/web-svgrepo-com.svg new file mode 100644 index 00000000..86089066 --- /dev/null +++ b/frontend/src/assets/images/web-svgrepo-com.svg @@ -0,0 +1,11 @@ + + + + + + + + + web + + \ No newline at end of file diff --git a/frontend/src/components/ChatBot/ChatModeToggle.tsx b/frontend/src/components/ChatBot/ChatModeToggle.tsx new file mode 100644 index 00000000..f80b2dfb --- /dev/null +++ b/frontend/src/components/ChatBot/ChatModeToggle.tsx @@ -0,0 +1,50 @@ +import { SegmentedControl, Tip } from '@neo4j-ndl/react'; +import { ChatModeOptions } from '../../utils/Constants'; +import { useFileContext } from '../../context/UsersFiles'; +import { DbmsIcon } from '@neo4j-ndl/react/icons'; +import { capitalize } from '@mui/material'; + +export default function ChatModeToggle({ inSidenav = false }) { + const [vector, _] = ChatModeOptions; + const { chatMode, setchatMode } = useFileContext(); + + return ( + + {ChatModeOptions.map((i, idx) => { + return ( + + + + {i.Icon === 'abc' ? ( + + + + + + + ) : ( + + )} + + + {capitalize(i.value)} + + ); + })} + + ); +} diff --git a/frontend/src/components/Chatbot.tsx b/frontend/src/components/ChatBot/Chatbot.tsx similarity index 93% rename from frontend/src/components/Chatbot.tsx rename to frontend/src/components/ChatBot/Chatbot.tsx index 44ca6024..096a6c31 100644 --- a/frontend/src/components/Chatbot.tsx +++ b/frontend/src/components/ChatBot/Chatbot.tsx @@ -6,33 +6,33 @@ import { SpeakerWaveIconOutline, SpeakerXMarkIconOutline, } from '@neo4j-ndl/react/icons'; -import ChatBotAvatar from '../assets/images/chatbot-ai.png'; -import { ChatbotProps, Source, UserCredentials } from '../types'; -import { useCredentials } from '../context/UserCredentials'; -import { chatBotAPI } from '../services/QnaAPI'; +import ChatBotAvatar from '../../assets/images/chatbot-ai.png'; +import { ChatbotProps, UserCredentials, chunk } from '../../types'; +import { useCredentials } from '../../context/UserCredentials'; +import { chatBotAPI } from '../../services/QnaAPI'; import { v4 as uuidv4 } from 'uuid'; -import { useFileContext } from '../context/UsersFiles'; -import InfoModal from './InfoModal'; +import { useFileContext } from '../../context/UsersFiles'; +import InfoModal from './Info/InfoModal'; import clsx from 'clsx'; import ReactMarkdown from 'react-markdown'; -import IconButtonWithToolTip from './IconButtonToolTip'; -import { buttonCaptions, tooltips } from '../utils/Constants'; -import useSpeechSynthesis from '../hooks/useSpeech'; -import ButtonWithToolTip from './ButtonWithToolTip'; +import IconButtonWithToolTip from '../UI/IconButtonToolTip'; +import { buttonCaptions, tooltips } from '../../utils/Constants'; +import useSpeechSynthesis from '../../hooks/useSpeech'; +import ButtonWithToolTip from '../UI/ButtonWithToolTip'; const Chatbot: React.FC = (props) => { const { messages: listMessages, setMessages: setListMessages, isLoading, isFullScreen, clear } = props; const [inputMessage, setInputMessage] = useState(''); const [loading, setLoading] = useState(isLoading); const { userCredentials } = useCredentials(); - const { model } = useFileContext(); + const { model, chatMode } = useFileContext(); const messagesEndRef = useRef(null); const [sessionId, setSessionId] = useState(sessionStorage.getItem('session_id') ?? ''); const [showInfoModal, setShowInfoModal] = useState(false); - const [sourcesModal, setSourcesModal] = useState([]); + const [sourcesModal, setSourcesModal] = useState([]); const [modelModal, setModelModal] = useState(''); const [responseTime, setResponseTime] = useState(0); - const [chunkModal, setChunkModal] = useState([]); + const [chunkModal, setChunkModal] = useState([]); const [tokensUsed, setTokensUsed] = useState(0); const [copyMessageId, setCopyMessageId] = useState(null); @@ -56,9 +56,9 @@ const Chatbot: React.FC = (props) => { const simulateTypingEffect = ( response: { reply: string; - sources?: Source[]; + sources?: string[]; model?: string; - chunk_ids?: string[]; + chunk_ids?: chunk[]; total_tokens?: number; response_time?: number; speaking?: boolean; @@ -142,13 +142,13 @@ const Chatbot: React.FC = (props) => { try { setInputMessage(''); simulateTypingEffect({ reply: ' ' }); - const chatbotAPI = await chatBotAPI(userCredentials as UserCredentials, inputMessage, sessionId, model); + const chatbotAPI = await chatBotAPI(userCredentials as UserCredentials, inputMessage, sessionId, model, chatMode); const chatresponse = chatbotAPI?.response; console.log('api', chatresponse); chatbotReply = chatresponse?.data?.data?.message; chatSources = chatresponse?.data?.data?.info.sources; chatModel = chatresponse?.data?.data?.info.model; - chatChunks = chatresponse?.data?.data?.info.chunkids; + chatChunks = chatresponse?.data?.data?.info.chunkdetails; chatTokensUsed = chatresponse?.data?.data?.info.total_tokens; chatTimeTaken = chatresponse?.data?.data?.info.response_time; const finalbotReply = { diff --git a/frontend/src/components/ChatBot/ExpandedChatButtonContainer.tsx b/frontend/src/components/ChatBot/ExpandedChatButtonContainer.tsx new file mode 100644 index 00000000..34ee64ef --- /dev/null +++ b/frontend/src/components/ChatBot/ExpandedChatButtonContainer.tsx @@ -0,0 +1,38 @@ +import { TrashIconOutline, XMarkIconOutline } from '@neo4j-ndl/react/icons'; +import ChatModeToggle from './ChatModeToggle'; +import { Box, IconButton } from '@neo4j-ndl/react'; +import { Messages } from '../../types'; +import IconButtonWithToolTip from '../UI/IconButtonToolTip'; +import { tooltips } from '../../utils/Constants'; + +interface IconProps { + closeChatBot: () => void; + deleteOnClick?: () => void; + messages: Messages[]; +} + +const ExpandedChatButtonContainer: React.FC = ({ closeChatBot, deleteOnClick, messages }) => { + return ( +
+ + + + + + + + + +
+ ); +}; + +export default ExpandedChatButtonContainer; diff --git a/frontend/src/components/ChatBot/Info/InfoModal.tsx b/frontend/src/components/ChatBot/Info/InfoModal.tsx new file mode 100644 index 00000000..4519fd47 --- /dev/null +++ b/frontend/src/components/ChatBot/Info/InfoModal.tsx @@ -0,0 +1,352 @@ +import { Box, Typography, TextLink, Flex, Tabs, LoadingSpinner } from '@neo4j-ndl/react'; +import { DocumentTextIconOutline } from '@neo4j-ndl/react/icons'; +import '../../../styling/info.css'; +import Neo4jRetrievalLogo from '../../../assets/images/Neo4jRetrievalLogo.png'; +import wikipedialogo from '../../../assets/images/Wikipedia-logo-v2.svg'; +import youtubelogo from '../../../assets/images/youtube.png'; +import gcslogo from '../../../assets/images/gcs.webp'; +import s3logo from '../../../assets/images/s3logo.png'; +import { Chunk, Entity, GroupedEntity, UserCredentials, chatInfoMessage } from '../../../types'; +import { useEffect, useMemo, useState } from 'react'; +import HoverableLink from '../../UI/HoverableLink'; +import GraphViewButton from '../../Graph/GraphViewButton'; +import { chunkEntitiesAPI } from '../../../services/ChunkEntitiesInfo'; +import { useCredentials } from '../../../context/UserCredentials'; +import type { Node, Relationship } from '@neo4j-nvl/base'; +import { calcWordColor } from '@neo4j-devtools/word-color'; +import ReactMarkdown from 'react-markdown'; +import { GlobeAltIconOutline } from '@neo4j-ndl/react/icons'; +import { youtubeLinkValidation } from '../../../utils/Utils'; +const InfoModal: React.FC = ({ sources, model, total_tokens, response_time, chunk_ids }) => { + const [activeTab, setActiveTab] = useState(3); + const [infoEntities, setInfoEntities] = useState([]); + const [loading, setLoading] = useState(false); + const { userCredentials } = useCredentials(); + const [nodes, setNodes] = useState([]); + const [relationships, setRelationships] = useState([]); + const [chunks, setChunks] = useState([]); + const parseEntity = (entity: Entity) => { + const { labels, properties } = entity; + const label = labels[0]; + const text = properties.id; + return { label, text }; + }; + useEffect(() => { + setLoading(true); + chunkEntitiesAPI(userCredentials as UserCredentials, chunk_ids.map((c) => c.id).join(',')) + .then((response) => { + setInfoEntities(response.data.data.nodes); + setNodes(response.data.data.nodes); + setRelationships(response.data.data.relationships); + const chunks = response.data.data.chunk_data.map((chunk: any) => { + const chunkScore = chunk_ids.find((chunkdetail) => chunkdetail.id === chunk.id); + return { + ...chunk, + score: chunkScore?.score, + }; + }); + const sortedchunks = chunks.sort((a: any, b: any) => b.score - a.score); + setChunks(sortedchunks); + setLoading(false); + }) + .catch((error) => { + console.error('Error fetching entities:', error); + setLoading(false); + }); + }, [chunk_ids]); + const groupedEntities = useMemo<{ [key: string]: GroupedEntity }>(() => { + return infoEntities.reduce((acc, entity) => { + const { label, text } = parseEntity(entity); + if (!acc[label]) { + const newColor = calcWordColor(label); + acc[label] = { texts: new Set(), color: newColor }; + } + acc[label].texts.add(text); + return acc; + }, {} as Record; color: string }>); + }, [infoEntities]); + const onChangeTabs = (tabId: number) => { + setActiveTab(tabId); + }; + const labelCounts = useMemo(() => { + const counts: { [label: string]: number } = {}; + infoEntities.forEach((entity) => { + const { labels } = entity; + const label = labels[0]; + counts[label] = counts[label] ? counts[label] + 1 : 1; + }); + return counts; + }, [infoEntities]); + const sortedLabels = useMemo(() => { + return Object.keys(labelCounts).sort((a, b) => labelCounts[b] - labelCounts[a]); + }, [labelCounts]); + + const generateYouTubeLink = (url: string, startTime: string) => { + try { + const urlObj = new URL(url); + urlObj.searchParams.set('t', startTime); + return urlObj.toString(); + } catch (error) { + console.error('Invalid URL:', error); + return ''; + } + }; + return ( + + + + + Retrieval information + + To generate this response, in {response_time} seconds we used{' '} + {total_tokens} tokens with the model{' '} + {model}. + + + + + Sources used + Top Entities used + Chunks + + + + {sources.length ? ( +
    + {sources.map((link, index) => { + return ( +
  • + {link?.startsWith('http') || link?.startsWith('https') ? ( + <> + {link?.includes('wikipedia.org') && ( +
    + Wikipedia Logo + + + + {link} + + + +
    + )} + {link?.includes('storage.googleapis.com') && ( +
    + Google Cloud Storage Logo + + {decodeURIComponent(link).split('/').at(-1)?.split('?')[0] ?? 'GCS File'} + +
    + )} + {link?.startsWith('s3://') && ( +
    + S3 Logo + + {decodeURIComponent(link).split('/').at(-1) ?? 'S3 File'} + +
    + )} + {youtubeLinkValidation(link) && ( + <> +
    + + + + + {link} + + + +
    + + )} + {!link?.startsWith('s3://') && + !link?.includes('storage.googleapis.com') && + !link?.includes('wikipedia.org') && + !link?.includes('youtube.com') && ( +
    + + + {link} + +
    + )} + + ) : ( +
    + + + {link} + + {/* {chunks?.length > 0 && ( + + - Page{' '} + {chunks + .map((c) => c.page_number as number) + .sort((a, b) => a - b) + .join(', ')} + + )} */} +
    + )} +
  • + ); + })} +
+ ) : ( + No Sources Found + )} +
+ + {loading ? ( + + + + ) : Object.keys(groupedEntities).length > 0 ? ( +
    + {sortedLabels.map((label, index) => ( +
  • +
    + {label} ({labelCounts[label]}) +
    + + {Array.from(groupedEntities[label].texts).slice(0, 3).join(', ')} + +
  • + ))} +
+ ) : ( + No Entities Found + )} +
+ + {loading ? ( + + + + ) : chunks.length > 0 ? ( +
+
    + {chunks.map((chunk) => ( +
  • + {chunk?.page_number ? ( + <> +
    + + + {/* {chunk?.fileName}, Page: {chunk?.page_number} */} + {chunk?.fileName} + +
    + Similarity Score: {chunk?.score} + + ) : chunk?.url && chunk?.start_time ? ( + <> +
    + + + + {chunk?.fileName} + + +
    + Similarity Score: {chunk?.score} + + ) : chunk?.url && chunk?.url.includes('wikipedia.org') ? ( + <> +
    + + {chunk?.fileName} +
    + Similarity Score: {chunk?.score} + + ) : chunk?.url && chunk?.url.includes('storage.googleapis.com') ? ( + <> +
    + + {chunk?.fileName} +
    + Similarity Score: {chunk?.score} + + ) : chunk?.url && chunk?.url.startsWith('s3://') ? ( + <> +
    + + {chunk?.fileName} +
    + + ) : chunk?.url && + !chunk?.url.startsWith('s3://') && + !chunk?.url.includes('storage.googleapis.com') && + !chunk?.url.includes('wikipedia.org') && + !chunk?.url.includes('youtube.com') ? ( + <> +
    + + + {chunk?.url} + +
    + Similarity Score: {chunk?.score} + + ) : ( + <> + )} + {chunk?.text} +
  • + ))} +
+
+ ) : ( + No Chunks Found + )} +
+
+ {activeTab == 4 && nodes.length && relationships.length ? ( + + + + ) : ( + <> + )} +
+ ); +}; +export default InfoModal; diff --git a/frontend/src/components/Content.tsx b/frontend/src/components/Content.tsx index 86320b07..0909cb61 100644 --- a/frontend/src/components/Content.tsx +++ b/frontend/src/components/Content.tsx @@ -1,26 +1,36 @@ -import { useEffect, useState, useMemo } from 'react'; -import ConnectionModal from './ConnectionModal'; +import { useEffect, useState, useMemo, useCallback } from 'react'; +import ConnectionModal from './Popups/ConnectionModal/ConnectionModal'; import LlmDropdown from './Dropdown'; import FileTable from './FileTable'; import { Button, Typography, Flex, StatusIndicator } from '@neo4j-ndl/react'; import { useCredentials } from '../context/UserCredentials'; import { useFileContext } from '../context/UsersFiles'; -import CustomAlert from './Alert'; +import CustomAlert from './UI/Alert'; import { extractAPI } from '../utils/FileAPI'; -import { ContentProps, CustomFile, OptionType, UserCredentials, alertStateType } from '../types'; -import { updateGraphAPI } from '../services/UpdateGraph'; -import GraphViewModal from './GraphViewModal'; -import deleteAPI from '../services/deleteFiles'; -import DeletePopUp from './DeletePopUp'; +import { ContentProps, CustomFile, Menuitems, OptionType, UserCredentials, alertStateType } from '../types'; +import deleteAPI from '../services/DeleteFiles'; +import { postProcessing } from '../services/PostProcessing'; +import DeletePopUp from './Popups/DeletePopUp/DeletePopUp'; import { triggerStatusUpdateAPI } from '../services/ServerSideStatusUpdateAPI'; import useServerSideEvent from '../hooks/useSse'; import { useSearchParams } from 'react-router-dom'; -import ConfirmationDialog from './ConfirmationDialog'; -import { buttonCaptions, largeFileSize, tooltips } from '../utils/Constants'; -import ButtonWithToolTip from './ButtonWithToolTip'; +import ConfirmationDialog from './Popups/LargeFilePopUp/ConfirmationDialog'; +import { buttonCaptions, largeFileSize, taskParam, tooltips } from '../utils/Constants'; +import ButtonWithToolTip from './UI/ButtonWithToolTip'; import connectAPI from '../services/ConnectAPI'; +import SettingModalHOC from '../HOC/SettingModalHOC'; +import GraphViewModal from './Graph/GraphViewModal'; +import CustomMenu from './UI/Menu'; +import { TrashIconOutline } from '@neo4j-ndl/react/icons'; -const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => { +const Content: React.FC = ({ + isLeftExpanded, + isRightExpanded, + openTextSchema, + isSchema, + setIsSchema, + openOrphanNodeDeletionModal, +}) => { const [init, setInit] = useState(false); const [openConnection, setOpenConnection] = useState(false); const [openGraphView, setOpenGraphView] = useState(false); @@ -29,6 +39,10 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => const { setUserCredentials, userCredentials } = useCredentials(); const [showConfirmationModal, setshowConfirmationModal] = useState(false); const [extractLoading, setextractLoading] = useState(false); + const [isLargeFile, setIsLargeFile] = useState(false); + const [showSettingnModal, setshowSettingModal] = useState(false); + const [openDeleteMenu, setopenDeleteMenu] = useState(false); + const [deleteAnchor, setdeleteAnchor] = useState(null); const { filesData, @@ -220,6 +234,7 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => }; const handleGenerateGraph = (allowLargeFiles: boolean, selectedFilesFromAllfiles: CustomFile[]) => { + setIsLargeFile(false); const data = []; if (selectedfileslength && allowLargeFiles) { for (let i = 0; i < selectedfileslength; i++) { @@ -230,7 +245,7 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => } Promise.allSettled(data).then(async (_) => { setextractLoading(false); - await updateGraphAPI(userCredentials as UserCredentials); + await postProcessing(userCredentials as UserCredentials, taskParam); }); } else if (selectedFilesFromAllfiles.length && allowLargeFiles) { // @ts-ignore @@ -241,7 +256,7 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => } Promise.allSettled(data).then(async (_) => { setextractLoading(false); - await updateGraphAPI(userCredentials as UserCredentials); + await postProcessing(userCredentials as UserCredentials, taskParam); }); } }; @@ -376,6 +391,135 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => } }, []); + useEffect(() => { + const storedSchema = localStorage.getItem('isSchema'); + if (storedSchema !== null) { + setIsSchema(JSON.parse(storedSchema)); + } + }, []); + + const onClickHandler = () => { + if (isSchema) { + if (selectedRows.length) { + let selectedLargeFiles: CustomFile[] = []; + selectedRows.forEach((f) => { + const parsedData: CustomFile = JSON.parse(f); + if (parsedData.fileSource === 'local file') { + if (typeof parsedData.size === 'number' && parsedData.status === 'New' && parsedData.size > largeFileSize) { + selectedLargeFiles.push(parsedData); + } + } + }); + // @ts-ignore + if (selectedLargeFiles.length) { + setIsLargeFile(true); + setshowConfirmationModal(true); + handleGenerateGraph(false, []); + } else { + setIsLargeFile(false); + handleGenerateGraph(true, filesData); + } + } else if (filesData.length) { + const largefiles = filesData.filter((f) => { + if (typeof f.size === 'number' && f.status === 'New' && f.size > largeFileSize) { + return true; + } + return false; + }); + const selectAllNewFiles = filesData.filter((f) => f.status === 'New'); + const stringified = selectAllNewFiles.reduce((accu, f) => { + const key = JSON.stringify(f); + // @ts-ignore + accu[key] = true; + return accu; + }, {}); + setRowSelection(stringified); + if (largefiles.length) { + setIsLargeFile(true); + setshowConfirmationModal(true); + handleGenerateGraph(false, []); + } else { + setIsLargeFile(false); + handleGenerateGraph(true, filesData); + } + } + } else { + if (selectedRows.length) { + let selectedLargeFiles: CustomFile[] = []; + selectedRows.forEach((f) => { + const parsedData: CustomFile = JSON.parse(f); + if (parsedData.fileSource === 'local file') { + if (typeof parsedData.size === 'number' && parsedData.status === 'New' && parsedData.size > largeFileSize) { + selectedLargeFiles.push(parsedData); + } + } + }); + // @ts-ignore + if (selectedLargeFiles.length) { + setIsLargeFile(true); + } else { + setIsLargeFile(false); + } + } else if (filesData.length) { + const largefiles = filesData.filter((f) => { + if (typeof f.size === 'number' && f.status === 'New' && f.size > largeFileSize) { + return true; + } + return false; + }); + const selectAllNewFiles = filesData.filter((f) => f.status === 'New'); + const stringified = selectAllNewFiles.reduce((accu, f) => { + const key = JSON.stringify(f); + // @ts-ignore + accu[key] = true; + return accu; + }, {}); + setRowSelection(stringified); + if (largefiles.length) { + setIsLargeFile(true); + } else { + setIsLargeFile(false); + } + } + setshowSettingModal(true); + } + }; + + const deleteMenuItems: Menuitems[] = useMemo( + () => [ + { + title: `Delete Files ${selectedfileslength > 0 ? `(${selectedfileslength})` : ''}`, + onClick: () => setshowDeletePopUp(true), + disabledCondition: !selectedfileslength, + description: tooltips.deleteFile, + }, + { + title: 'Delete Orphan Nodes', + onClick: () => openOrphanNodeDeletionModal(), + disabledCondition: false, + }, + ], + [selectedfileslength] + ); + + const handleContinue = () => { + if (!isLargeFile) { + handleGenerateGraph(true, filesData); + setshowSettingModal(false); + } else { + setshowSettingModal(false); + setshowConfirmationModal(true); + handleGenerateGraph(false, []); + } + setIsSchema(true); + setalertDetails({ + showAlert: true, + alertType: 'success', + alertMessage: 'Schema is set successfully', + }); + localStorage.setItem('isSchema', JSON.stringify(true)); + }; + return ( <> {alertDetails.showAlert && ( @@ -386,6 +530,14 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => alertMessage={alertDetails.alertMessage} /> )} + {isSchema && ( + + )} {showConfirmationModal && filesForProcessing.length && ( = ({ isLeftExpanded, isRightExpanded }) => loading={deleteLoading} > )} + {showSettingnModal && ( + setshowSettingModal(false)} + onContinue={handleContinue} + open={showSettingnModal} + openTextSchema={openTextSchema} + isSchema={isSchema} + setIsSchema={setIsSchema} + /> + )}
= ({ isLeftExpanded, isRightExpanded }) => justifyContent='space-between' flexDirection='row' > - + { - if (selectedRows.length) { - let selectedLargeFiles: CustomFile[] = []; - selectedRows.forEach((f) => { - const parsedData: CustomFile = JSON.parse(f); - if (parsedData.fileSource === 'local file') { - if ( - typeof parsedData.size === 'number' && - parsedData.status === 'New' && - parsedData.size > largeFileSize - ) { - selectedLargeFiles.push(parsedData); - } - } - }); - // @ts-ignore - if (selectedLargeFiles.length) { - setshowConfirmationModal(true); - handleGenerateGraph(false, []); - } else { - handleGenerateGraph(true, filesData); - } - } else if (filesData.length) { - const largefiles = filesData.filter((f) => { - if (typeof f.size === 'number' && f.status === 'New' && f.size > largeFileSize) { - return true; - } - return false; - }); - const selectAllNewFiles = filesData.filter((f) => f.status === 'New'); - const stringified = selectAllNewFiles.reduce((accu, f) => { - const key = JSON.stringify(f); - // @ts-ignore - accu[key] = true; - return accu; - }, {}); - setRowSelection(stringified); - if (largefiles.length) { - setshowConfirmationModal(true); - handleGenerateGraph(false, []); - } else { - handleGenerateGraph(true, filesData); - } - } - }} + onClick={onClickHandler} disabled={disableCheck} className='mr-0.5' > @@ -527,19 +646,26 @@ const Content: React.FC = ({ isLeftExpanded, isRightExpanded }) => > {buttonCaptions.exploreGraphWithBloom} - setshowDeletePopUp(true)} - disabled={!selectedfileslength} - className='ml-0.5' - label='Delete Files' + { + setopenDeleteMenu(false); + }, [])} + items={deleteMenuItems} + MenuAnchor={deleteAnchor} + anchorOrigin={useMemo(() => ({ horizontal: 'left', vertical: 'bottom' }), [])} + transformOrigin={useMemo(() => ({ horizontal: 'right', vertical: 'top' }), [])} + > +
diff --git a/frontend/src/components/S3Bucket.tsx b/frontend/src/components/DataSources/AWS/S3Bucket.tsx similarity index 52% rename from frontend/src/components/S3Bucket.tsx rename to frontend/src/components/DataSources/AWS/S3Bucket.tsx index 17cc874c..e39dc949 100644 --- a/frontend/src/components/S3Bucket.tsx +++ b/frontend/src/components/DataSources/AWS/S3Bucket.tsx @@ -1,7 +1,7 @@ -import { DataComponentProps } from '../types'; -import s3logo from '../assets/images/s3logo.png'; -import CustomButton from './CustomButton'; -import { buttonCaptions } from '../utils/Constants'; +import { DataComponentProps } from '../../../types'; +import s3logo from '../../../assets/images/s3logo.png'; +import CustomButton from '../../UI/CustomButton'; +import { buttonCaptions } from '../../../utils/Constants'; const S3Component: React.FC = ({ openModal }) => { return ( diff --git a/frontend/src/components/S3Modal.tsx b/frontend/src/components/DataSources/AWS/S3Modal.tsx similarity index 94% rename from frontend/src/components/S3Modal.tsx rename to frontend/src/components/DataSources/AWS/S3Modal.tsx index bcf1beb1..e9d11fd8 100644 --- a/frontend/src/components/S3Modal.tsx +++ b/frontend/src/components/DataSources/AWS/S3Modal.tsx @@ -1,13 +1,13 @@ import { TextInput } from '@neo4j-ndl/react'; import React, { useState } from 'react'; -import { CustomFile, CustomFileBase, S3ModalProps, UserCredentials } from '../types'; -import { urlScanAPI } from '../services/URLScan'; -import { useCredentials } from '../context/UserCredentials'; -import { validation } from '../utils/Utils'; -import { useFileContext } from '../context/UsersFiles'; +import { CustomFile, CustomFileBase, S3ModalProps, UserCredentials } from '../../../types'; +import { urlScanAPI } from '../../../services/URLScan'; +import { useCredentials } from '../../../context/UserCredentials'; +import { validation } from '../../../utils/Utils'; +import { useFileContext } from '../../../context/UsersFiles'; import { v4 as uuidv4 } from 'uuid'; -import CustomModal from '../HOC/CustomModal'; -import { buttonCaptions } from '../utils/Constants'; +import CustomModal from '../../../HOC/CustomModal'; +import { buttonCaptions } from '../../../utils/Constants'; interface S3File { fileName: string; fileSize: number; diff --git a/frontend/src/components/GCSButton.tsx b/frontend/src/components/DataSources/GCS/GCSButton.tsx similarity index 51% rename from frontend/src/components/GCSButton.tsx rename to frontend/src/components/DataSources/GCS/GCSButton.tsx index 16d94bcc..d8153903 100644 --- a/frontend/src/components/GCSButton.tsx +++ b/frontend/src/components/DataSources/GCS/GCSButton.tsx @@ -1,7 +1,7 @@ -import gcslogo from '../assets/images/gcs.webp'; -import { DataComponentProps } from '../types'; -import { buttonCaptions } from '../utils/Constants'; -import CustomButton from './CustomButton'; +import gcslogo from '../../../assets/images/gcs.webp'; +import { DataComponentProps } from '../../../types'; +import { buttonCaptions } from '../../../utils/Constants'; +import CustomButton from '../../UI/CustomButton'; const GCSButton: React.FC = ({ openModal }) => { return ( diff --git a/frontend/src/components/GCSModal.tsx b/frontend/src/components/DataSources/GCS/GCSModal.tsx similarity index 94% rename from frontend/src/components/GCSModal.tsx rename to frontend/src/components/DataSources/GCS/GCSModal.tsx index 2ba9ddaf..08c4282d 100644 --- a/frontend/src/components/GCSModal.tsx +++ b/frontend/src/components/DataSources/GCS/GCSModal.tsx @@ -1,14 +1,14 @@ import { TextInput } from '@neo4j-ndl/react'; import { useCallback, useEffect, useState } from 'react'; -import { useCredentials } from '../context/UserCredentials'; -import { useFileContext } from '../context/UsersFiles'; -import { urlScanAPI } from '../services/URLScan'; -import { CustomFileBase, GCSModalProps, fileName, nonoautherror } from '../types'; +import { useCredentials } from '../../../context/UserCredentials'; +import { useFileContext } from '../../../context/UsersFiles'; +import { urlScanAPI } from '../../../services/URLScan'; +import { CustomFileBase, GCSModalProps, fileName, nonoautherror } from '../../../types'; import { v4 as uuidv4 } from 'uuid'; -import CustomModal from '../HOC/CustomModal'; +import CustomModal from '../../../HOC/CustomModal'; import { useGoogleLogin } from '@react-oauth/google'; -import { useAlertContext } from '../context/Alert'; -import { buttonCaptions } from '../utils/Constants'; +import { useAlertContext } from '../../../context/Alert'; +import { buttonCaptions } from '../../../utils/Constants'; const GCSModal: React.FC = ({ hideModal, open, openGCSModal }) => { const [bucketName, setbucketName] = useState(''); @@ -148,7 +148,7 @@ const GCSModal: React.FC = ({ hideModal, open, openGCSModal }) => const submitHandler = async () => { if (bucketName.trim() === '' || projectId.trim() === '') { setStatus('danger'); - setStatusMessage('Please Fill the Bucket Name'); + setStatusMessage('Please Fill the Credentials'); setTimeout(() => { setStatus('unknown'); }, 5000); diff --git a/frontend/src/components/DropZone.tsx b/frontend/src/components/DataSources/Local/DropZone.tsx similarity index 94% rename from frontend/src/components/DropZone.tsx rename to frontend/src/components/DataSources/Local/DropZone.tsx index 8fe718c7..e1c245c0 100644 --- a/frontend/src/components/DropZone.tsx +++ b/frontend/src/components/DataSources/Local/DropZone.tsx @@ -1,16 +1,16 @@ import axios from 'axios'; import { Dropzone, Flex, Typography } from '@neo4j-ndl/react'; import React, { useState, useEffect, FunctionComponent } from 'react'; -import Loader from '../utils/Loader'; +import Loader from '../../../utils/Loader'; import { v4 as uuidv4 } from 'uuid'; -import { useCredentials } from '../context/UserCredentials'; -import { useFileContext } from '../context/UsersFiles'; -import CustomAlert from './Alert'; -import { CustomFile, CustomFileBase, UploadResponse, alertStateType } from '../types'; -import { buttonCaptions, chunkSize } from '../utils/Constants'; -import { url } from '../utils/Utils'; +import { useCredentials } from '../../../context/UserCredentials'; +import { useFileContext } from '../../../context/UsersFiles'; +import CustomAlert from '../../UI/Alert'; +import { CustomFile, CustomFileBase, UploadResponse, alertStateType } from '../../../types'; +import { buttonCaptions, chunkSize } from '../../../utils/Constants'; +import { url } from '../../../utils/Utils'; import { InformationCircleIconOutline } from '@neo4j-ndl/react/icons'; -import IconButtonWithToolTip from './IconButtonToolTip'; +import IconButtonWithToolTip from '../../UI/IconButtonToolTip'; const DropZone: FunctionComponent = () => { const { filesData, setFilesData, model } = useFileContext(); @@ -221,7 +221,7 @@ const DropZone: FunctionComponent = () => { )} } + loadingComponent={isLoading && } isTesting={true} className='!bg-none dropzoneContainer' supportedFilesDescription={ diff --git a/frontend/src/components/FileTable.tsx b/frontend/src/components/FileTable.tsx index 727e95b2..9c8df4d9 100644 --- a/frontend/src/components/FileTable.tsx +++ b/frontend/src/components/FileTable.tsx @@ -30,15 +30,15 @@ import { statusCheck, capitalize } from '../utils/Utils'; import { SourceNode, CustomFile, FileTableProps, UserCredentials, statusupdate, alertStateType } from '../types'; import { useCredentials } from '../context/UserCredentials'; import { MagnifyingGlassCircleIconSolid } from '@neo4j-ndl/react/icons'; -import CustomAlert from './Alert'; -import CustomProgressBar from './CustomProgressBar'; +import CustomAlert from './UI/Alert'; +import CustomProgressBar from './UI/CustomProgressBar'; import subscribe from '../services/PollingAPI'; import { triggerStatusUpdateAPI } from '../services/ServerSideStatusUpdateAPI'; import useServerSideEvent from '../hooks/useSse'; import { AxiosError } from 'axios'; import { XMarkIconOutline } from '@neo4j-ndl/react/icons'; import cancelAPI from '../services/CancelAPI'; -import IconButtonWithToolTip from './IconButtonToolTip'; +import IconButtonWithToolTip from './UI/IconButtonToolTip'; import { largeFileSize } from '../utils/Constants'; const FileTable: React.FC = ({ isExpanded, connectionStatus, setConnectionStatus, onInspect }) => { @@ -47,7 +47,7 @@ const FileTable: React.FC = ({ isExpanded, connectionStatus, set const columnHelper = createColumnHelper(); const [columnFilters, setColumnFilters] = useState([]); const [isLoading, setIsLoading] = useState(false); - //const [currentOuterHeight, setcurrentOuterHeight] = useState(window.outerHeight); + // const [currentOuterHeight, setcurrentOuterHeight] = useState(window.outerHeight); const [alertDetails, setalertDetails] = useState({ showAlert: false, alertType: 'error', @@ -252,7 +252,11 @@ const FileTable: React.FC = ({ isExpanded, connectionStatus, set columnHelper.accessor((row) => row, { id: 'source', cell: (info) => { - if (info.row.original.fileSource === 'youtube' || info.row.original.fileSource === 'Wikipedia') { + if ( + info.row.original.fileSource === 'youtube' || + info.row.original.fileSource === 'Wikipedia' || + info.row.original.fileSource === 'web-url' + ) { return ( @@ -388,7 +392,7 @@ const FileTable: React.FC = ({ isExpanded, connectionStatus, set userCredentials && userCredentials.database ) { - if (item?.fileSize > largeFileSize) { + if (item?.fileSize < largeFileSize) { subscribe( item.fileName, userCredentials?.uri, diff --git a/frontend/src/components/GraphViewButton.tsx b/frontend/src/components/Graph/GraphViewButton.tsx similarity index 100% rename from frontend/src/components/GraphViewButton.tsx rename to frontend/src/components/Graph/GraphViewButton.tsx diff --git a/frontend/src/components/GraphViewModal.tsx b/frontend/src/components/Graph/GraphViewModal.tsx similarity index 96% rename from frontend/src/components/GraphViewModal.tsx rename to frontend/src/components/Graph/GraphViewModal.tsx index 5a40b2d7..ab80ae41 100644 --- a/frontend/src/components/GraphViewModal.tsx +++ b/frontend/src/components/Graph/GraphViewModal.tsx @@ -1,24 +1,23 @@ import { Banner, Checkbox, Dialog, IconButtonArray, LoadingSpinner } from '@neo4j-ndl/react'; import { useCallback, useEffect, useRef, useState } from 'react'; -import { GraphType, GraphViewModalProps, Scheme, UserCredentials } from '../types'; +import { GraphType, GraphViewModalProps, Scheme, UserCredentials } from '../../types'; import { InteractiveNvlWrapper } from '@neo4j-nvl/react'; import NVL, { NvlOptions } from '@neo4j-nvl/base'; import type { Node, Relationship } from '@neo4j-nvl/base'; import { Resizable } from 're-resizable'; - import { DragIcon, FitToScreenIcon, MagnifyingGlassMinusIconOutline, MagnifyingGlassPlusIconOutline, } from '@neo4j-ndl/react/icons'; -import IconButtonWithToolTip from './IconButtonToolTip'; -import { processGraphData } from '../utils/Utils'; -import { useCredentials } from '../context/UserCredentials'; +import IconButtonWithToolTip from '../UI/IconButtonToolTip'; +import { processGraphData } from '../../utils/Utils'; +import { useCredentials } from '../../context/UserCredentials'; import { LegendsChip } from './LegendsChip'; -import graphQueryAPI from '../services/GraphQuery'; -import { queryMap } from '../utils/Constants'; -import { useFileContext } from '../context/UsersFiles'; +import graphQueryAPI from '../../services/GraphQuery'; +import { queryMap } from '../../utils/Constants'; +import { useFileContext } from '../../context/UsersFiles'; const GraphViewModal: React.FunctionComponent = ({ open, diff --git a/frontend/src/components/LegendsChip.tsx b/frontend/src/components/Graph/LegendsChip.tsx similarity index 57% rename from frontend/src/components/LegendsChip.tsx rename to frontend/src/components/Graph/LegendsChip.tsx index 0316cad4..f1d2900e 100644 --- a/frontend/src/components/LegendsChip.tsx +++ b/frontend/src/components/Graph/LegendsChip.tsx @@ -1,5 +1,6 @@ import { useMemo } from 'react'; -import { LegendChipProps } from '../types'; +import { LegendChipProps } from '../../types'; +import Legend from '../UI/Legend'; export const LegendsChip: React.FunctionComponent = ({ scheme, title, nodes }) => { const chunkcount = useMemo( @@ -7,10 +8,5 @@ export const LegendsChip: React.FunctionComponent = ({ scheme, () => [...new Set(nodes?.filter((n) => n?.labels?.includes(title)).map((i) => i.id))].length, [] ); - return ( -
- {title} - {chunkcount && `(${chunkcount})`} -
- ); + return ; }; diff --git a/frontend/src/components/IconsPlacement.tsx b/frontend/src/components/IconsPlacement.tsx deleted file mode 100644 index 182ec064..00000000 --- a/frontend/src/components/IconsPlacement.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { TrashIconOutline, XMarkIconOutline } from '@neo4j-ndl/react/icons'; -import { IconButton } from '@neo4j-ndl/react'; -import { Messages } from '../types'; -import IconButtonWithToolTip from './IconButtonToolTip'; -import { tooltips } from '../utils/Constants'; - -interface IconProps { - closeChatBot: () => void; - deleteOnClick?: () => void; - messages: Messages[]; -} - -const IconsPlacement: React.FC = ({ closeChatBot, deleteOnClick, messages }) => { - return ( -
- - - - - - -
- ); -}; - -export default IconsPlacement; diff --git a/frontend/src/components/InfoModal.tsx b/frontend/src/components/InfoModal.tsx deleted file mode 100644 index a043a4d9..00000000 --- a/frontend/src/components/InfoModal.tsx +++ /dev/null @@ -1,274 +0,0 @@ -import { Box, Typography, TextLink, Flex, Tabs, LoadingSpinner } from '@neo4j-ndl/react'; -import { DocumentTextIconOutline } from '@neo4j-ndl/react/icons'; -import '../styling/info.css'; -import Neo4jRetrievalLogo from '../assets/images/Neo4jRetrievalLogo.png'; -import wikipedialogo from '../assets/images/Wikipedia-logo-v2.svg'; -import youtubelogo from '../assets/images/youtube.png'; -import gcslogo from '../assets/images/gcs.webp'; -import s3logo from '../assets/images/s3logo.png'; -import { Chunk, Entity, GroupedEntity, UserCredentials, chatInfoMessage } from '../types'; -import { useEffect, useMemo, useState } from 'react'; -import HoverableLink from './HoverableLink'; -import GraphViewButton from './GraphViewButton'; -import { chunkEntitiesAPI } from '../services/ChunkEntitiesInfo'; -import { useCredentials } from '../context/UserCredentials'; -import type { Node, Relationship } from '@neo4j-nvl/base'; -import { calcWordColor } from '@neo4j-devtools/word-color'; -import ReactMarkdown from 'react-markdown'; -const InfoModal: React.FC = ({ sources, model, total_tokens, response_time, chunk_ids }) => { - const [activeTab, setActiveTab] = useState(0); - const [infoEntities, setInfoEntities] = useState([]); - const [loading, setLoading] = useState(false); - const { userCredentials } = useCredentials(); - const [nodes, setNodes] = useState([]); - const [relationships, setRelationships] = useState([]); - const [chunks, setChunks] = useState([]); - const parseEntity = (entity: Entity) => { - const { labels, properties } = entity; - const label = labels[0]; - const text = properties.id; - return { label, text }; - }; - useEffect(() => { - setLoading(true); - chunkEntitiesAPI(userCredentials as UserCredentials, chunk_ids.join(',')) - .then((response) => { - setInfoEntities(response.data.data.nodes); - setNodes(response.data.data.nodes); - setRelationships(response.data.data.relationships); - setChunks(response.data.data.chunk_data); - setLoading(false); - }) - .catch((error) => { - console.error('Error fetching entities:', error); - setLoading(false); - }); - }, [chunk_ids]); - const groupedEntities = useMemo<{ [key: string]: GroupedEntity }>(() => { - return infoEntities.reduce((acc, entity) => { - const { label, text } = parseEntity(entity); - if (!acc[label]) { - const newColor = calcWordColor(label); - acc[label] = { texts: new Set(), color: newColor }; - } - acc[label].texts.add(text); - return acc; - }, {} as Record; color: string }>); - }, [infoEntities]); - const onChangeTabs = (tabId: number) => { - setActiveTab(tabId); - }; - const labelCounts = useMemo(() => { - const counts: { [label: string]: number } = {}; - infoEntities.forEach((entity) => { - const { labels } = entity; - const label = labels[0]; - counts[label] = counts[label] ? counts[label] + 1 : 1; - }); - return counts; - }, [infoEntities]); - const sortedLabels = useMemo(() => { - return Object.keys(labelCounts).sort((a, b) => labelCounts[b] - labelCounts[a]); - }, [labelCounts]); - - const generateYouTubeLink = (url: string, startTime: string) => { - try { - const urlObj = new URL(url); - urlObj.searchParams.set('t', startTime); - return urlObj.toString(); - } catch (error) { - console.error('Invalid URL:', error); - return ''; - } - }; - return ( - - - - - Retrieval information - - To generate this response, in {response_time} seconds we used{' '} - {total_tokens} tokens with the model{' '} - {model}. - - - - - Sources used - Top Entities used - Chunks - - - {activeTab === 0 ? ( - sources.length > 0 ? ( -
    - {sources.map((link, index) => ( -
  • - {link?.source_name.startsWith('http') || link?.source_name.startsWith('https') ? ( - <> - {link?.source_name.includes('wikipedia.org') && ( -
    - Wikipedia Logo - - {link?.source_name} - -
    - )} - {link?.source_name.includes('storage.googleapis.com') && ( -
    - Google Cloud Storage Logo - - {decodeURIComponent(link?.source_name).split('/').at(-1)?.split('?')[0] ?? 'GCS File'} - -
    - )} - {link.source_name.startsWith('s3://') && ( -
    - S3 Logo - - {decodeURIComponent(link?.source_name).split('/').at(-1) ?? 'S3 File'} - -
    - )} - {!link.source_name.includes('wikipedia.org') && - !link.source_name.includes('storage.googleapis.com') && - !link.source_name.startsWith('s3://') && ( - - - - {link.source_name} - - - - )} - - ) : ( -
    - - - {link?.source_name} - - {link?.page_numbers && link?.page_numbers.length > 0 && ( - - - Page {link?.page_numbers.sort((a, b) => a - b).join(', ')} - - )} -
    - )} -
  • - ))} -
- ) : ( - No Sources Found - ) - ) : activeTab === 1 ? ( - loading ? ( - - - - ) : Object.keys(groupedEntities).length > 0 ? ( -
    - {sortedLabels.map((label, index) => ( -
  • -
    - {label} ({labelCounts[label]}) -
    - - {Array.from(groupedEntities[label].texts).slice(0, 3).join(', ')} - -
  • - ))} -
- ) : ( - No Entities Found - ) - ) : loading ? ( - - - - ) : chunks.length > 0 ? ( -
-
    - {chunks.map((chunk) => ( -
  • - {chunk?.page_number ? ( -
    - - - {chunk?.fileName}, Page: {chunk?.page_number} - -
    - ) : chunk?.url && chunk?.start_time ? ( -
    - - - {chunk?.fileName} - -
    - ) : chunk?.url && chunk?.url.includes('wikipedia.org') ? ( -
    - - {chunk?.fileName} -
    - ) : chunk?.url && chunk?.url.includes('storage.googleapis.com') ? ( -
    - - {chunk?.fileName} -
    - ) : chunk?.url && chunk?.url.startsWith('s3://') ? ( -
    - - {chunk?.fileName} -
    - ) : ( - <> - )} - {chunk?.text} -
  • - ))} -
-
- ) : ( - No Chunks Found - )} -
- {activeTab === 1 && nodes.length && relationships.length ? ( - - - - ) : ( - <> - )} -
- ); -}; -export default InfoModal; diff --git a/frontend/src/components/Layout/DrawerChatbot.tsx b/frontend/src/components/Layout/DrawerChatbot.tsx index 6fd2385b..470b296d 100644 --- a/frontend/src/components/Layout/DrawerChatbot.tsx +++ b/frontend/src/components/Layout/DrawerChatbot.tsx @@ -1,5 +1,5 @@ import { Drawer } from '@neo4j-ndl/react'; -import Chatbot from '../Chatbot'; +import Chatbot from '../ChatBot/Chatbot'; import { Messages } from '../../types'; import { useMessageContext } from '../../context/UserMessages'; interface DrawerChatbotProps { diff --git a/frontend/src/components/Layout/DrawerDropzone.tsx b/frontend/src/components/Layout/DrawerDropzone.tsx index fdab4c33..6bc2e3ea 100644 --- a/frontend/src/components/Layout/DrawerDropzone.tsx +++ b/frontend/src/components/Layout/DrawerDropzone.tsx @@ -1,26 +1,23 @@ import { Drawer, Flex, StatusIndicator, Typography } from '@neo4j-ndl/react'; -import DropZone from '../DropZone'; -import React, { useState, useEffect, useCallback } from 'react'; +import DropZone from '../DataSources/Local/DropZone'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { healthStatus } from '../../services/HealthStatus'; -import S3Component from '../S3Bucket'; -import S3Modal from '../S3Modal'; -import Wikipedia from '../Wikipedia'; +import S3Component from '../DataSources/AWS/S3Bucket'; +import S3Modal from '../DataSources/AWS/S3Modal'; import { DrawerProps } from '../../types'; -import YouTubeButton from '../YoutubeButton'; -import YoutubeModal from '../YoutubeModal'; -import WikipediaModal from '../WikipediaModal'; -import GCSButton from '../GCSButton'; -import GCSModal from '../GCSModal'; -import CustomAlert from '../Alert'; +import GCSButton from '../DataSources/GCS/GCSButton'; +import GCSModal from '../DataSources/GCS/GCSModal'; +import CustomAlert from '../UI/Alert'; import { useAlertContext } from '../../context/Alert'; import { APP_SOURCES } from '../../utils/Constants'; +import GenericButton from '../WebSources/GenericSourceButton'; +import GenericModal from '../WebSources/GenericSourceModal'; const DrawerDropzone: React.FC = ({ isExpanded }) => { const [isBackendConnected, setIsBackendConnected] = useState(false); const [showModal, setshowModal] = useState(false); - const [showWikiepediaModal, setShowWikiepediaModal] = useState(false); - const [showYoutubeModal, setShowYoutubeModal] = useState(false); const [showGCSModal, setShowGCSModal] = useState(false); + const [showGenericModal, setshowGenericModal] = useState(false); const { closeAlert, alertState } = useAlertContext(); useEffect(() => { @@ -41,24 +38,31 @@ const DrawerDropzone: React.FC = ({ isExpanded }) => { const hideModal = useCallback(() => { setshowModal(false); }, []); - const openWikipediaModal = useCallback(() => { - setShowWikiepediaModal(true); - }, []); - const closeWikipediaModal = useCallback(() => { - setShowWikiepediaModal(false); - }, []); - const hideYoutubeModal = useCallback(() => { - setShowYoutubeModal(false); - }, []); - const openYoutubeModal = useCallback(() => { - setShowYoutubeModal(true); - }, []); const openGCSModal = useCallback(() => { setShowGCSModal(true); }, []); const hideGCSModal = useCallback(() => { setShowGCSModal(false); }, []); + const openGenericModal = useCallback(() => { + setshowGenericModal(true); + }, []); + const closeGenericModal = useCallback(() => { + setshowGenericModal(false); + }, []); + + const isYoutubeOnlyCheck = useMemo( + () => APP_SOURCES?.includes('youtube') && !APP_SOURCES.includes('wiki') && !APP_SOURCES.includes('web'), + [APP_SOURCES] + ); + const isWikipediaOnlyCheck = useMemo( + () => APP_SOURCES?.includes('wiki') && !APP_SOURCES.includes('youtube') && !APP_SOURCES.includes('web'), + [APP_SOURCES] + ); + const iswebOnlyCheck = useMemo( + () => APP_SOURCES?.includes('web') && !APP_SOURCES.includes('youtube') && !APP_SOURCES.includes('wiki'), + [APP_SOURCES] + ); return (
@@ -91,149 +95,89 @@ const DrawerDropzone: React.FC = ({ isExpanded }) => {
{process.env.ENV != 'PROD' ? ( <> - {isBackendConnected && APP_SOURCES != undefined && APP_SOURCES.length === 0 ? ( - -
+ + {APP_SOURCES != undefined && APP_SOURCES.includes('local') && ( +
-
- - -
-
- - -
-
- - -
-
- - -
-
- ) : ( - - {APP_SOURCES != undefined && APP_SOURCES.includes('local') && ( -
- -
- )} - {APP_SOURCES != undefined && APP_SOURCES.includes('youtube') && ( -
- - -
- )} - {APP_SOURCES != undefined && APP_SOURCES.includes('wiki') && ( -
- - -
- )} - {(APP_SOURCES != undefined && APP_SOURCES.includes('s3')) || - (APP_SOURCES != undefined && APP_SOURCES.includes('gcs')) ? ( - <> - {APP_SOURCES.includes('s3') && ( -
- - {' '} -
- )} - {APP_SOURCES.includes('gcs') && ( -
- - -
- )} - - ) : ( - <> - )} -
- )} + )} + {(APP_SOURCES != undefined && APP_SOURCES.includes('s3')) || + (APP_SOURCES != undefined && APP_SOURCES.includes('gcs')) ? ( + <> + {(APP_SOURCES.includes('youtube') || + APP_SOURCES.includes('wiki') || + APP_SOURCES.includes('web')) && ( +
+ + +
+ )} + {APP_SOURCES.includes('s3') && ( +
+ + {' '} +
+ )} + {APP_SOURCES.includes('gcs') && ( +
+ + +
+ )} + + ) : ( + <> + )} + ) : ( <> - {APP_SOURCES != undefined && APP_SOURCES.length === 0 ? ( - -
+ + {APP_SOURCES != undefined && APP_SOURCES.includes('local') && ( +
+ )} + {((APP_SOURCES != undefined && APP_SOURCES.includes('youtube')) || + (APP_SOURCES != undefined && APP_SOURCES.includes('wiki')) || + (APP_SOURCES != undefined && APP_SOURCES.includes('web'))) && (
- - -
-
- - -
-
- - -
-
- - + +
-
- ) : ( - - {APP_SOURCES != undefined && APP_SOURCES.includes('local') && ( -
- -
- )} - {APP_SOURCES != undefined && APP_SOURCES.includes('youtube') && ( -
- - -
- )} - {APP_SOURCES != undefined && APP_SOURCES.includes('wiki') && ( -
- - -
- )} - {(APP_SOURCES != undefined && APP_SOURCES.includes('s3')) || - (APP_SOURCES != undefined && APP_SOURCES.includes('gcs')) ? ( - <> - {APP_SOURCES != undefined && APP_SOURCES.includes('s3') && ( -
- - {' '} -
- )} - {APP_SOURCES != undefined && APP_SOURCES.includes('gcs') && ( -
- - -
- )} - - ) : ( - <> - )} -
- )} + )} + {(APP_SOURCES != undefined && APP_SOURCES.includes('s3')) || + (APP_SOURCES != undefined && APP_SOURCES.includes('gcs')) ? ( + <> + {APP_SOURCES != undefined && APP_SOURCES.includes('s3') && ( +
+ + {' '} +
+ )} + {APP_SOURCES != undefined && APP_SOURCES.includes('gcs') && ( +
+ + +
+ )} + + ) : ( + <> + )} + )}
diff --git a/frontend/src/components/Layout/Header.tsx b/frontend/src/components/Layout/Header.tsx index 2992fda1..87b1ac16 100644 --- a/frontend/src/components/Layout/Header.tsx +++ b/frontend/src/components/Layout/Header.tsx @@ -8,9 +8,11 @@ import { InformationCircleIconOutline, } from '@neo4j-ndl/react/icons'; import { Typography } from '@neo4j-ndl/react'; -import { useCallback } from 'react'; -import IconButtonWithToolTip from '../IconButtonToolTip'; +import { useCallback, useEffect } from 'react'; +import IconButtonWithToolTip from '../UI/IconButtonToolTip'; import { tooltips } from '../../utils/Constants'; +import { useFileContext } from '../../context/UsersFiles'; +import { Badge } from '@mui/material'; export default function Header({ themeMode, @@ -25,6 +27,12 @@ export default function Header({ window.open(url, '_blank'); }, []); + const { isSchema, setIsSchema } = useFileContext(); + + useEffect(() => { + setIsSchema(isSchema); + }, [isSchema]); + return (
)} - - - + + + + +
diff --git a/frontend/src/components/Layout/PageLayout.tsx b/frontend/src/components/Layout/PageLayout.tsx index 9af801a1..b18a9ec1 100644 --- a/frontend/src/components/Layout/PageLayout.tsx +++ b/frontend/src/components/Layout/PageLayout.tsx @@ -3,23 +3,33 @@ import SideNav from './SideNav'; import DrawerDropzone from './DrawerDropzone'; import DrawerChatbot from './DrawerChatbot'; import Content from '../Content'; -import SettingsModal from '../SettingModal'; +import SettingsModal from '../Popups/Settings/SettingModal'; import { clearChatAPI } from '../../services/QnaAPI'; import { useCredentials } from '../../context/UserCredentials'; import { UserCredentials, alertStateType } from '../../types'; import { useMessageContext } from '../../context/UserMessages'; import { AlertColor, AlertPropsColorOverrides } from '@mui/material'; import { OverridableStringUnion } from '@mui/types'; -import SchemaFromTextDialog from '../SchemaFromText'; -import CustomAlert from '../Alert'; +import { useFileContext } from '../../context/UsersFiles'; +import SchemaFromTextDialog from '../Popups/Settings/SchemaFromText'; +import CustomAlert from '../UI/Alert'; +import DeletePopUpForOrphanNodes from '../Popups/DeletePopUpForOrphanNodes'; +import deleteOrphanAPI from '../../services/DeleteOrphanNodes'; + export default function PageLayoutNew({ isSettingPanelExpanded, closeSettingModal, openSettingsDialog, + closeOrphanNodeDeletionModal, + showOrphanNodeDeletionModal, + openOrphanNodeDeletionModal, }: { isSettingPanelExpanded: boolean; closeSettingModal: () => void; openSettingsDialog: () => void; + closeOrphanNodeDeletionModal: () => void; + showOrphanNodeDeletionModal: boolean; + openOrphanNodeDeletionModal: () => void; }) { const [isLeftExpanded, setIsLeftExpanded] = useState(true); const [isRightExpanded, setIsRightExpanded] = useState(true); @@ -30,6 +40,7 @@ export default function PageLayoutNew({ const toggleLeftDrawer = () => setIsLeftExpanded(!isLeftExpanded); const toggleRightDrawer = () => setIsRightExpanded(!isRightExpanded); const [openTextSchemaDialog, setOpenTextSchemaDialog] = useState(false); + const [orphanDeleteAPIloading, setorphanDeleteAPIloading] = useState(false); const [alertDetails, setalertDetails] = useState({ showAlert: false, alertType: 'error', @@ -38,6 +49,7 @@ export default function PageLayoutNew({ const { messages } = useMessageContext(); const openSchemaFromTextDialog = useCallback(() => setOpenTextSchemaDialog(true), []); const closeSchemaFromTextDialog = useCallback(() => setOpenTextSchemaDialog(false), []); + const { isSchema, setIsSchema } = useFileContext(); const deleteOnClick = async () => { try { @@ -72,6 +84,16 @@ export default function PageLayoutNew({ alertMessage: '', }); }; + const orphanNodesDeleteHandler = async (selectedEntities: string[]) => { + try { + setorphanDeleteAPIloading(true); + const response = await deleteOrphanAPI(userCredentials as UserCredentials, selectedEntities); + setorphanDeleteAPIloading(false); + console.log(response); + } catch (error) { + console.log(error); + } + }; return (
{alertDetails.showAlert && ( @@ -90,16 +112,29 @@ export default function PageLayoutNew({ onClose={closeSchemaFromTextDialog} showAlert={showAlert} > + setShowChatBot(true)} isLeftExpanded={isLeftExpanded} isRightExpanded={isRightExpanded} showChatBot={showChatBot} + openTextSchema={openSchemaFromTextDialog} + openOrphanNodeDeletionModal={openOrphanNodeDeletionModal} + isSchema={isSchema} + setIsSchema={setIsSchema} /> {showDrawerChatbot && ( diff --git a/frontend/src/components/Layout/SideNav.tsx b/frontend/src/components/Layout/SideNav.tsx index 7a657d4a..12c0fe8b 100644 --- a/frontend/src/components/Layout/SideNav.tsx +++ b/frontend/src/components/Layout/SideNav.tsx @@ -8,14 +8,14 @@ import { ChatBubbleOvalLeftEllipsisIconOutline, CloudArrowUpIconSolid, } from '@neo4j-ndl/react/icons'; -import {} from '@neo4j-ndl/react/icons'; import { SideNavProps } from '../../types'; -import Chatbot from '../Chatbot'; +import Chatbot from '../ChatBot/Chatbot'; import { createPortal } from 'react-dom'; import { useMessageContext } from '../../context/UserMessages'; import { getIsLoading } from '../../utils/Utils'; -import IconsPlacement from '../IconsPlacement'; +import ExpandedChatButtonContainer from '../ChatBot/ExpandedChatButtonContainer'; import { tooltips } from '../../utils/Constants'; +import ChatModeToggle from '../ChatBot/ChatModeToggle'; const SideNav: React.FC = ({ position, @@ -127,6 +127,7 @@ const SideNav: React.FC = ({ } /> + {!isChatModalOpen && } )} @@ -143,7 +144,7 @@ const SideNav: React.FC = ({ disableCloseButton={true} > - = ({ children, className = '' }) => { - const containerRef = useRef(null); - const [overflowing, setOverflowing] = useState(false); - useEffect(() => { - const container = containerRef.current; - if (container) { - if (container.clientHeight > 440) { - setOverflowing(true); - } else { - setOverflowing(false); - } - } - }, [children]); - return ( -
- {children} -
- ); -}; -export default OverflowContainer; diff --git a/frontend/src/components/ConnectionModal.tsx b/frontend/src/components/Popups/ConnectionModal/ConnectionModal.tsx similarity index 98% rename from frontend/src/components/ConnectionModal.tsx rename to frontend/src/components/Popups/ConnectionModal/ConnectionModal.tsx index 55ff9896..2e183cfc 100644 --- a/frontend/src/components/ConnectionModal.tsx +++ b/frontend/src/components/Popups/ConnectionModal/ConnectionModal.tsx @@ -1,9 +1,9 @@ import { Button, Dialog, TextInput, Dropdown, Banner, Dropzone, Typography, TextLink } from '@neo4j-ndl/react'; import { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'; -import connectAPI from '../services/ConnectAPI'; -import { useCredentials } from '../context/UserCredentials'; +import connectAPI from '../../../services/ConnectAPI'; +import { useCredentials } from '../../../context/UserCredentials'; import { useSearchParams } from 'react-router-dom'; -import { buttonCaptions } from '../utils/Constants'; +import { buttonCaptions } from '../../../utils/Constants'; interface Message { type: 'success' | 'info' | 'warning' | 'danger' | 'unknown'; diff --git a/frontend/src/components/DeletePopUp.tsx b/frontend/src/components/Popups/DeletePopUp/DeletePopUp.tsx similarity index 100% rename from frontend/src/components/DeletePopUp.tsx rename to frontend/src/components/Popups/DeletePopUp/DeletePopUp.tsx diff --git a/frontend/src/components/Popups/DeletePopUpForOrphanNodes/index.tsx b/frontend/src/components/Popups/DeletePopUpForOrphanNodes/index.tsx new file mode 100644 index 00000000..ac2cdbb2 --- /dev/null +++ b/frontend/src/components/Popups/DeletePopUpForOrphanNodes/index.tsx @@ -0,0 +1,196 @@ +import { List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; +import { Box, Button, Checkbox, Dialog, Flex, Typography } from '@neo4j-ndl/react'; +import { useCallback, useEffect, useState } from 'react'; +import { UserCredentials, orphanNodeProps } from '../../../types'; +import { getOrphanNodes } from '../../../services/GetOrphanNodes'; +import { useCredentials } from '../../../context/UserCredentials'; +import Loader from '../../../utils/Loader'; +import Legend from '../../UI/Legend'; +import { calcWordColor } from '@neo4j-devtools/word-color'; +import { DocumentIconOutline } from '@neo4j-ndl/react/icons'; +import ButtonWithToolTip from '../../UI/ButtonWithToolTip'; + +export default function DeletePopUpForOrphanNodes({ + open, + deleteHandler, + deleteCloseHandler, + loading, +}: { + open: boolean; + deleteHandler: (selectedEntities: string[]) => Promise; + deleteCloseHandler: () => void; + loading: boolean; +}) { + const [orphanNodes, setOrphanNodes] = useState([]); + const [selectedOrphanNodesForDeletion, setselectedOrphanNodesForDeletion] = useState([]); + const [selectedAll, setselectedAll] = useState(false); + const [isLoading, setLoading] = useState(false); + const { userCredentials } = useCredentials(); + + useEffect(() => { + if (open) { + (async () => { + try { + setLoading(true); + const apiresponse = await getOrphanNodes(userCredentials as UserCredentials); + setLoading(false); + if (apiresponse.data.data.length) { + setOrphanNodes(apiresponse.data.data); + } + } catch (error) { + setLoading(false); + console.log(error); + } + })(); + } + }, [userCredentials, open]); + + const onChangeHandler = useCallback((isChecked: boolean, id: string) => { + if (isChecked) { + setselectedOrphanNodesForDeletion((prev) => [...prev, id]); + setOrphanNodes((prev) => prev.map((n) => ({ ...n, checked: n.e.elementId === id ? true : n.checked }))); + } else { + setselectedAll(false); + setselectedOrphanNodesForDeletion((prev) => prev.filter((s) => s != id)); + setOrphanNodes((prev) => prev.map((n) => ({ ...n, checked: n.e.elementId === id ? false : n.checked }))); + } + }, []); + + return ( + { + deleteCloseHandler(); + setselectedOrphanNodesForDeletion([]); + setOrphanNodes([]); + setselectedAll(false); + }} + > + + + Orphan Nodes Deletion + 100 nodes per batch + + + + {orphanNodes.length ? ( + { + if (e.target.checked) { + setselectedAll(true); + setOrphanNodes((prev) => prev.map((n) => ({ ...n, checked: true }))); + setselectedOrphanNodesForDeletion(orphanNodes.map((n) => n.e.elementId)); + } else { + setselectedAll(false); + setOrphanNodes((prev) => prev.map((n) => ({ ...n, checked: false }))); + setselectedOrphanNodesForDeletion([]); + } + }} + > + ) : ( + <> + )} + + {orphanNodes.length > 0 ? ( + orphanNodes.map((n, i) => { + return ( + + + + onChangeHandler(e.target.checked, n.e.elementId)} + tabIndex={-1} + /> + + + {n.e.id} + Connected Chunks: {n.chunkConnections} + + } + secondary={ + + + Labels : + + {n.e.labels.map((l, index) => ( + + ))} + + + + Related Documents : + + {Array.from(new Set([...n.documents])).map((d, index) => ( + + + + + {d} + + ))} + + + + } + /> + + + ); + }) + ) : isLoading ? ( + + ) : ( + <>No Nodes Found + )} + + + + + { + await deleteHandler(selectedOrphanNodesForDeletion); + selectedOrphanNodesForDeletion.forEach((eid: string) => { + setOrphanNodes((prev) => prev.filter((node) => node.e.elementId != eid)); + }); + setOrphanNodes((prev) => prev.map((n) => ({ ...n, checked: false }))); + }} + size='large' + loading={loading} + text={ + isLoading + ? 'Fetching Orphan Nodes' + : !isLoading && !orphanNodes.length + ? 'No Nodes Found' + : !selectedOrphanNodesForDeletion.length + ? 'No Nodes Selected' + : 'Delete Selected Nodes' + } + label='Orphan Node deletion button' + disabled={!selectedOrphanNodesForDeletion.length || !orphanNodes.length} + > + Continue + + + + ); +} diff --git a/frontend/src/components/ConfirmationDialog.tsx b/frontend/src/components/Popups/LargeFilePopUp/ConfirmationDialog.tsx similarity index 97% rename from frontend/src/components/ConfirmationDialog.tsx rename to frontend/src/components/Popups/LargeFilePopUp/ConfirmationDialog.tsx index d71d05e0..9a9691d9 100644 --- a/frontend/src/components/ConfirmationDialog.tsx +++ b/frontend/src/components/Popups/LargeFilePopUp/ConfirmationDialog.tsx @@ -1,8 +1,8 @@ import { Button, Dialog, Typography } from '@neo4j-ndl/react'; -import { CustomFile } from '../types'; +import { CustomFile } from '../../../types'; import LargeFilesAlert from './LargeFilesAlert'; import { useEffect, useState } from 'react'; -import { useFileContext } from '../context/UsersFiles'; +import { useFileContext } from '../../../context/UsersFiles'; export default function ConfirmationDialog({ largeFiles, diff --git a/frontend/src/components/LargeFilesAlert.tsx b/frontend/src/components/Popups/LargeFilePopUp/LargeFilesAlert.tsx similarity index 87% rename from frontend/src/components/LargeFilesAlert.tsx rename to frontend/src/components/Popups/LargeFilePopUp/LargeFilesAlert.tsx index a4a79ef3..aefafde5 100644 --- a/frontend/src/components/LargeFilesAlert.tsx +++ b/frontend/src/components/Popups/LargeFilePopUp/LargeFilesAlert.tsx @@ -1,16 +1,16 @@ import { Box, Checkbox, Flex, Typography } from '@neo4j-ndl/react'; import { DocumentTextIconOutline } from '@neo4j-ndl/react/icons'; -import { LargefilesProps } from '../types'; +import { LargefilesProps } from '../../../types'; import { List, ListItem, ListItemAvatar, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; import { FC } from 'react'; -import { chunkSize } from '../utils/Constants'; -import BellImage from '../assets/images/Stopwatch-blue.svg'; -import AlertIcon from './Layout/AlertIcon'; -import wikipedialogo from '../assets/images/Wikipedia-logo-v2.svg'; -import youtubelogo from '../assets/images/youtube.png'; -import gcslogo from '../assets/images/gcs.webp'; -import s3logo from '../assets/images/s3logo.png'; -import { calculateProcessingTime } from '../utils/Utils'; +import { chunkSize } from '../../../utils/Constants'; +import BellImage from '../../../assets/images/Stopwatch-blue.svg'; +import AlertIcon from '../../Layout/AlertIcon'; +import wikipedialogo from '../../../assets/images/Wikipedia-logo-v2.svg'; +import youtubelogo from '../../../assets/images/youtube.png'; +import gcslogo from '../../../assets/images/gcs.webp'; +import s3logo from '../../../assets/images/s3logo.png'; +import { calculateProcessingTime } from '../../../utils/Utils'; const imageIcon: Record = { Wikipedia: wikipedialogo, diff --git a/frontend/src/components/SchemaFromText.tsx b/frontend/src/components/Popups/Settings/SchemaFromText.tsx similarity index 94% rename from frontend/src/components/SchemaFromText.tsx rename to frontend/src/components/Popups/Settings/SchemaFromText.tsx index d760fb92..58a605ed 100644 --- a/frontend/src/components/SchemaFromText.tsx +++ b/frontend/src/components/Popups/Settings/SchemaFromText.tsx @@ -1,12 +1,12 @@ import { Checkbox, Dialog, Textarea } from '@neo4j-ndl/react'; import { useCallback, useState } from 'react'; -import { getNodeLabelsAndRelTypesFromText } from '../services/SchemaFromTextAPI'; -import { useCredentials } from '../context/UserCredentials'; -import { useFileContext } from '../context/UsersFiles'; +import { getNodeLabelsAndRelTypesFromText } from '../../../services/SchemaFromTextAPI'; +import { useCredentials } from '../../../context/UserCredentials'; +import { useFileContext } from '../../../context/UsersFiles'; import { AlertColor, AlertPropsColorOverrides } from '@mui/material'; import { OverridableStringUnion } from '@mui/types'; -import { buttonCaptions } from '../utils/Constants'; -import ButtonWithToolTip from './ButtonWithToolTip'; +import { buttonCaptions } from '../../../utils/Constants'; +import ButtonWithToolTip from '../../UI/ButtonWithToolTip'; const SchemaFromTextDialog = ({ open, diff --git a/frontend/src/components/SettingModal.tsx b/frontend/src/components/Popups/Settings/SettingModal.tsx similarity index 80% rename from frontend/src/components/SettingModal.tsx rename to frontend/src/components/Popups/Settings/SettingModal.tsx index e7476fc4..c6494ba3 100644 --- a/frontend/src/components/SettingModal.tsx +++ b/frontend/src/components/Popups/Settings/SettingModal.tsx @@ -1,27 +1,29 @@ import { Dialog, Dropdown } from '@neo4j-ndl/react'; import { OnChangeValue, ActionMeta } from 'react-select'; -import { OptionType, OptionTypeForExamples, UserCredentials, schema } from '../types'; -import { useFileContext } from '../context/UsersFiles'; -import { getNodeLabelsAndRelTypes } from '../services/GetNodeLabelsRelTypes'; -import { useCredentials } from '../context/UserCredentials'; +import { OptionType, OptionTypeForExamples, SettingsModalProps, UserCredentials, schema } from '../../../types'; +import { useFileContext } from '../../../context/UsersFiles'; +import { getNodeLabelsAndRelTypes } from '../../../services/GetNodeLabelsRelTypes'; +import { useCredentials } from '../../../context/UserCredentials'; import { MouseEventHandler, useCallback, useEffect, useState } from 'react'; -import schemaExamples from '../assets/schemas.json'; -import ButtonWithToolTip from './ButtonWithToolTip'; -import { tooltips } from '../utils/Constants'; +import schemaExamples from '../../../assets/schemas.json'; +import ButtonWithToolTip from '../../UI/ButtonWithToolTip'; +import { buttonCaptions, tooltips } from '../../../utils/Constants'; +import { useAlertContext } from '../../../context/Alert'; -export default function SettingsModal({ +const SettingsModal: React.FC = ({ open, onClose, - opneTextSchema, -}: { - open: boolean; - onClose: () => void; - opneTextSchema: () => void; -}) { + openTextSchema, + onContinue, + settingView, + setIsSchema, + isSchema, +}) => { const { setSelectedRels, setSelectedNodes, selectedNodes, selectedRels, selectedSchemas, setSelectedSchemas } = useFileContext(); const { userCredentials } = useCredentials(); const [loading, setLoading] = useState(false); + const removeNodesAndRels = (nodelabels: string[], relationshipTypes: string[]) => { const labelsToRemoveSet = new Set(nodelabels); const relationshipLabelsToremoveSet = new Set(relationshipTypes); @@ -48,7 +50,6 @@ export default function SettingsModal({ const { nodelabels, relationshipTypes } = removedSchema; removeNodesAndRels(nodelabels, relationshipTypes); } else if (actionMeta.action === 'clear') { - console.log({ actionMeta }); const removedSchemas = actionMeta.removedValues.map((s) => JSON.parse(s.value)); const removedNodelabels = removedSchemas.map((s) => s.nodelabels).flatMap((k) => k); const removedRelations = removedSchemas.map((s) => s.relationshipTypes).flatMap((k) => k); @@ -115,6 +116,8 @@ export default function SettingsModal({ const [relationshipTypeOptions, setrelationshipTypeOptions] = useState([]); const [defaultExamples, setdefaultExamples] = useState([]); + const { showAlert } = useAlertContext(); + useEffect(() => { const parsedData = schemaExamples.reduce((accu: OptionTypeForExamples[], example) => { const examplevalues: OptionTypeForExamples = { @@ -129,6 +132,7 @@ export default function SettingsModal({ }, []); setdefaultExamples(parsedData); }, []); + useEffect(() => { if (userCredentials && open) { const getOptions = async () => { @@ -157,6 +161,21 @@ export default function SettingsModal({ setSelectedRels(relationshipTypeOptions); }, [nodeLabelOptions, relationshipTypeOptions]); + const handleClear = () => { + setIsSchema(false); + setSelectedNodes([]); + setSelectedRels([]); + setSelectedSchemas([]); + localStorage.setItem('isSchema', JSON.stringify(false)); + localStorage.setItem('selectedNodeLabels', JSON.stringify({ db: userCredentials?.uri, selectedOptions: [] })); + localStorage.setItem( + 'selectedRelationshipLabels', + JSON.stringify({ db: userCredentials?.uri, selectedOptions: [] }) + ); + showAlert('info', `Successfully Removed the Schema settings`); + onClose(); + }; + return ( Entity Graph Extraction Settings @@ -172,7 +191,7 @@ export default function SettingsModal({ value: selectedSchemas, menuPosition: 'fixed', }} - type='creatable' + type='select' /> - + { onClose(); - opneTextSchema(); + openTextSchema(); }} label='Get Existing Schema From Text' > Get Schema From Text + {settingView === 'contentView' ? ( + + {buttonCaptions.continueSettings} + + ) : ( + + {buttonCaptions.clearSettings} + + )} ); -} +}; + +export default SettingsModal; diff --git a/frontend/src/components/QuickStarter.tsx b/frontend/src/components/QuickStarter.tsx index 62ee4881..83442f88 100644 --- a/frontend/src/components/QuickStarter.tsx +++ b/frontend/src/components/QuickStarter.tsx @@ -11,6 +11,7 @@ const QuickStarter: React.FunctionComponent = () => { const themeUtils = React.useContext(ThemeWrapperContext); const [themeMode, setThemeMode] = useState(themeUtils.colorMode); const [showSettingsModal, setshowSettingsModal] = useState(false); + const [showOrphanNodeDeletionDialog, setshowOrphanNodeDeletionDialog] = useState(false); const toggleColorMode = () => { setThemeMode((prevThemeMode) => { @@ -24,6 +25,12 @@ const QuickStarter: React.FunctionComponent = () => { const closeSettingModal = () => { setshowSettingsModal(false); }; + const openOrphanNodeDeletionModal = () => { + setshowOrphanNodeDeletionDialog(true); + }; + const closeOrphanNodeDeletionModal = () => { + setshowOrphanNodeDeletionDialog(false); + }; return ( @@ -34,6 +41,9 @@ const QuickStarter: React.FunctionComponent = () => { openSettingsDialog={openSettingsModal} isSettingPanelExpanded={showSettingsModal} closeSettingModal={closeSettingModal} + closeOrphanNodeDeletionModal={closeOrphanNodeDeletionModal} + showOrphanNodeDeletionModal={showOrphanNodeDeletionDialog} + openOrphanNodeDeletionModal={openOrphanNodeDeletionModal} /> diff --git a/frontend/src/components/Alert.tsx b/frontend/src/components/UI/Alert.tsx similarity index 91% rename from frontend/src/components/Alert.tsx rename to frontend/src/components/UI/Alert.tsx index cfd73277..d98cc38f 100644 --- a/frontend/src/components/Alert.tsx +++ b/frontend/src/components/UI/Alert.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Snackbar from '@mui/material/Snackbar'; import Alert from '@mui/material/Alert'; -import { CustomAlertProps } from '../types'; +import { CustomAlertProps } from '../../types'; const CustomAlert: React.FC = ({ open, handleClose, alertMessage, severity = 'error' }) => { return ( diff --git a/frontend/src/components/ButtonWithToolTip.tsx b/frontend/src/components/UI/ButtonWithToolTip.tsx similarity index 100% rename from frontend/src/components/ButtonWithToolTip.tsx rename to frontend/src/components/UI/ButtonWithToolTip.tsx diff --git a/frontend/src/components/CustomButton.tsx b/frontend/src/components/UI/CustomButton.tsx similarity index 87% rename from frontend/src/components/CustomButton.tsx rename to frontend/src/components/UI/CustomButton.tsx index 1f0919c0..038adbe3 100644 --- a/frontend/src/components/CustomButton.tsx +++ b/frontend/src/components/UI/CustomButton.tsx @@ -1,4 +1,4 @@ -import { CommonButtonProps } from '../types'; +import { CommonButtonProps } from '../../types'; const CustomButton: React.FC = ({ openModal, wrapperclassName, logo, title, className }) => { return ( diff --git a/frontend/src/components/CustomProgressBar.tsx b/frontend/src/components/UI/CustomProgressBar.tsx similarity index 100% rename from frontend/src/components/CustomProgressBar.tsx rename to frontend/src/components/UI/CustomProgressBar.tsx diff --git a/frontend/src/components/UI/ErrroBoundary.tsx b/frontend/src/components/UI/ErrroBoundary.tsx new file mode 100644 index 00000000..b76a2769 --- /dev/null +++ b/frontend/src/components/UI/ErrroBoundary.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Banner } from '@neo4j-ndl/react'; + +export default class ErrorBoundary extends React.Component { + state = { hasError: false, errorMessage: '' }; + + static getDerivedStateFromError(_error: unknown) { + return { hasError: true }; + } + + componentDidCatch(error: Error, errorInfo: any) { + this.setState({ ...this.state, errorMessage: error.message }); + console.log({ error }); + console.log({ errorInfo }); + } + + render() { + if (this.state.hasError) { + return ( +
+ +
+ ); + } + return this.props.children; + } +} diff --git a/frontend/src/components/HoverableLink.tsx b/frontend/src/components/UI/HoverableLink.tsx similarity index 98% rename from frontend/src/components/HoverableLink.tsx rename to frontend/src/components/UI/HoverableLink.tsx index 763bc716..a212b0c8 100644 --- a/frontend/src/components/HoverableLink.tsx +++ b/frontend/src/components/UI/HoverableLink.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useRef } from 'react'; -import { HoverableLinkProps } from '../types'; +import { HoverableLinkProps } from '../../types'; const HoverableLink: React.FC = ({ url, children }) => { const [hovering, setHovering] = useState(false); const [iframeSrc, setIframeSrc] = useState(''); diff --git a/frontend/src/components/IconButtonToolTip.tsx b/frontend/src/components/UI/IconButtonToolTip.tsx similarity index 100% rename from frontend/src/components/IconButtonToolTip.tsx rename to frontend/src/components/UI/IconButtonToolTip.tsx diff --git a/frontend/src/components/UI/Legend.tsx b/frontend/src/components/UI/Legend.tsx new file mode 100644 index 00000000..5c7110a0 --- /dev/null +++ b/frontend/src/components/UI/Legend.tsx @@ -0,0 +1,16 @@ +export default function Legend({ + bgColor, + title, + chunkCount, +}: { + bgColor: string; + title: string; + chunkCount?: number; +}) { + return ( +
+ {title} + {chunkCount && `(${chunkCount})`} +
+ ); +} diff --git a/frontend/src/components/UI/Menu.tsx b/frontend/src/components/UI/Menu.tsx new file mode 100644 index 00000000..9315d46d --- /dev/null +++ b/frontend/src/components/UI/Menu.tsx @@ -0,0 +1,41 @@ +import { Menu } from '@neo4j-ndl/react'; +import { Menuitems, Origin } from '../../types'; + +export default function CustomMenu({ + open, + closeHandler, + items, + MenuAnchor, + anchorOrigin, + transformOrigin, +}: { + open: boolean; + closeHandler: () => void; + items: Menuitems[]; + MenuAnchor: HTMLElement | null; + anchorOrigin?: Origin; + transformOrigin?: Origin; +}) { + return ( + + {items.map((i, idx) => { + return ( + + ); + })} + + ); +} diff --git a/frontend/src/components/WebSources/CustomSourceInput.tsx b/frontend/src/components/WebSources/CustomSourceInput.tsx new file mode 100644 index 00000000..2cc1d5f6 --- /dev/null +++ b/frontend/src/components/WebSources/CustomSourceInput.tsx @@ -0,0 +1,71 @@ +import { Banner, Box, Button, Flex, TextInput } from '@neo4j-ndl/react'; +import { CustomInput } from '../../types'; + +export default function CustomSourceInput({ + value, + label, + placeHolder, + onChangeHandler, + submitHandler, + disabledCheck, + onCloseHandler, + id, + onBlurHandler, + status, + setStatus, + statusMessage, + isValid, + isFocused, + onPasteHandler, +}: CustomInput) { + return ( + + {status !== 'unknown' && ( + + setStatus('unknown')} + type={status} + name='Custom Banner' + className='text-lg font-semibold' + /> + + )} + +
+ +
+
+ + + + +
+ ); +} diff --git a/frontend/src/components/WebSources/GenericSourceButton.tsx b/frontend/src/components/WebSources/GenericSourceButton.tsx new file mode 100644 index 00000000..87be06fa --- /dev/null +++ b/frontend/src/components/WebSources/GenericSourceButton.tsx @@ -0,0 +1,37 @@ +import CustomButton from '../UI/CustomButton'; +import internet from '../../assets/images/web-search-svgrepo-com.svg'; +import { DataComponentProps } from '../../types'; +import { Flex, Typography } from '@neo4j-ndl/react'; +import IconButtonWithToolTip from '../UI/IconButtonToolTip'; +import { InformationCircleIconOutline } from '@neo4j-ndl/react/icons'; +import { APP_SOURCES } from '../../utils/Constants'; + +export default function GenericButton({ openModal }: DataComponentProps) { + return ( + + + + + Web Sources +
+ + + {APP_SOURCES != undefined && APP_SOURCES.includes('youtube') && Youtube} + {APP_SOURCES != undefined && APP_SOURCES.includes('wiki') && Wikipedia} + {APP_SOURCES != undefined && APP_SOURCES.includes('web') && Website} + + + } + > + + +
+
+
+
+ ); +} diff --git a/frontend/src/components/WebSources/GenericSourceModal.tsx b/frontend/src/components/WebSources/GenericSourceModal.tsx new file mode 100644 index 00000000..6ad89bf0 --- /dev/null +++ b/frontend/src/components/WebSources/GenericSourceModal.tsx @@ -0,0 +1,75 @@ +import { Box, Dialog, Tabs, Typography } from '@neo4j-ndl/react'; +import youtubelogo from '../../assets/images/youtube.png'; +import wikipedialogo from '../../assets/images/Wikipedia-logo-v2.svg'; +import weblogo from '../../assets/images/web-svgrepo-com.svg'; +import { useState } from 'react'; +import WikipediaInput from './WikiPedia/WikipediaInput'; +import WebInput from './Web/WebInput'; +import YoutubeInput from './Youtube/YoutubeInput'; +import { APP_SOURCES } from '../../utils/Constants'; +import Neo4jRetrievalLogo from '../../assets/images/Neo4jRetrievalLogo.png'; + +export default function GenericModal({ + open, + closeHandler, + isOnlyYoutube, + isOnlyWikipedia, + isOnlyWeb, +}: { + open: boolean; + closeHandler: () => void; + isOnlyYoutube?: boolean; + isOnlyWikipedia?: boolean; + isOnlyWeb?: boolean; +}) { + const [activeTab, setactiveTab] = useState(isOnlyYoutube ? 0 : isOnlyWikipedia ? 1 : isOnlyWeb ? 2 : 0); + const [isLoading, setIsLoading] = useState(false); + + return ( + + + + + + Web Sources + + Convert Any Web Source to Knoweldge graph + + + + + {APP_SOURCES != undefined && APP_SOURCES.includes('youtube') && ( + + + + )} + {APP_SOURCES != undefined && APP_SOURCES.includes('wiki') && ( + + + + )} + {APP_SOURCES != undefined && APP_SOURCES.includes('web') && ( + + + + )} + + {APP_SOURCES != undefined && APP_SOURCES.includes('youtube') && ( + + + + )} + {APP_SOURCES != undefined && APP_SOURCES.includes('wiki') && ( + + + + )} + {APP_SOURCES != undefined && APP_SOURCES.includes('web') && ( + + + + )} + + + ); +} diff --git a/frontend/src/components/WebSources/Web/WebInput.tsx b/frontend/src/components/WebSources/Web/WebInput.tsx new file mode 100644 index 00000000..16dcc46d --- /dev/null +++ b/frontend/src/components/WebSources/Web/WebInput.tsx @@ -0,0 +1,38 @@ +import { webLinkValidation } from '../../../utils/Utils'; +import useSourceInput from '../../../hooks/useSourceInput'; +import CustomSourceInput from '../CustomSourceInput'; + +export default function WebInput({ setIsLoading }: { setIsLoading: React.Dispatch> }) { + const { + inputVal, + onChangeHandler, + onBlurHandler, + submitHandler, + status, + setStatus, + statusMessage, + isFocused, + isValid, + onClose, + onPasteHandler, + } = useSourceInput(webLinkValidation, setIsLoading, 'web-url', false, false, true); + return ( + + ); +} diff --git a/frontend/src/components/WebSources/WikiPedia/WikipediaInput.tsx b/frontend/src/components/WebSources/WikiPedia/WikipediaInput.tsx new file mode 100644 index 00000000..cf90d834 --- /dev/null +++ b/frontend/src/components/WebSources/WikiPedia/WikipediaInput.tsx @@ -0,0 +1,42 @@ +import { wikiValidation } from '../../../utils/Utils'; +import useSourceInput from '../../../hooks/useSourceInput'; +import CustomSourceInput from '../CustomSourceInput'; + +export default function WikipediaInput({ + setIsLoading, +}: { + setIsLoading: React.Dispatch>; +}) { + const { + inputVal, + onChangeHandler, + onBlurHandler, + submitHandler, + status, + setStatus, + statusMessage, + isFocused, + isValid, + onClose, + onPasteHandler, + } = useSourceInput(wikiValidation, setIsLoading, 'Wikipedia', true, false, false); + return ( + + ); +} diff --git a/frontend/src/components/WebSources/Youtube/YoutubeInput.tsx b/frontend/src/components/WebSources/Youtube/YoutubeInput.tsx new file mode 100644 index 00000000..8652d7f9 --- /dev/null +++ b/frontend/src/components/WebSources/Youtube/YoutubeInput.tsx @@ -0,0 +1,42 @@ +import CustomSourceInput from '../CustomSourceInput'; +import useSourceInput from '../../../hooks/useSourceInput'; +import { youtubeLinkValidation } from '../../../utils/Utils'; + +export default function YoutubeInput({ + setIsLoading, +}: { + setIsLoading: React.Dispatch>; +}) { + const { + inputVal, + onChangeHandler, + onBlurHandler, + submitHandler, + status, + setStatus, + statusMessage, + isFocused, + isValid, + onClose, + onPasteHandler, + } = useSourceInput(youtubeLinkValidation, setIsLoading, 'youtube', false, true, false); + return ( + + ); +} diff --git a/frontend/src/components/Wikipedia.tsx b/frontend/src/components/Wikipedia.tsx deleted file mode 100644 index 5a3b8445..00000000 --- a/frontend/src/components/Wikipedia.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import wikipedialogo from '../assets/images/Wikipedia-logo-v2.svg'; - -export default function Wikipedia({ openModal }: { openModal: () => void }) { - return ( -
- -
Wikipedia
-
- ); -} diff --git a/frontend/src/components/WikipediaModal.tsx b/frontend/src/components/WikipediaModal.tsx deleted file mode 100644 index ed780930..00000000 --- a/frontend/src/components/WikipediaModal.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import { useCallback, useState } from 'react'; -import CustomModal from '../HOC/CustomModal'; -import { TextInput } from '@neo4j-ndl/react'; -import { CustomFile, CustomFileBase, UserCredentials, WikipediaModalTypes, fileName } from '../types'; -import { useFileContext } from '../context/UsersFiles'; -import { v4 as uuidv4 } from 'uuid'; -import { useCredentials } from '../context/UserCredentials'; -import { urlScanAPI } from '../services/URLScan'; -import { buttonCaptions } from '../utils/Constants'; -import { wikiValidation } from '../utils/Utils'; - -const WikipediaModal: React.FC = ({ hideModal, open }) => { - const [wikiQuery, setwikiQuery] = useState(''); - const [statusMessage, setStatusMessage] = useState(''); - const [status, setStatus] = useState<'unknown' | 'success' | 'info' | 'warning' | 'danger'>('unknown'); - const { setFilesData, model, filesData } = useFileContext(); - const { userCredentials } = useCredentials(); - const [isFocused, setisFocused] = useState(false); - const [isValid, setValid] = useState(false); - const onClose = useCallback(() => { - hideModal(); - setwikiQuery(''); - setStatus('unknown'); - setValid(false); - setisFocused(false); - }, []); - - const submitHandler = async (url: string) => { - const defaultValues: CustomFileBase = { - processing: 0, - status: 'New', - NodesCount: 0, - relationshipCount: 0, - type: 'TEXT', - model: model, - fileSource: 'Wikipedia', - processingProgress: undefined, - }; - if (url.trim() != '') { - setValid(wikiValidation(url) && isFocused); - } - if (isValid) { - try { - setStatus('info'); - setStatusMessage('Scanning...'); - const apiResponse = await urlScanAPI({ - userCredentials: userCredentials as UserCredentials, - model: model, - wikiquery: wikiQuery.trim(), - source_type: 'Wikipedia', - }); - setStatus('success'); - if (apiResponse?.data.status == 'Failed' || !apiResponse.data) { - setStatus('danger'); - setStatusMessage(apiResponse?.data?.message); - setTimeout(() => { - setStatus('unknown'); - setwikiQuery(''); - setValid(false); - setisFocused(false); - hideModal(); - }, 5000); - return; - } - - const apiResCheck = apiResponse?.data?.success_count && apiResponse.data.failed_count; - if (apiResCheck) { - setStatus('info'); - setStatusMessage( - `Successfully Created Source Node for ${apiResponse.data.success_count} and Failed for ${apiResponse.data.failed_count} Wikipedia Link` - ); - } else if (apiResponse?.data?.success_count) { - setStatusMessage(`Successfully Created Source Node for ${apiResponse.data.success_count} Wikipedia Link`); - } else { - setStatus('danger'); - setStatusMessage(`Failed to Create Source Node for ${apiResponse.data.failed_count} Wikipedia Link`); - } - - const copiedFilesData: CustomFile[] = [...filesData]; - apiResponse?.data?.file_name?.forEach((item: fileName) => { - const filedataIndex = copiedFilesData.findIndex((filedataitem) => filedataitem?.name === item?.fileName); - if (filedataIndex == -1) { - copiedFilesData.unshift({ - name: item.fileName, - size: item.fileSize, - wiki_query: item.fileName, - source_url: item.url, - id: uuidv4(), - language: item.language, - // total_pages: 1, - ...defaultValues, - }); - } else { - const tempFileData = copiedFilesData[filedataIndex]; - copiedFilesData.splice(filedataIndex, 1); - copiedFilesData.unshift({ - ...tempFileData, - status: defaultValues.status, - NodesCount: defaultValues.NodesCount, - relationshipCount: defaultValues.relationshipCount, - processing: defaultValues.processing, - model: defaultValues.model, - fileSource: defaultValues.fileSource, - processingProgress: defaultValues.processingProgress, - }); - } - }); - setFilesData(copiedFilesData); - setwikiQuery(''); - setValid(false); - setisFocused(false); - } catch (error) { - setStatus('danger'); - setStatusMessage('Some Error Occurred or Please Check your Instance Connection'); - } - } else { - setStatus('danger'); - setStatusMessage('Please Fill the Wikipedia Link'); - setTimeout(() => { - setStatus('unknown'); - }, 5000); - return; - } - setTimeout(() => { - setStatus('unknown'); - hideModal(); - }, 1000); - }; - return ( - submitHandler(wikiQuery)} - status={status} - submitLabel={buttonCaptions.submit} - > -
- setValid(wikiValidation(wikiQuery) && isFocused)} - errorText={!isValid && isFocused && 'Please Fill The Valid URL'} - onChange={(e) => { - setisFocused(true); - if (e.target.value.includes('https://en.wikipedia.org/wiki/')) { - setValid(wikiValidation(e.target.value)); - } - setwikiQuery(e.target.value); - }} - /> -
-
- ); -}; -export default WikipediaModal; diff --git a/frontend/src/components/YoutubeButton.tsx b/frontend/src/components/YoutubeButton.tsx deleted file mode 100644 index 13beb37f..00000000 --- a/frontend/src/components/YoutubeButton.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import youtubelogo from '../assets/images/youtube.png'; -import { DataComponentProps } from '../types'; -import { buttonCaptions } from '../utils/Constants'; -import CustomButton from './CustomButton'; -const YouTubeButton: React.FC = ({ openModal }) => { - return ( - - ); -}; -export default YouTubeButton; diff --git a/frontend/src/components/YoutubeModal.tsx b/frontend/src/components/YoutubeModal.tsx deleted file mode 100644 index 0db313ce..00000000 --- a/frontend/src/components/YoutubeModal.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { TextInput } from '@neo4j-ndl/react'; -import { useCallback, useState } from 'react'; -import { useCredentials } from '../context/UserCredentials'; -import { useFileContext } from '../context/UsersFiles'; -import { urlScanAPI } from '../services/URLScan'; -import { CustomFileBase, S3ModalProps } from '../types'; -import { v4 as uuidv4 } from 'uuid'; -import CustomModal from '../HOC/CustomModal'; -import { buttonCaptions } from '../utils/Constants'; - -const YoutubeModal: React.FC = ({ hideModal, open }) => { - const [youtubeURL, setYoutubeURL] = useState(''); - const [status, setStatus] = useState<'unknown' | 'success' | 'info' | 'warning' | 'danger'>('unknown'); - const [statusMessage, setStatusMessage] = useState(''); - const { userCredentials } = useCredentials(); - const { setFilesData, model, filesData } = useFileContext(); - const submitHandler = async () => { - const defaultValues: CustomFileBase = { - processing: 0, - status: 'New', - NodesCount: 0, - relationshipCount: 0, - type: 'TEXT', - model: model, - fileSource: 'youtube', - processingProgress: undefined, - }; - if (!youtubeURL) { - setStatus('danger'); - setStatusMessage('Please Fill the Valid YouTube link'); - setTimeout(() => { - setStatus('unknown'); - }, 5000); - } else { - try { - setStatus('info'); - setStatusMessage('Loading...'); - const apiResponse = await urlScanAPI({ - urlParam: youtubeURL.trim(), - userCredentials, - model, - accessKey: '', - secretKey: '', - source_type: 'youtube', - }); - if (apiResponse.data.status == 'Failed' || !apiResponse.data) { - setStatus('danger'); - setStatusMessage(apiResponse?.data.message); - setTimeout(() => { - setStatus('unknown'); - setYoutubeURL(''); - hideModal(); - }, 5000); - return; - } - setStatus('success'); - setStatusMessage(`Successfully Created Source Nodes for Link`); - const copiedFilesData = [...filesData]; - apiResponse?.data?.file_name?.forEach((item) => { - const filedataIndex = copiedFilesData.findIndex((filedataitem) => filedataitem?.name === item.fileName); - if (filedataIndex == -1) { - copiedFilesData.unshift({ - name: item.fileName, - size: item.fileSize ?? 0, - source_url: item.url, - // total_pages: 1, - id: uuidv4(), - ...defaultValues, - }); - } else { - const tempFileData = copiedFilesData[filedataIndex]; - copiedFilesData.splice(filedataIndex, 1); - copiedFilesData.unshift({ - ...tempFileData, - status: defaultValues.status, - NodesCount: defaultValues.NodesCount, - relationshipCount: defaultValues.relationshipCount, - processing: defaultValues.processing, - model: defaultValues.model, - fileSource: defaultValues.fileSource, - processingProgress: defaultValues.processingProgress, - }); - } - }); - setFilesData(copiedFilesData); - setYoutubeURL(''); - } catch (error) { - setStatus('danger'); - setStatusMessage('Some Error Occurred or Please Check your Instance Connection'); - } - } - setTimeout(() => { - setStatus('unknown'); - hideModal(); - }, 500); - }; - const onClose = useCallback(() => { - setYoutubeURL(''); - hideModal(); - setStatus('unknown'); - }, []); - - return ( - -
- { - setYoutubeURL(e.target.value); - }} - /> -
-
- ); -}; -export default YoutubeModal; diff --git a/frontend/src/context/UsersFiles.tsx b/frontend/src/context/UsersFiles.tsx index b6160275..73c6bd66 100644 --- a/frontend/src/context/UsersFiles.tsx +++ b/frontend/src/context/UsersFiles.tsx @@ -22,6 +22,10 @@ interface FileContextType { setSelectedRows: React.Dispatch>; selectedSchemas: readonly OptionType[]; setSelectedSchemas: Dispatch>; + chatMode: string; + setchatMode: Dispatch>; + isSchema: boolean; + setIsSchema: React.Dispatch>; } const FileContext = createContext(undefined); @@ -38,7 +42,9 @@ const FileContextProvider: FC = ({ children }) => { const [selectedSchemas, setSelectedSchemas] = useState([]); const [rowSelection, setRowSelection] = useState>({}); const [selectedRows, setSelectedRows] = useState([]); + const [chatMode, setchatMode] = useState('graph+vector'); const { userCredentials } = useCredentials(); + const [isSchema, setIsSchema] = useState(false); useEffect(() => { if (selectedNodeLabelstr != null) { @@ -74,6 +80,10 @@ const FileContextProvider: FC = ({ children }) => { setSelectedRows, selectedSchemas, setSelectedSchemas, + chatMode, + setchatMode, + isSchema, + setIsSchema, }; return {children}; }; diff --git a/frontend/src/hooks/useSourceInput.tsx b/frontend/src/hooks/useSourceInput.tsx new file mode 100644 index 00000000..76a3fa6a --- /dev/null +++ b/frontend/src/hooks/useSourceInput.tsx @@ -0,0 +1,176 @@ +import React, { useCallback, useState } from 'react'; +import { CustomFile, CustomFileBase, ScanProps, UserCredentials, fileName } from '../types'; +import { useFileContext } from '../context/UsersFiles'; +import { useCredentials } from '../context/UserCredentials'; +import { urlScanAPI } from '../services/URLScan'; +import { v4 as uuidv4 } from 'uuid'; + +export default function useSourceInput( + validator: (e: string) => boolean, + setIsLoading: React.Dispatch>, + fileSource: string, + isWikiQuery?: boolean, + isYoutubeLink?: boolean, + isWebLink?: boolean +) { + const [inputVal, setInputVal] = useState(''); + const [isValid, setIsValid] = useState(false); + const [isFocused, setIsFocused] = useState(false); + const [status, setStatus] = useState<'unknown' | 'success' | 'info' | 'warning' | 'danger'>('unknown'); + const [statusMessage, setStatusMessage] = useState(''); + const { setFilesData, model, filesData } = useFileContext(); + const { userCredentials } = useCredentials(); + + const onChangeHandler: React.ChangeEventHandler = useCallback((e) => { + setIsFocused(true); + if (e.target.value.length >= 10) { + setIsValid(validator(e.target.value) && true); + } + setInputVal(e.target.value); + }, []); + const onBlurHandler: React.FocusEventHandler = useCallback(() => { + setIsValid(validator(inputVal) && isFocused); + }, [inputVal, isFocused]); + + const onPasteHandler: React.ClipboardEventHandler = useCallback(() => { + setIsFocused(true); + setIsValid(validator(inputVal) && true); + }, [inputVal]); + + const onClose = useCallback(() => { + setInputVal(''); + setStatus('unknown'); + setIsValid(false); + setIsFocused(false); + }, []); + + const submitHandler = useCallback( + async (url: string) => { + const defaultValues: CustomFileBase = { + processing: 0, + status: 'New', + NodesCount: 0, + relationshipCount: 0, + type: 'TEXT', + model: model, + fileSource: fileSource, + processingProgress: undefined, + }; + if (url.trim() != '') { + setIsValid(validator(url) && isFocused); + } + if (isValid) { + try { + setStatus('info'); + setIsLoading(true); + setStatusMessage('Scanning...'); + const params: ScanProps = { + userCredentials: userCredentials as UserCredentials, + model: model, + source_type: fileSource, + }; + if (isWikiQuery) { + params.wikiquery = url.trim(); + } else if (isYoutubeLink || isWebLink) { + params.urlParam = url.trim(); + } + const apiResponse = await urlScanAPI(params); + setIsLoading(false); + setStatus('success'); + if (apiResponse?.data.status == 'Failed' || !apiResponse.data) { + setStatus('danger'); + setStatusMessage(apiResponse?.data?.message); + setTimeout(() => { + setStatus('unknown'); + setInputVal(''); + setIsValid(false); + setIsFocused(false); + }, 5000); + return; + } + + const apiResCheck = apiResponse?.data?.success_count && apiResponse.data.failed_count; + if (apiResCheck) { + setStatus('info'); + setStatusMessage( + `Successfully Created Source Node for ${apiResponse.data.success_count} and Failed for ${apiResponse.data.failed_count} ${fileSource} Link` + ); + } else if (apiResponse?.data?.success_count) { + setStatusMessage( + `Successfully Created Source Node for ${apiResponse.data.success_count} ${fileSource} Link` + ); + } else { + setStatus('danger'); + setStatusMessage(`Failed to Create Source Node for ${apiResponse.data.failed_count} ${fileSource} Link`); + } + + const copiedFilesData: CustomFile[] = [...filesData]; + apiResponse?.data?.file_name?.forEach((item: fileName) => { + const filedataIndex = copiedFilesData.findIndex((filedataitem) => filedataitem?.name === item?.fileName); + if (filedataIndex == -1) { + const baseValues = { + name: item.fileName, + size: item.fileSize, + source_url: item.url, + id: uuidv4(), + language: item.language, + // total_pages: 1, + ...defaultValues, + }; + if (isWikiQuery) { + baseValues.wiki_query = item.fileName; + } + copiedFilesData.unshift(baseValues); + } else { + const tempFileData = copiedFilesData[filedataIndex]; + copiedFilesData.splice(filedataIndex, 1); + copiedFilesData.unshift({ + ...tempFileData, + status: defaultValues.status, + NodesCount: defaultValues.NodesCount, + relationshipCount: defaultValues.relationshipCount, + processing: defaultValues.processing, + model: defaultValues.model, + fileSource: defaultValues.fileSource, + processingProgress: defaultValues.processingProgress, + }); + } + }); + setFilesData(copiedFilesData); + setInputVal(''); + setIsValid(false); + setIsFocused(false); + } catch (error) { + setStatus('danger'); + setStatusMessage('Some Error Occurred or Please Check your Instance Connection'); + } + } else { + setStatus('danger'); + setStatusMessage(`Please Fill the ${fileSource} Link`); + setTimeout(() => { + setStatus('unknown'); + }, 5000); + return; + } + setTimeout(() => { + setStatus('unknown'); + }, 1000); + }, + + [filesData, isWikiQuery, isYoutubeLink, isWebLink, isValid, fileSource, model] + ); + + return { + inputVal, + onChangeHandler, + onBlurHandler, + isValid, + isFocused, + status, + setStatus, + statusMessage, + submitHandler, + onClose, + onPasteHandler, + }; +} diff --git a/frontend/src/services/deleteFiles.ts b/frontend/src/services/DeleteFiles.ts similarity index 100% rename from frontend/src/services/deleteFiles.ts rename to frontend/src/services/DeleteFiles.ts diff --git a/frontend/src/services/DeleteOrphanNodes.ts b/frontend/src/services/DeleteOrphanNodes.ts new file mode 100644 index 00000000..135dfcde --- /dev/null +++ b/frontend/src/services/DeleteOrphanNodes.ts @@ -0,0 +1,20 @@ +import axios from 'axios'; +import { url } from '../utils/Utils'; +import { UserCredentials } from '../types'; + +const deleteOrphanAPI = async (userCredentials: UserCredentials, selectedNodes: string[]) => { + try { + const formData = new FormData(); + formData.append('uri', userCredentials?.uri ?? ''); + formData.append('database', userCredentials?.database ?? ''); + formData.append('userName', userCredentials?.userName ?? ''); + formData.append('password', userCredentials?.password ?? ''); + formData.append('unconnected_entities_list', JSON.stringify(selectedNodes)); + const response = await axios.post(`${url()}/delete_unconnected_nodes`, formData); + return response; + } catch (error) { + console.log('Error Posting the Question:', error); + throw error; + } +}; +export default deleteOrphanAPI; diff --git a/frontend/src/services/GetOrphanNodes.ts b/frontend/src/services/GetOrphanNodes.ts new file mode 100644 index 00000000..70cfe8cd --- /dev/null +++ b/frontend/src/services/GetOrphanNodes.ts @@ -0,0 +1,18 @@ +import axios from 'axios'; +import { url } from '../utils/Utils'; +import { OrphanNodeResponse, UserCredentials } from '../types'; + +export const getOrphanNodes = async (userCredentials: UserCredentials) => { + const formData = new FormData(); + formData.append('uri', userCredentials?.uri ?? ''); + formData.append('database', userCredentials?.database ?? ''); + formData.append('userName', userCredentials?.userName ?? ''); + formData.append('password', userCredentials?.password ?? ''); + try { + const response = await axios.post(`${url()}/get_unconnected_nodes_list`, formData); + return response; + } catch (error) { + console.log(error); + throw error; + } +}; diff --git a/frontend/src/services/GraphQuery.ts b/frontend/src/services/GraphQuery.ts index f179201a..fb4e7996 100644 --- a/frontend/src/services/GraphQuery.ts +++ b/frontend/src/services/GraphQuery.ts @@ -10,8 +10,6 @@ const graphQueryAPI = async (userCredentials: UserCredentials, query_type: strin formData.append('userName', userCredentials?.userName ?? ''); formData.append('password', userCredentials?.password ?? ''); formData.append('query_type', query_type ?? 'entities'); - - // @ts-ignore formData.append('document_names', JSON.stringify(document_names)); const response = await axios.post(`${url()}/graph_query`, formData, { diff --git a/frontend/src/services/UpdateGraph.ts b/frontend/src/services/PostProcessing.ts similarity index 70% rename from frontend/src/services/UpdateGraph.ts rename to frontend/src/services/PostProcessing.ts index 15b4665d..9f45cc6b 100644 --- a/frontend/src/services/UpdateGraph.ts +++ b/frontend/src/services/PostProcessing.ts @@ -2,14 +2,15 @@ import axios from 'axios'; import { url } from '../utils/Utils'; import { UserCredentials } from '../types'; -const updateGraphAPI = async (userCredentials: UserCredentials) => { +const postProcessing = async (userCredentials: UserCredentials, taskParam: string[]) => { try { const formData = new FormData(); formData.append('uri', userCredentials?.uri ?? ''); formData.append('database', userCredentials?.database ?? ''); formData.append('userName', userCredentials?.userName ?? ''); formData.append('password', userCredentials?.password ?? ''); - const response = await axios.post(`${url()}/update_similarity_graph`, userCredentials, { + formData.append('tasks', JSON.stringify(taskParam)); + const response = await axios.post(`${url()}/post_processing`, formData, { headers: { 'Content-Type': 'multipart/form-data', }, @@ -21,4 +22,4 @@ const updateGraphAPI = async (userCredentials: UserCredentials) => { } }; -export { updateGraphAPI }; +export { postProcessing }; diff --git a/frontend/src/services/QnaAPI.ts b/frontend/src/services/QnaAPI.ts index df58b016..0e483a8f 100644 --- a/frontend/src/services/QnaAPI.ts +++ b/frontend/src/services/QnaAPI.ts @@ -6,7 +6,8 @@ export const chatBotAPI = async ( userCredentials: UserCredentials, question: string, session_id: string, - model: string + model: string, + mode = 'vector' ) => { try { const formData = new FormData(); @@ -17,6 +18,7 @@ export const chatBotAPI = async ( formData.append('question', question); formData.append('session_id', session_id); formData.append('model', model); + formData.append('mode', mode); const startTime = Date.now(); const response = await axios.post(`${url()}/chat_bot`, formData, { headers: { diff --git a/frontend/src/types.ts b/frontend/src/types.ts index d99b9f85..7bf8bced 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -69,9 +69,9 @@ export type ExtractParams = { export type UploadParams = { file: Blob; model: string; - chunkNumber:number; - totalChunks:number; - originalname:string + chunkNumber: number; + totalChunks: number; + originalname: string; } & { [key: string]: any }; export type FormDataParams = ExtractParams | UploadParams; @@ -150,6 +150,10 @@ export interface ContentProps { isRightExpanded: boolean; showChatBot: boolean; openChatBot: () => void; + openTextSchema: () => void; + isSchema?: boolean; + setIsSchema: Dispatch>; + openOrphanNodeDeletionModal: () => void; } export interface FileTableProps { @@ -170,12 +174,32 @@ export interface CustomModalProps { setStatus: Dispatch>; } +export interface CustomInput { + value: string; + label: string; + placeHolder: string; + onChangeHandler: React.ChangeEventHandler; + submitHandler: (url: string) => void; + disabledCheck: boolean; + onCloseHandler: () => void; + id: string; + onBlurHandler: React.FocusEventHandler; + status: 'unknown' | 'success' | 'info' | 'warning' | 'danger'; + setStatus: Dispatch>; + statusMessage: string; + isValid: boolean; + isFocused: boolean; + onPasteHandler: React.ClipboardEventHandler; +} + export interface CommonButtonProps { openModal: () => void; wrapperclassName?: string; logo: string; - title: string; + title?: string; className?: string; + imgWidth?: number; + imgeHeight?: number; } export interface Source { @@ -183,17 +207,21 @@ export interface Source { source_name: string; start_time?: string; } +export interface chunk { + id: string; + score: number; +} export interface Messages { id: number; message: string; user: string; datetime: string; isTyping?: boolean; - sources?: Source[]; + sources?: string[]; model?: string; isLoading?: boolean; response_time?: number; - chunk_ids?: string[]; + chunk_ids?: chunk[]; total_tokens?: number; speaking?: boolean; copying?: boolean; @@ -301,6 +329,19 @@ export interface LegendChipProps { export interface FileContextProviderProps { children: ReactNode; } +export interface orphanNode { + id: string; + elementId: string; + description: string; + labels: string[]; + embedding: null | string; +} +export interface orphanNodeProps { + documents: string[]; + chunkConnections: number; + e: orphanNode; + checked?: boolean; +} export interface labelsAndTypes { labels: string[]; relationshipTypes: string[]; @@ -310,7 +351,7 @@ export interface commonserverresponse { error?: string; message?: string; file_name?: string; - data?: labelsAndTypes | labelsAndTypes[] | uploadData; + data?: labelsAndTypes | labelsAndTypes[] | uploadData | orphanNodeProps[]; } export interface ScehmaFromText extends Partial { @@ -319,6 +360,9 @@ export interface ScehmaFromText extends Partial { export interface ServerData extends Partial { data: labelsAndTypes[]; } +export interface OrphanNodeResponse extends Partial { + data: orphanNodeProps[]; +} export interface schema { nodelabels: string[]; relationshipTypes: string[]; @@ -332,10 +376,10 @@ export interface SourceListServerData { } export interface chatInfoMessage extends Partial { - sources: Source[]; + sources: string[]; model: string; response_time: number; - chunk_ids: string[]; + chunk_ids: chunk[]; total_tokens: number; } @@ -427,6 +471,7 @@ export interface Chunk { content_offset?: string; url?: string; fileSource: string; + score?: string; } export interface SpeechSynthesisProps { @@ -439,3 +484,26 @@ export interface SpeechArgs { pitch?: number; volume?: number; } + +export interface SettingsModalProps { + open: boolean; + onClose: () => void; + openTextSchema: () => void; + onContinue?: () => void; + settingView: 'contentView' | 'headerView'; + isSchema?: boolean; + setIsSchema: Dispatch>; + onClear?: () => void; +} +export interface Menuitems { + title: string; + onClick: () => void; + disabledCondition: boolean; + description?: string; +} +export type Vertical = 'top' | 'bottom'; +export type Horizontal = 'left' | 'right' | 'center'; +export interface Origin { + vertical: Vertical; + horizontal: Horizontal; +} diff --git a/frontend/src/utils/Constants.ts b/frontend/src/utils/Constants.ts index 35832a08..ee7fdd44 100644 --- a/frontend/src/utils/Constants.ts +++ b/frontend/src/utils/Constants.ts @@ -1,3 +1,5 @@ +import { VisualizeBloomIcon } from '@neo4j-ndl/react/icons'; + export const document = `+ [docs]`; export const chunks = `+ collect { MATCH p=(c)-[:NEXT_CHUNK]-() RETURN p } // chunk-chain @@ -27,8 +29,8 @@ export const docChunkEntities = `+[chunks] + collect { OPTIONAL MATCH p=(c:Chunk)-[:HAS_ENTITY]->(e)-[*0..1]-(:!Chunk) RETURN p }`; export const APP_SOURCES = process.env.REACT_APP_SOURCES !== '' - ? process.env.REACT_APP_SOURCES?.split(',') || [] - : ['gcs', 's3', 'local', 'wiki', 'youtube']; + ? process.env.REACT_APP_SOURCES?.split(',') + : ['gcs', 's3', 'local', 'wiki', 'youtube', 'web']; export const llms = process.env?.LLM_MODELS?.trim() != '' ? process.env.LLM_MODELS?.split(',') @@ -113,6 +115,8 @@ export const tooltips = { createSchema: 'Create your own schema by passing text', useExistingSchema: 'Use the already existing schema from DB', clearChat: 'Clear Chat History', + continue: 'Continue', + clearGraphSettings: 'Allow User to remove Settings', }; export const buttonCaptions = { @@ -133,4 +137,13 @@ export const buttonCaptions = { connectToNeo4j: 'Connect to Neo4j', cancel: 'Cancel', details: 'Details', + continueSettings: 'Continue', + clearSettings: 'Clear Settings', }; + +export const ChatModeOptions = [ + { Icon: VisualizeBloomIcon, value: 'vector' }, + { Icon: 'abc', value: 'graph+vector' }, +]; + +export const taskParam: string[] = ['update_similarity_graph', 'create_fulltext_index']; diff --git a/frontend/src/utils/FileAPI.ts b/frontend/src/utils/FileAPI.ts index a393f90f..b6dcabeb 100644 --- a/frontend/src/utils/FileAPI.ts +++ b/frontend/src/utils/FileAPI.ts @@ -4,11 +4,18 @@ import { UserCredentials, ExtractParams, UploadParams } from '../types'; import { apiCall } from '../services/CommonAPI'; // Upload Call -export const uploadAPI = async (file: Blob, userCredentials: UserCredentials, model: string, chunkNumber: number, totalChunks: number,originalname:string): Promise => { +export const uploadAPI = async ( + file: Blob, + userCredentials: UserCredentials, + model: string, + chunkNumber: number, + totalChunks: number, + originalname: string +): Promise => { const urlUpload = `${url()}/upload`; const method: Method = 'post'; const commonParams: UserCredentials = userCredentials; - const additionalParams: UploadParams = { file, model, chunkNumber, totalChunks ,originalname}; + const additionalParams: UploadParams = { file, model, chunkNumber, totalChunks, originalname }; const response = await apiCall(urlUpload, method, commonParams, additionalParams); return response; }; @@ -77,6 +84,15 @@ export const extractAPI = async ( allowedNodes, allowedRelationship, }; + } else if (source_type === 'web-url') { + additionalParams = { + model, + source_url, + source_type, + file_name, + allowedNodes, + allowedRelationship, + }; } else { additionalParams = { model, diff --git a/frontend/src/utils/Loader.tsx b/frontend/src/utils/Loader.tsx index 85e8ba6b..326e02c4 100644 --- a/frontend/src/utils/Loader.tsx +++ b/frontend/src/utils/Loader.tsx @@ -1,10 +1,10 @@ -export default function Loader() { +export default function Loader({ title }: { title: string }) { return (
-
Uploading
+
{title}
); } diff --git a/frontend/src/utils/Utils.ts b/frontend/src/utils/Utils.ts index f31b669b..94271c20 100644 --- a/frontend/src/utils/Utils.ts +++ b/frontend/src/utils/Utils.ts @@ -19,6 +19,21 @@ export const validation = (url: string) => { export const wikiValidation = (url: string) => { return url.trim() != '' && /https:\/\/([a-zA-Z]{2,3})\.wikipedia\.org\/wiki\/(.*)/gm.test(url) != false; }; +export const webLinkValidation = (url: string) => { + return ( + url.trim() != '' && + /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g.test(url) != + false + ); +}; +export const youtubeLinkValidation = (url: string) => { + return ( + url.trim() != '' && + /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/.test( + url + ) != false + ); +}; // Status indicator icons to status column export const statusCheck = (status: string) => { switch (status) {