§
    šŠtjšO  ã                   óx  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlZd dlmZ d dlmZ d dlmZ d dlm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 m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&  ej'        e(¦  «        Z)dZ*dZ+dZ, G d„ de-e¦  «        Z.dee#e&f         fd„Z/de-fd„Z0 G d„ de¦  «        Z1dS )é    N)ÚEnum)Ú
HTTPStatus)ÚAnyÚDictÚListÚOptionalÚTuple)ÚClientTimeout)ÚDocument)Úget_runtime_environment)Úget_from_dict_or_env)ÚVectorStoreRetriever)Ú	BaseModel)ÚResponseÚrequest)ÚRequestException)ÚAppÚAuthContextÚContextÚ	FrameworkÚPromptÚQaÚRuntimez0.1.1zhttp://localhost:8000zhttps://api.daxa.aic                   ó   — e Zd ZdZdZdZdZdS )ÚRoutesz2Routes available for the Pebblo API as enumerator.z/v1/app/discoverz
/v1/promptz/v1/prompt/governanceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úretrieval_app_discoverÚpromptÚprompt_governance© ó    ús/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chains/pebblo_retrieval/utilities.pyr   r   %   s'   € € € € € Ø<Ð<à/ÐØ€FØ/ÐÐÐr$   r   Úreturnc                  ó4  — t          ¦   «         } t          d|                      dd¦  «        ¬¦  «        }t          j        ¦   «         }t          |j        t          j        d         |                      dd¦  «        |j	        |j
        t          ¦   «         |                      dd¦  «        |                      dd¦  «        ¬	¦  «        }d
|j        v rd|_        d|_        t                               d|› �¦  «         t                               d|› �¦  «         ||fS )zšFetch the current Framework and Runtime details.

    Returns:
        Tuple[Framework, Runtime]: Framework and Runtime for the current app instance.
    Ú	langchainÚlibrary_versionÚunknown)ÚnameÚversionÚPWDÚplatformÚruntimeÚruntime_version)ÚhostÚpathr.   ÚosÚ
os_versionÚipÚlanguageÚlanguage_versionÚDarwinÚdesktopzMac OSXz
framework zruntime )r   r   Úgetr.   Úunamer   Únoder3   ÚenvironÚsystemr,   Úget_ipÚtyper/   ÚloggerÚdebug)Úruntime_envÚ	frameworkr;   r/   s       r%   Úget_runtimerE   -   s  € õ *Ñ+Ô+€KÝØ +§/¢/Ð2CÀYÑ"OÔ"Oðñ ô €Iõ ŒNÑÔ€EÝØŒZÝŒZ˜ÔØ—’ ¨YÑ7Ô7ØŒ<Ø”=Ý‰8Œ8Ø—’ ¨IÑ6Ô6Ø$ŸšÐ):¸IÑFÔFð	ñ 	ô 	€Gð �7”:ÐÐØ ˆŒØ#ˆŒå
‡L‚LÐ)˜iÐ)Ð)Ñ*Ô*Ð*Ý
‡L‚LÐ%˜GÐ%Ð%Ñ&Ô&Ð&Ø�gÐÐr$   c                  ó®   — ddl } |                      ¦   «         }	 |                      |¦  «        }n%# t          $ r |                      d¦  «        }Y nw xY w|S )zJFetch local runtime ip address.

    Returns:
        str: IP address
    r   NÚ	localhost)ÚsocketÚgethostnameÚgethostbynameÚ	Exception)rH   r1   Ú	public_ips      r%   r?   r?   L   sp   € ð €M€M€Mà×ÒÑÔ€Dð6Ø×(Ò(¨Ñ.Ô.ˆ	ˆ	øÝð 6ð 6ð 6Ø×(Ò(¨Ñ5Ô5ˆ	ˆ	ˆ	ð6øøøàÐs   š0 °AÁAc                   óØ  ‡ — e Zd ZU dZee         ed<   	 dZeed<   	 ee         ed<   	 ee         ed<   	 defˆ fd„Z	d	e
d
dfd„Z	 d(dededededee         dee         deeef         deded
dfd„Z	 d(dededededee         dee         deeef         deded
dfd„Zded
eeeeef         f         fd„Zded
eeeeef         f         fd„Zd(ded
efd„Ze	 	 d)deded ed!ee         d"ed
ee         fd#„¦   «         Zed!ed$ee         d
dfd%„¦   «         Ze	 	 d)deded ed!ee         d"ed
efd&„¦   «         Z	 d(dededededee         dee         deeef         deded
efd'„Zˆ xZ S )*ÚPebbloRetrievalAPIWrapperz!Wrapper for Pebblo Retrieval API.Úapi_keyÚlocalÚclassifier_locationÚclassifier_urlÚ	cloud_urlÚkwargsc                 óÌ   •— t          |ddd¦  «        |d<   t          |ddt          ¦  «        |d<   t          |ddt          ¦  «        |d<    t          ¦   «         j        d	i |¤Ž dS )
z%Validate that api key in environment.rO   ÚPEBBLO_API_KEYÚ rR   ÚPEBBLO_CLASSIFIER_URLrS   ÚPEBBLO_CLOUD_URLNr#   )r   Ú_DEFAULT_CLASSIFIER_URLÚ_DEFAULT_PEBBLO_CLOUD_URLÚsuperÚ__init__)ÚselfrT   Ú	__class__s     €r%   r]   z"PebbloRetrievalAPIWrapper.__init__h   sŠ   ø€ å0Ø�IÐ/°ñ
ô 
ˆˆyÑõ $8ØÐ$Ð&=Õ?Vñ$
ô $
ˆÐÑ õ 3Ø�KÐ!3Õ5Nñ
ô 
ˆˆ{Ñð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"r$   Úappr&   Nc                 ó<  — d}|                      d¬¦  «        }| j        dk    rF|                      ¦   «         }| j        › t          j        j        › �}|                      d|||¦  «        }| j        r«|                      d¬¦  «        }|rCt          j
        |j        ¦  «                             d¦  «        }|                     d|i¦  «         |                     dt          i¦  «         | j        › t          j        j        › �}|                      d|||¦  «        }dS dS )	z‹
        Send app discovery request to Pebblo server & cloud.

        Args:
            app (App): App instance to be discovered.
        NT©Úexclude_unsetrP   ÚPOST©Úcloud_requestÚpebblo_server_versionÚpebblo_client_version)ÚdictrQ   Ú_make_headersrR   r   r    ÚvalueÚmake_requestrO   ÚjsonÚloadsÚtextr:   ÚupdateÚPLUGIN_VERSIONrS   )	r^   r`   Úpebblo_respÚpayloadÚheadersÚapp_discover_urlrg   Úpebblo_cloud_urlÚ_s	            r%   Úsend_app_discoverz+PebbloRetrievalAPIWrapper.send_app_discoveru   s9  € ð ˆØ—(’(¨�(Ñ.Ô.ˆàÔ# wÒ.Ð.à×(Ò(Ñ*Ô*ˆGàÔ&ÐM­Ô(EÔ(KÐMÐMð ð ×+Ò+¨FÐ4DÀgÈwÑWÔWˆKàŒ<ð 	Nà×(Ò(°tÐ(Ñ<Ô<ˆGØð QÝ(,¬
°;Ô3CÑ(DÔ(D×(HÒ(HØ+ñ)ô )Ð%ð —’Ð 7Ð9NÐOÑPÔPÐPà�NŠNÐ3µ^ÐDÑEÔEÐEØ"&¤.ÐWµ&Ô2OÔ2UÐWÐWÐØ×!Ò! &Ð*:¸GÀWÑMÔMˆAˆAˆAð	Nð 	Nr$   FÚapp_nameÚ	retrieverÚquestionÚanswerÚauth_contextÚdocsÚprompt_entitiesÚprompt_timeÚprompt_gov_enabledc
                 ób  — d}
|                       |||||||||	¦	  «	        }| j        dk    rF|                      ¦   «         }| j        › t          j        j        › �}|                      d|||¦  «        }
| j        rƒ| j        dk    r.|
r|
 	                    ¦   «         nd}
|  
                    ||
¦  «         |                      d¬¦  «        }| j        › t          j        j        › �}|                      d|||¦  «        }dS | j        dk    r)t                               d¦  «         t          d¦  «        ‚dS ©aÚ  
        Send prompt to Pebblo server for classification.
        Then send prompt to Daxa cloud(If api_key is present).

        Args:
            app_name (str): Name of the app.
            retriever (VectorStoreRetriever): Retriever instance.
            question (str): Question asked in the prompt.
            answer (str): Answer generated by the model.
            auth_context (Optional[AuthContext]): Authentication context.
            docs (List[Document]): List of documents retrieved.
            prompt_entities (Dict[str, Any]): Entities present in the prompt.
            prompt_time (str): Time when the prompt was generated.
            prompt_gov_enabled (bool): Whether prompt governance is enabled.
        NrP   rd   Tre   zpebblo-cloudz6API key is missing for sending prompt to Pebblo cloud.)Úbuild_prompt_qa_payloadrQ   rj   rR   r   r!   rk   rl   rO   rm   Úupdate_cloud_payloadrS   rA   ÚwarningÚ	NameError©r^   ry   rz   r{   r|   r}   r~   r   r€   r�   rr   rs   rt   Ú
prompt_urlÚpebblo_cloud_prompt_urlrw   s                   r%   Úsend_promptz%PebbloRetrievalAPIWrapper.send_prompt”   s\  € ð6 ˆØ×.Ò.ØØØØØØØØØñ

ô 

ˆð Ô# wÒ.Ð.à×(Ò(Ñ*Ô*ˆGØ Ô/ÐFµ´Ô1DÐFÐFˆJØ×+Ò+¨F°JÀÈÑQÔQˆKàŒ<ð 	VàÔ'¨7Ò2Ð2ð 5@ÐI˜k×.Ò.Ñ0Ô0Ð0ÀT�Ø×)Ò)¨'°;Ñ?Ô?Ð?à×(Ò(°tÐ(Ñ<Ô<ˆGØ)-¬Ð&N½¼Ô9LÐ&NÐ&NÐ#Ø×!Ò! &Ð*AÀ7ÈGÑTÔTˆAˆAˆAØÔ%¨Ò7Ð7Ý�NŠNÐSÑTÔTÐTÝÐTÑUÔUÐUð 8Ð7r$   c
              ƒ   óN  K  — d}
|                       |||||||||	¦	  «	        }| j        dk    rL|                      ¦   «         }| j        › t          j        j        › �}|                      d|||¦  «        ƒ d{V —†}
| j        rq| j        dk    r|  	                    ||
¦  «         |                      d¬¦  «        }| j
        › t          j        j        › �}|                      d|||¦  «        ƒ d{V —†}dS | j        dk    r)t                               d¦  «         t          d¦  «        ‚dS rƒ   )r„   rQ   rj   rR   r   r!   rk   Úamake_requestrO   r…   rS   rA   r†   r‡   rˆ   s                   r%   Úasend_promptz&PebbloRetrievalAPIWrapper.asend_promptÑ   s|  è è € ð6 ˆØ×.Ò.ØØØØØØØØØñ

ô 

ˆð Ô# wÒ.Ð.à×(Ò(Ñ*Ô*ˆGØ Ô/ÐFµ´Ô1DÐFÐFˆJØ $× 2Ò 2°6¸:ÀwÐPWÑ XÔ XÐXÐXÐXÐXÐXÐXˆKàŒ<ð 	VàÔ'¨7Ò2Ð2ð ×)Ò)¨'°;Ñ?Ô?Ð?à×(Ò(°tÐ(Ñ<Ô<ˆGØ)-¬Ð&N½¼Ô9LÐ&NÐ&NÐ#Ø×(Ò(ØÐ/°¸'ñô ð ð ð ð ð ð ˆAˆAˆAð Ô%¨Ò7Ð7Ý�NŠNÐSÑTÔTÐTÝÐTÑUÔUÐUð 8Ð7r$   c                 ór  — d|i}i ddœ}d}| j         dk    rž|                      ¦   «         }| j        › t          j        j        › �}|                      d|||¦  «        }|rV|                     ¦   «                              di ¦  «        |d<   |                     ¦   «                              dd¦  «        |d<   ||fS )	áá  
        Check the validity of the given prompt using a remote classification service.

        This method sends a prompt to a remote classifier service and return entities
        present in prompt or not.

        Args:
            question (str): The prompt question to be validated.

        Returns:
            bool: True if the prompt is valid (does not contain deny list entities),
            False otherwise.
            dict: The entities present in the prompt
        r!   r   ©ÚentitiesÚentityCountTrP   rd   r’   r“   )	rQ   rj   rR   r   r"   rk   rl   rm   r:   ©r^   r{   Úprompt_payloadr   Úis_valid_promptrt   Úprompt_gov_api_urlrr   s           r%   Úcheck_prompt_validityz/PebbloRetrievalAPIWrapper.check_prompt_validity  så   € ð # HÐ-ˆØ-/ÀÐ BÐ BˆØ $ˆØÔ# wÒ.Ð.Ø×(Ò(Ñ*Ô*ˆGàÔ&ÐH­Ô(@Ô(FÐHÐHð ð ×+Ò+ØÐ*¨G°^ñô ˆKð ð Ø.9×.>Ò.>Ñ.@Ô.@×.DÒ.DÀZÐQSÑ.TÔ.T� 
Ñ+Ø1<×1AÒ1AÑ1CÔ1C×1GÒ1GØ! 1ñ2ô 2� Ñ.ð  Ð/Ð/r$   c              ƒ   ó:  K  — d|i}i ddœ}d}| j         dk    r€|                      ¦   «         }| j        › t          j        j        › �}|                      d|||¦  «        ƒ d{V —†}|r2|                     di ¦  «        |d<   |                     d	d¦  «        |d	<   ||fS )
r�   r!   r   r‘   TrP   rd   Nr’   r“   )rQ   rj   rR   r   r"   rk   r�   r:   r”   s           r%   Úacheck_prompt_validityz0PebbloRetrievalAPIWrapper.acheck_prompt_validity0  så   è è € ð" # HÐ-ˆØ-/ÀÐ BÐ BˆØ $ˆØÔ# wÒ.Ð.Ø×(Ò(Ñ*Ô*ˆGàÔ&ÐH­Ô(@Ô(FÐHÐHð ð !%× 2Ò 2ØÐ*¨G°^ñ!ô !ð ð ð ð ð ð ˆKð ð SØ.9¯oªo¸jÈ"Ñ.MÔ.M� 
Ñ+Ø1<·²ÀÐPQÑ1RÔ1R� Ñ.Ø Ð/Ð/r$   rf   c                 ó�   — dddœ}|r>| j         r|                     d| j         i¦  «         nt                               d¦  «         |S )zæ
        Generate headers for the request.

        args:
            cloud_request (bool): flag indicating whether the request is for Pebblo
            cloud.
        returns:
            dict: Headers for the request.

        zapplication/json)ÚAcceptzContent-Typez	x-api-keyz,API key is missing for Pebblo cloud request.)rO   rp   rA   r†   )r^   rf   rt   s      r%   rj   z'PebbloRetrievalAPIWrapper._make_headersQ  s`   € ð )Ø.ð
ð 
ˆð ð 	OàŒ|ð OØ—’ ¨T¬\Ð:Ñ;Ô;Ð;Ð;å—’ÐMÑNÔNÐNØˆr$   é   ÚmethodÚurlrt   rs   Útimeoutc           
      ó
  — 	 t          | ||||¬¦  «        }t                               d| |j         j        t	          t          |j         j        r|j         j        ng ¦  «        ¦  «        t	          |j        ¦  «        ¦  «         |j        t          j	        k    r#t           
                    d|j        › �¦  «         no|j        t          j        k    r#t           
                    d|j        › �¦  «         n7|j        t          j        k    r"t           
                    d|j        › �¦  «         |S # t          $ r t           
                    d|¦  «         Y n1t          $ r%}t           
                    d|¦  «         Y d}~nd}~ww xY wdS )	aê  
        Make a request to the Pebblo server/cloud API.

        Args:
            method (str): HTTP method (GET, POST, PUT, DELETE, etc.).
            url (str): URL for the request.
            headers (dict): Headers for the request.
            payload (Optional[dict]): Payload for the request (for POST, PUT, etc.).
            timeout (int): Timeout for the request in seconds.

        Returns:
            Optional[Response]: Response object if the request is successful.
        )rž   rŸ   rt   rm   r    z5Request: method %s, url %s, len %s response status %súPebblo Server: Error ú$Pebblo received an invalid payload: ú-Pebblo returned an unexpected response code: úUnable to reach server %sz'An Exception caught in make_request: %sN)r   rA   rB   rŸ   ÚstrÚlenÚbodyÚstatus_coder   ÚINTERNAL_SERVER_ERRORr†   ÚBAD_REQUESTro   ÚOKr   rK   )rž   rŸ   rt   rs   r    ÚresponseÚes          r%   rl   z&PebbloRetrievalAPIWrapper.make_requesth  s¥  € ð*	IÝØ 3°¸gÈwðñ ô ˆHõ �LŠLØGØØÔ Ô$Ý•C°Ô1AÔ1FÐN˜Ô(Ô-Ð-ÈBÑOÔOÑPÔPÝ�HÔ(Ñ)Ô)ñô ð ð Ô#¥zÔ'GÒGÐGÝ—’ÐM°xÔ7KÐMÐMÑNÔNÐNÐNØÔ%­Ô)?Ò?Ð?Ý—’ÐUÀhÄmÐUÐUÑVÔVÐVÐVØÔ%­¬Ò6Ð6Ý—’ð.ØÔ+ð.ð .ñô ð ð
 ˆOøÝð 	=ð 	=ð 	=Ý�NŠNÐ6¸Ñ<Ô<Ð<Ð<Ð<Ýð 	Ið 	Ið 	IÝ�NŠNÐDÀaÑHÔHÐHÐHÐHÐHÐHÐHøøøøð	Iøøøàˆts   ‚D(D+ Ä+%F Å	F ÅE;Å;F rr   c                 ó4  — |�r|                       di ¦  «        }|                     |                      di ¦  «                              di ¦  «        ¦  «         |                     dd¦  «         |                       di ¦  «        }|                     |                      di ¦  «                              di ¦  «        ¦  «         |                     dd¦  «         |                       dg ¦  «        }|D ]}|                     dd¦  «         ŒdS i | d<   i | d<   g | d<   dS )zå
        Update the payload with response, prompt and context from Pebblo response.

        Args:
            payload (dict): Payload to be updated.
            pebblo_resp (Optional[dict]): Response from Pebblo server.
        r­   Úretrieval_dataÚdataNr!   ÚcontextÚdoc)r:   rp   Úpop)rs   rr   r­   r!   r²   Úcontext_datas         r%   r…   z.PebbloRetrievalAPIWrapper.update_cloud_payloadš  s(  € ð ñ 	$à—{’{ :¨rÑ2Ô2ˆHØ�OŠO˜KŸOšOÐ,<¸bÑAÔA×EÒEÀjÐRTÑUÔUÑVÔVÐVØ�LŠL˜ Ñ&Ô&Ð&Ø—[’[ ¨2Ñ.Ô.ˆFØ�MŠM˜+Ÿ/š/Ð*:¸BÑ?Ô?×CÒCÀHÈbÑQÔQÑRÔRÐRØ�JŠJ�v˜tÑ$Ô$Ð$Ø—k’k )¨RÑ0Ô0ˆGØ 'ð .ð .�Ø× Ò  ¨Ñ-Ô-Ð-Ð-ð.ð .ð #%ˆG�JÑØ "ˆG�HÑØ!#ˆG�IÑÐÐr$   c              ƒ   óf  K  — 	 t          |¬¦  «        }t          j        ¦   «         4 ƒd{V —†}|                     | ||||¬¦  «        4 ƒd{V —†	 }|j        t
          j        k    r#t                               d|j        › �¦  «         no|j        t
          j	        k    r#t                               d|j
        › �¦  «         n7|j        t
          j        k    r"t                               d|j        › �¦  «         |                     ¦   «         ƒ d{V —†}ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |S # t          $ r t                               d|¦  «         Y n1t          $ r%}	t                               d|	¦  «         Y d}	~	nd}	~	ww xY wdS )	aß  
        Make a async request to the Pebblo server/cloud API.

        Args:
            method (str): HTTP method (GET, POST, PUT, DELETE, etc.).
            url (str): URL for the request.
            headers (dict): Headers for the request.
            payload (Optional[dict]): Payload for the request (for POST, PUT, etc.).
            timeout (int): Timeout for the request in seconds.

        Returns:
            Any: Response json if the request is successful.
        )ÚtotalN)rž   rŸ   rm   rt   r    r¢   r£   r¤   r¥   z(An Exception caught in amake_request: %s)r
   ÚaiohttpÚClientSessionr   Ústatusr   rª   rA   r†   r«   ro   r¬   rm   r   rK   )
rž   rŸ   rt   rs   r    Úclient_timeoutÚasessionr­   Úresponse_jsonr®   s
             r%   r�   z'PebbloRetrievalAPIWrapper.amake_request³  sú  è è € ð*	JÝ*°Ð9Ñ9Ô9ˆNÝÔ,Ñ.Ô.ð :ð :ð :ð :ð :ð :ð :°(Ø#×+Ò+Ø!ØØ Ø#Ø*ð ,ñ ô ð :ð :ð :ð :ð :ð :ð :ð :ð Ø”­*Ô*JÒJÐJÝŸšÐ'P¸x¼Ð'PÐ'PÑQÔQÐQÐQØ!œ­JÔ,BÒBÐBÝŸšØRÀ8Ä=ÐRÐRñô ð ð ð "œ­J¬MÒ9Ð9ÝŸšð1Ø'œð1ð 1ñô ð ð +3¯-ª-©/¬/Ð$9Ð$9Ð$9Ð$9Ð$9Ð$9�Mð%:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð( !Ð øÝð 	=ð 	=ð 	=Ý�NŠNÐ6¸Ñ<Ô<Ð<Ð<Ð<Ýð 	Jð 	Jð 	JÝ�NŠNÐEÀqÑIÔIÐIÐIÐIÐIÐIÐIøøøøð	Jøøøàˆtse   „)E ­!EÁCD#ÄEÄ#
D-	Ä-EÄ0D-	Ä1EÄ4E Å
EÅE ÅEÅE Å%F.Æ 	F.Æ	F)Æ)F.c
                 óR  ‡— t          |ˆfd„|D ¦   «         t          ||                     di ¦  «        |                     dd¦  «        |	¬¦  «        t          |¬¦  «        ||r|j        nd|rt	          |d¦  «        r|j        ng | j        ¬	¦  «        }
|
                     d
¬¦  «        S )aÓ  
        Build the QA payload for the prompt.

         Args:
            app_name (str): Name of the app.
            retriever (VectorStoreRetriever): Retriever instance.
            question (str): Question asked in the prompt.
            answer (str): Answer generated by the model.
            auth_context (Optional[AuthContext]): Authentication context.
            docs (List[Document]): List of documents retrieved.
            prompt_entities (Dict[str, Any]): Entities present in the prompt.
            prompt_time (str): Time when the prompt was generated.
            prompt_gov_enabled (bool): Whether prompt governance is enabled.

        Returns:
            dict: The QA payload for the prompt.
        c           
      ó  •— g | ]‡}t          |t          ¦  «        ¯t          |j                             d |j                             d¦  «        ¦  «        |j        ‰j        j        j        |j                             d¦  «        ¬¦  «        ‘ŒˆS )Ú	full_pathÚsourceÚpb_checksum)Úretrieved_fromr³   Ú	vector_dbrÂ   )	Ú
isinstancer   r   Úmetadatar:   Úpage_contentÚvectorstorer_   r   )Ú.0r³   rz   s     €r%   ú
<listcomp>zEPebbloRetrievalAPIWrapper.build_prompt_qa_payload.<locals>.<listcomp>  s›   ø€ ð ð ð ð Ý˜c¥8Ñ,Ô,ðÝØ#&¤<×#3Ò#3Ø# S¤\×%5Ò%5°hÑ%?Ô%?ñ$ô $ð Ô(Ø'Ô3Ô=ÔFØ #¤× 0Ò 0°Ñ ?Ô ?ðñ ô ðð ð r$   r’   r“   r   )r±   r’   r“   r�   )r±   r*   Ú	user_auth)r+   r²   r!   r­   r€   ÚuserÚuser_identitiesrQ   Trb   )r   r   r:   Úuser_idÚhasattrrË   rQ   ri   )r^   ry   rz   r{   r|   r}   r~   r   r€   r�   Úqas     `        r%   r„   z1PebbloRetrievalAPIWrapper.build_prompt_qa_payloadå  sè   ø€ õ: Øðð ð ð ð  ðñ ô õ ØØ(×,Ò,¨Z¸Ñ<Ô<Ø+×/Ò/°¸qÑAÔAØ#5ð	ñ ô õ  Ð(Ñ(Ô(Ø#Ø)5ÐD�Ô%Ð%¸9àðÝ '¨°kÑ BÔ Bð˜LÔ2Ð2àØ $Ô 8ð5
ñ 
ô 
ˆð8 �wŠw TˆwÑ*Ô*Ð*r$   )F)Nr�   )!r   r   r   r   r   r¦   Ú__annotations__rQ   r   r]   r   rx   r   r   r   r   r   Úboolr‹   rŽ   r	   r˜   rš   ri   rj   ÚstaticmethodÚintr   rl   r…   r�   r„   Ú__classcell__)r_   s   @r%   rN   rN   \   s:  ø€ € € € € € Ø+Ð+à�cŒ]ÐÐÑØ"Ø&Ð˜Ð&Ð&Ñ&ØIØ˜S”MÐ!Ð!Ñ!Ø&Ø˜Œ}ÐÐÑØ!ð# ð #ð #ð #ð #ð #ð #ðN Sð N¨Tð Nð Nð Nð NðR $)ð;Vð ;Vàð;Vð (ð;Vð ð	;Vð
 ð;Vð ˜{Ô+ð;Vð �8Œnð;Vð ˜c 3˜hœð;Vð ð;Vð !ð;Vð 
ð;Vð ;Vð ;Vð ;VðN $)ð<Vð <Vàð<Vð (ð<Vð ð	<Vð
 ð<Vð ˜{Ô+ð<Vð �8Œnð<Vð ˜c 3˜hœð<Vð ð<Vð !ð<Vð 
ð<Vð <Vð <Vð <Vð|0¨cð 0°e¸DÀ$ÀsÈCÀxÄ.Ð<PÔ6Qð 0ð 0ð 0ð 0ðB0Øð0à	ˆt�T˜#˜s˜(”^Ð#Ô	$ð0ð 0ð 0ð 0ðBð ¨4ð ¸Dð ð ð ð ð. ð
 #'Øð/ð /Øð/àð/ð ð/ð ˜$”ð	/ð
 ð/ð 
�(Ô	ð/ð /ð /ñ „\ð/ðb ð$ dð $¸À$¼ð $ÈDð $ð $ð $ñ „\ð$ð0 ð
 #'Øð/ð /Øð/àð/ð ð/ð ˜$”ð	/ð
 ð/ð 
ð/ð /ð /ñ „\ð/ðv $)ð9+ð 9+àð9+ð (ð9+ð ð	9+ð
 ð9+ð ˜{Ô+ð9+ð �8Œnð9+ð ˜c 3˜hœð9+ð ð9+ð !ð9+ð 
ð9+ð 9+ð 9+ð 9+ð 9+ð 9+ð 9+ð 9+r$   rN   )2rm   Úloggingr3   r.   Úenumr   Úhttpr   Útypingr   r   r   r   r	   r¸   r
   Úlangchain_core.documentsr   Úlangchain_core.envr   Úlangchain_core.utilsr   Úlangchain_core.vectorstoresr   Úpydanticr   Úrequestsr   r   Úrequests.exceptionsr   Ú2langchain_community.chains.pebblo_retrieval.modelsr   r   r   r   r   r   r   Ú	getLoggerr   rA   rq   rZ   r[   r¦   r   rE   r?   rN   r#   r$   r%   ú<module>rã      s?  ðØ €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€à€à1Ð Ø1Ð ð0ð 0ð 0ð 0ð 0ˆS�$ñ 0ô 0ð 0ð�U˜9 gÐ-Ô.ð ð ð ð ð>�ð ð ð ð ð B+ð B+ð B+ð B+ð B+ 	ñ B+ô B+ð B+ð B+ð B+r$   