o
    Bi]                     @   sJ  d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ ejZd&d	ed
efddZd'd	edefddZedkre jddZejdddZejdddZejdddd ejdeddd ejd d!dZejddd"d ejd#dd$d% e Zejdkreejej  dS ejd kreejej! dS dS dS )(    N)Path)
FaissStore)embed_queryanswer_question_with_llm)build_report_from_query)render_docx)config   querykc           
      C   s  t d|  d tt}t| }|j||d}|s t d dS t d t|dD ]D\}}|d }|d	d
}t d| d|dd d|dd d|d t d|dd  t d|d dd  d t d q)t d t| |}	t d|	 d dS )zS
    Q&A mode: retrieve relevant chunks and optionally generate an LLM answer.
    u   
🔍 Question: 
)r   u3   ❌ No relevant information found in the documents.Nu   📄 Retrieved Evidence:
   metadatascoreg        [z] doc_nameUnknownz | Page page_number?z
 | Score: z.3fz    Chunk ID: chunk_idzN/Az
    Text: texti,  z...
zP--------------------------------------------------------------------------------u   
🤖 Generating Answer...
u   ✅ Answer:
)	printr   load	INDEX_DIRr   search	enumerategetr   )
r
   r   storeqvecresultsidxrmetar   answer r$   :/var/www/html/fyndo/python/python_agents/rag_suite/main.pyask_command   s$   
2

r&   outputs/reports/report.docxout_filec                 C   sV   t d|  d tt}t|| }t|jjddd t||}t d| d dS )z_
    Report mode: retrieve relevant chunks, generate structured sections, and render DOCX.
    u   
📝 Generating Report for: r   T)parentsexist_oku'   
✅ Report generated successfully at: N)	r   r   r   r   r   r   parentmkdirr   )r
   r(   r   
report_obj
final_pathr$   r$   r%   report_command+   s   


r/   __main__zCRAG Suite CLI - Ask questions or generate reports from indexed PDFs)descriptioncommandT)destrequiredaskzAsk a question (Q&A mode))helpz--qzYour question)r4   r6   z--kz)Number of chunks to retrieve (default: 8))typedefaultr6   reportzGenerate a structured reportzReport query/promptz--outzOutput path for DOCX)r8   r6   )r	   )r'   )"argparsepathlibr   rag.vectorstorer   rag.qar   r   
rag.reportr   
rag.renderr   ragr   r   strintr&   r/   __name__ArgumentParserparseradd_subparsers
subparsers
add_parser
parser_askadd_argumentparser_report
parse_argsargsr2   qr   outr$   r$   r$   r%   <module>   s8   

