o
    ^h`#                     @   s  d dl mZmZmZ d dlmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZe Zd dlZd dl Z dd Z!dd	 Z"e#d
edededededededededf	de$de%de$de$de$de$de%de%de%defddZd dl&m'Z' e#dededededededededfde%de$de%de%de$de%de%de%defddZ&dS )    )FastAPIFormHTTPException)JSONResponseN)load_pdf
transcribeload_txt split_text_with_semantic_chunker	crawlerrrread_file_url(split_text_with_semantic_chunker_for_urlclean_using_llmcount_total_wordssave_documents_to_txtcreate_and_save_embeddingsgenerate_slide_contentmerge_all_faissparsingmarks_splitterallocate_slidescreate_embeddingsgenerate_slide_content_alloc1)OllamaEmbeddingsc                 C   s&   t | }|jdkr|jS tddd)N   i  zDocument not foundstatus_codedetail)requestsgetr   contentr   )urlresponse r"   J/var/www/eduai.edurigo.com/storigo/production/storigo_creation_fast_api.pyfetch_document_with_curl   s   

r$   c              
   C   s   z&t | | t|}t||||||||}	td| d |	 }
t|
dW S  tyR } z tdt	|  tdt	| t
 dddW  Y d }~S d }~ww )	NzSlide content generated for z slides.r   Error generating content: Error: errordetails  r   r   )r   r   r   printdictr   	Exceptionloggingr)   str	traceback
format_exc)split_documents	client_id
num_slidesnum_mcqsis_imageis_questionquestion_positionisGPUmerge_embeddingsslide_contentresponse_dataer"   r"   r#   process_and_generate_response   s   
r@   z/generate-storigo-content.r5   r6   document_urlr8   document_typer9   r7   r:   r;   returnc	              
      s  z|dkrt d|  t|}	t dt|	 d tjddd}
|
|	 |
j}t d|  W d    n1 s=w   Y  zkt|}td	d
dd}|| W d    n1 s^w   Y  ddg}td	ddd}|	 }W d    n1 s}w   Y  t
||}t||dd}t|| }t||||||||}| }t|dW t| W S t| w |dkrt d|  d| v rt|}tdd}t|}t||}t|}t||}n,t|I d H }t d|  t|}|stdddt|}t d tdd}t||}t|| ||||||W S tddd tyL } z tdt |  td t | t!" d!dd"W  Y d }~S d }~ww )#NpdfzFetching document from: zDocument fetched, size: z bytesFz.pdf)deletesuffixzTemporary file saved at: zparse_data.mdwzutf-8)encoding)#zHeader 1)z##zHeader 2rd   )	min_charsr%   htmlzFetching HTML content from: youtubeznomic-embed-text)modelzCrawled content saved to: r+   z0Failed to read content from the URL: RAW CONTENTr   zExtracted meaningful content.i  z4Unsupported source type. Please use 'pdf' or 'html'.r&   r'   r(   r,   )#r-   r$   lentempfileNamedTemporaryFilewritenamer   openreadr   r   r   r   r.   r   osremovelowerr   r   r   r	   r   r   r
   r   r   r@   r/   r0   r)   r1   r2   r3   )r5   r6   rA   r8   rB   r9   r7   r:   r;   document_content	temp_filetemp_file_path
parse_datafheaders_to_split_onr   chunks
allocation
embeddingsr=   r>   	file_pathtextsplit_documents1meaningful_contentr4   filenameraw_contentr?   r"   r"   r#   generate_storigo_content2   sr   









ri   )"generate_slide_content_from_promptz%/generate-storigo-content-from-promptpromptc              
      s   zt ||||dk|||}| }	t|	dW S  tyC }
 z tdt|
  tdt|
 t dddW  Y d }
~
S d }
~
ww )N   r%   r&   r'   r(   r+   r,   )	rj   r.   r   r/   r0   r)   r1   r2   r3   )r5   rk   r6   r8   r9   r7   r:   r;   storigo_contentr>   r?   r"   r"   r#   $generate_storigo_content_from_prompt   s   rn   )(fastapir   r   r   fastapi.responsesr   rQ   r   ri   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   langchain_community.embeddingsr   rW   appr0   r2   r$   r@   postr1   intrn   rj   r"   r"   r"   r#   <module>   s    P	
t	