§
    æ˜ºh{  ã                   ó‚   — 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  G d„ d	e
¦  «        ZdS )
é    )ÚAnyÚIteratorÚListÚMappingÚOptionalN)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)ÚConnectionError)Úenforce_stop_tokensc                   ó   — e Zd ZU dZdZeed<   	 dZeed<   	 dZ	eed<   	 dZ
eed	<   	 dZeed
<   	 dZeed<   	 dZeed<   	 dZeed<   	 edeeef         fd„¦   «         Zedefd„¦   «         Z	 	 ddedeee                  dee         dedef
d„Z	 	 ddedeee                  dee         dedee         f
d„Zedeeef         fd„¦   «         ZdS )ÚTitanTakeoffz"Wrapper around Titan Takeoff APIs.zhttp://localhost:8000Úbase_urlé€   Úgenerate_max_lengthé   Úsampling_topkg      ð?Úsampling_toppÚsampling_temperatureÚrepetition_penaltyr   Úno_repeat_ngram_sizeFÚ	streamingÚreturnc                 óT   — | j         | j        | j        | j        | j        | j        dœ}|S )z<Get the default parameters for calling Titan Takeoff Server.©r   r   r   r   r   r   r   )ÚselfÚparamss     ún/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/titan_takeoff.pyÚ_default_paramszTitanTakeoff._default_params/   s;   € ð $(Ô#;Ø!Ô/Ø!Ô/Ø$(Ô$=Ø"&Ô"9Ø$(Ô$=ð
ð 
ˆð ˆó    c                 ó   — dS )zReturn type of llm.Útitan_takeoff© ©r   s    r   Ú	_llm_typezTitanTakeoff._llm_type<   s	   € ð ˆr    NÚpromptÚstopÚrun_managerÚkwargsc                 óÖ  — 	 | j         r)d}|                      |||¬¦  «        D ]}||j        z  }Œ|S | j        › d�}d|i| j        ¥}t          j        ||¬¦  «        }	|	                     ¦   «          d|	_        d}
d|	 	                    ¦   «         v r|	 	                    ¦   «         d         }
nt          d¦  «        ‚|�t          |
|¦  «        }
|
S # t          $ r t          d
¦  «        ‚w xY w)a¨  Call out to Titan Takeoff generate endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                prompt = "What is the capital of the United Kingdom?"
                response = model(prompt)

        Ú )r&   r'   r(   z	/generateÚtext)Újsonúutf-8ÚmessagezSomething went wrong.NzgCould not connect to Titan Takeoff server.                 Please make sure that the server is running.)r   Ú_streamr,   r   r   ÚrequestsÚpostÚraise_for_statusÚencodingr-   Ú
ValueErrorr   r   )r   r&   r'   r(   r)   Útext_outputÚchunkÚurlr   Úresponser,   s              r   Ú_callzTitanTakeoff._callA   s.  € ð.	ØŒ~ð #Ø �Ø!Ÿ\š\Ø!ØØ +ð *ñ ô ð .ð .�Eð
   5¤:Ñ-�K�KØ"Ð"à”]Ð-Ð-Ð-ˆCØ˜fÐ=¨Ô(<Ð=ˆFå”} S¨vÐ6Ñ6Ô6ˆHØ×%Ò%Ñ'Ô'Ð'Ø 'ˆHÔØˆDà˜HŸMšM™OœOÐ+Ð+Ø—}’}‘” yÔ1��å Ð!8Ñ9Ô9Ð9ØÐÝ*¨4°Ñ6Ô6�ØˆKøÝð 	ð 	ð 	Ý!ð>ñô ð ð	øøøs   ‚/C ²BC ÃC(c              +   ó
  K  — | j         › d�}d|i| j        ¥}t          j        ||d¬¦  «        }d|_        |                     dd¬¦  «        D ]5}|r1t          |¬¦  «        }	|	V — |r|                     |	j        ¬	¦  «         Œ6d
S )a÷  Call out to Titan Takeoff stream endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Yields:
            A dictionary like object containing a string token.

        Example:
            .. code-block:: python

                prompt = "What is the capital of the United Kingdom?"
                response = model(prompt)

        z/generate_streamr,   T)r-   Ústreamr.   r   )Ú
chunk_sizeÚdecode_unicode)r,   )ÚtokenN)	r   r   r1   r2   r4   Úiter_contentr
   Úon_llm_new_tokenr,   )
r   r&   r'   r(   r)   r8   r   r9   r,   r7   s
             r   r0   zTitanTakeoff._streamx   s½   è è € ð4 ”Ð0Ð0Ð0ˆØ˜&Ð9 DÔ$8Ð9ˆå”= ¨6¸$Ð?Ñ?Ô?ˆØ#ˆÔØ×)Ò)°QÀtÐ)ÑLÔLð 	Cð 	CˆDØð CÝ'¨TÐ2Ñ2Ô2�Ø���Øð CØ×0Ò0°u´zÐ0ÑBÔBÐBøð	Cð 	Cr    c                 ó&   — d| j         ii ¥| j        ¥S )zGet the identifying parameters.r   )r   r   r$   s    r   Ú_identifying_paramsz TitanTakeoff._identifying_paramsž   s   € ð ˜DœMÐH¨RÐH°4Ô3GÐHÐHr    )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   Úintr   r   Úfloatr   r   r   r   ÚboolÚpropertyr   r   r   r%   r   r   r   r:   r   r
   r0   rC   r#   r    r   r   r      s%  € € € € € € Ø,Ð,à+€HˆcÐ+Ð+Ñ+ðð  #Ð˜Ð"Ð"Ñ"Ø3à€M�3ÐÐÑØRà€M�5ÐÐÑðð #&Ð˜%Ð%Ð%Ñ%ðð !$Ð˜Ð#Ð#Ñ#ðð !"Ð˜#Ð!Ð!Ñ!ØOà€IˆtÐÐÑØ8àð
 ¨¨c¨Ô!2ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	5ð 5àð5ð �t˜C”yÔ!ð5ð Ð6Ô7ð	5ð
 ð5ð 
ð5ð 5ð 5ð 5ðt %)Ø:>ð	$Cð $Càð$Cð �t˜C”yÔ!ð$Cð Ð6Ô7ð	$Cð
 ð$Cð 
�/Ô	"ð$Cð $Cð $Cð $CðL ðI W¨S°#¨XÔ%6ð Ið Ið Iñ „XðIð Ið Ir    r   )Útypingr   r   r   r   r   r1   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.outputsr
   Úrequests.exceptionsr   Úlangchain_community.llms.utilsr   r   r#   r    r   ú<module>rT      sÚ   ðØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø /Ð /Ð /Ð /Ð /Ð /à >Ð >Ð >Ð >Ð >Ð >ðUIð UIð UIð UIð UI�3ñ UIô UIð UIð UIð UIr    