
    h              	       J    d dl Z dZd dlmZ d dlmZmZ dZddede	de	d	e
fd
Zy)    NT)OpenAI)query_rag_context_from_dbbuild_rag_augmented_promptzgpt-4o-mini
user_query	tenant_idtop_kreturnc           
         t        | ||      }|j                  d      xs d}|j                  dg       }t        r`t        dt	        |       d| d| d	       |d
d D ]"  }t        d|d    d|d    d|d   dd	       $ t        d|d
d xs dz   d	       |j                         s||ddS t        | |      }t        r't        dd	       t        |d	       t        dd	       t               }|j                  j                  j                  t        d|dgd      }	|	j                  d   j                  j                  xs dj                         }
|||
dS )z
    Returns dict:
    {
      'context': str,
      'matches': [ {title, similarity, content, rank, document_id}, ... ],
      'addendum': str,
      'prompt': str (if return_prompt=True),
      'debug': { ... } (if debug=True)
    }
    )r   r   context matchesu   🧩 RAG: matches=z top_k=z tenant=T)flushN   u      · [rankz] titlez  sim=
similarityz.3fu   🧩 RAG context preview:
i  z(empty))r   r   addendumu   🧩 RAG prompt >>>z<<< END RAG promptuser)rolecontentg?)modelmessagestemperaturer   )r   getLOG_RAGprintlenstripr   r   chatcompletionscreateOPENAI_MODELchoicesmessager   )r   r   r   resr   r   mpromptclientr   r   s              #/var/www/html/dynbot/rag_service.pygenerate_rag_addendumr*   	   sq    $J)5
QCggi &BGggi$G "3w<.whykRZ^_! 	^AGAfI;b7F1\?3:OPX\]	^+wu~/JKSWX==?"wBGG'
G<F #40fD!"$/XF;;""))!f56 * D
 Q''//52<<>H7II    )   )osr   openair   rag_dbr   r   r"   strintdictr*    r+   r)   <module>r4      s>    	
  H(Jc (Jc (J# (Jd (Jr+   