Spaces:
Runtime error
Runtime error
File size: 2,482 Bytes
358c9e4 f38d527 358c9e4 f38d527 358c9e4 f38d527 358c9e4 f1172de f38d527 f1172de 358c9e4 f38d527 358c9e4 f38d527 358c9e4 f38d527 358c9e4 f38d527 358c9e4 f38d527 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import os
import zipfile
import shutil
import logging
import subprocess
from dotenv import load_dotenv
import gradio as gr
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
# Load environment variables
load_dotenv()
def unzip_folder(zip_path, extract_path):
output_dir = os.path.join(extract_path, "ragtest")
os.makedirs(output_dir, exist_ok=True)
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(output_dir)
logger.info(f"Extracted contents to {output_dir}")
logger.info(f"Contents of {output_dir}:")
for file in os.listdir(output_dir):
logger.info(os.path.join(output_dir, file))
return output_dir
def run_graphrag_query(query):
# Define the command
command = [
"python", "-m", "graphrag.query",
"--root", "./ragtest",
"--method", "local",
query
]
# Run the command
result = subprocess.run(command, capture_output=True, text=True)
# Return the output or error message
if result.returncode == 0:
return result.stdout
else:
return result.stderr
def qa_tool_graph_rag(user_question):
try:
# Paths from environment variables
zip_path = os.getenv('ZIP_PATH', '/home/user/app/ragtest.zip')
extract_path = os.getenv('EXTRACT_PATH', '/home/user/app')
# Unzip the folder
output_dir = unzip_folder(zip_path, extract_path)
# Change to the directory containing the ragtest folder
os.chdir(extract_path)
# Run the GraphRAG query
answer = run_graphrag_query(user_question)
logger.info(f"GraphRAG answer generated: {answer}")
# For simplicity, we're not handling images here.
# You may need to adjust this based on how GraphRAG returns results.
images = []
return answer, images, gr.update(visible=True), gr.update(visible=True)
except Exception as e:
logger.error(f"Error in GraphRAG processing: {str(e)}")
return f"An error occurred: {str(e)}", [], gr.update(visible=False), gr.update(visible=False)
finally:
# Clean up: remove the extracted directory
if 'output_dir' in locals():
shutil.rmtree(output_dir)
# Change back to the original directory
os.chdir('/home/user/app') |