§
    šŠtj  ã                   óÞ   — d dl Z d dlmZmZmZmZ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mZ d dlmZ  e j        e¦  «        Z ed	d
d¬¦  «         G d„ de¦  «        ¦   «         ZdS )é    N)ÚAnyÚDictÚListÚOptionalÚUnion)Ú
deprecated)ÚCallbackManagerForLLMRun)ÚLLM)Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validator)Úenforce_stop_tokensz0.3.28z1.0z)langchain_predictionguard.PredictionGuard)ÚsinceÚremovalÚalternative_importc                   óR  — e Zd ZU dZdZeed<   dZee	         ed<   	 dZ
ee         ed<   	 dZee         ed	<   	 d
Zee         ed<   	 dZee         ed<   	 dZeee	                  ed<   dZeee	ee	ef         f                  ed<   	 dZeee	ef                  ed<   	 dZee	         ed<   	  ed¬¦  «        Z ed¬¦  «        dedefd„¦   «         Zedee	ef         fd„¦   «         Zede	fd„¦   «         Zdedee	ef         fd„Z	 	 dde	deee	                  dee          dede	f
d„Z!dS ) ÚPredictionGuardaÞ  Prediction Guard large language models.

    To use, you should have the ``predictionguard`` python package installed, and the
    environment variable ``PREDICTIONGUARD_API_KEY`` set with your API key, or pass
    it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            llm = PredictionGuard(
                model="Hermes-3-Llama-3.1-8B",
                predictionguard_api_key="your Prediction Guard API key",
            )
    NÚclientzHermes-3-Llama-3.1-8BÚmodelé   Ú
max_tokensg      è?Útemperaturegš™™™™™¹?Útop_pÚtop_kÚstopÚpredictionguard_inputÚpredictionguard_outputÚpredictionguard_api_keyÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ó�   — t          |dd¦  «        }	 ddlm}  ||¬¦  «        |d<   n# t          $ r t          d¦  «        ‚w xY w|S )zCValidate that the api_key and python package exists in environment.r   ÚPREDICTIONGUARD_API_KEYr   )r   )Úapi_keyr   zfCould not import predictionguard python package. Please install it with `pip install predictionguard`.)r   Úpredictionguardr   ÚImportError)Úclsr$   Ú
pg_api_keyr   s       úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/predictionguard.pyÚvalidate_environmentz$PredictionGuard.validate_environmentB   s�   € õ *ØÐ-Ð/Hñ
ô 
ˆ
ð	Ø7Ð7Ð7Ð7Ð7Ð7à.˜Ø"ð ñ  ô  ˆF�8ÑÐøõ ð 	ð 	ð 	ÝðHñô ð ð	øøøð ˆs	   “) ©Ac                 ó   — d| j         iS )zGet the identifying parameters.r   )r   ©Úselfs    r-   Ú_identifying_paramsz#PredictionGuard._identifying_paramsX   s   € ð ˜œÐ$Ð$ó    c                 ó   — dS )zReturn type of llm.r)   © r0   s    r-   Ú	_llm_typezPredictionGuard._llm_type]   s
   € ð !Ð r3   Úkwargsc           
      óX  — |                      d| j        ¦  «        }|                      d| j        ¦  «        }i | j        | j        | j        | j        t          |t          ¦  «        r| 	                    ¦   «         n|t          |t          ¦  «        r| 	                    ¦   «         n|dœ¥|¥}|S )Nr   r   )r   r   r   r   ÚinputÚoutput)
Úpopr   r   r   r   r   r   Ú
isinstancer   Ú
model_dump)r1   r7   r9   r:   Úparamss        r-   Ú_get_parameterszPredictionGuard._get_parametersb   s´   € à—
’
Ð2°DÔ4NÑOÔOˆØ—’Ð4°dÔ6QÑRÔRˆð
à"œoØ#Ô/ØœØœå*4°U½IÑ*FÔ*FÐQ�E×$Ò$Ñ&Ô&Ð&ÈEõ ,6°f½iÑ+HÔ+HÐT�F×%Ò%Ñ'Ô'Ð'Èfðð ð
ð ð
ˆð  ˆr3   ÚpromptÚrun_managerc                 óÂ  —  | j         di |¤Ž}d}| j        �|�t          d¦  «        ‚| j        �| j        }n|} | j        j        j        d| j        |dœ|¤Ž}|d         D ]X}|                     dd¦  «                             d¦  «        r-|d          	                    d¦  «        }	t          d|	› �¦  «        ‚ŒY|d         d	         d
         }
|rt          |
|¦  «        }
|
S )a$  Call out to Prediction Guard's model API.
        Args:
            prompt: The prompt to pass into the model.
        Returns:
            The string generated by the model.
        Example:
            .. code-block:: python
                response = llm.invoke("Tell me a joke.")
        Nz2`stop` found in both the input and default params.)r   r@   ÚchoicesÚstatusÚ zerror: z Error from PredictionGuard API: r   Útextr5   )r?   r   Ú
ValueErrorr   ÚcompletionsÚcreater   ÚgetÚ
startswithÚremoveprefixr   )r1   r@   r   rA   r7   r>   ÚstopsÚresponseÚresÚerr_msgrF   s              r-   Ú_callzPredictionGuard._cally   s-  € ð" &�Ô%Ð/Ð/¨Ð/Ð/ˆàˆØŒ9Ð  TÐ%5ÝÐQÑRÔRÐRØŒYÐ"Ø”IˆEˆEàˆEà1�4”;Ô*Ô1ð 
Ø”*Øð
ð 
ð ð
ð 
ˆð ˜IÔ&ð 	Oð 	OˆCØ�wŠw�x Ñ$Ô$×/Ò/°	Ñ:Ô:ð OØ˜hœ-×4Ò4°YÑ?Ô?�Ý Ð!MÀGÐ!MÐ!MÑNÔNÐNðOð ˜	Ô" 1Ô% fÔ-ˆð ð 	4Ý& t¨UÑ3Ô3ˆDàˆr3   )NN)"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   Ústrr   Úintr   Úfloatr   r   r   r   r   r   r   Úboolr   r   r   Úmodel_configr   r.   Úpropertyr2   r6   r?   r	   rQ   r5   r3   r-   r   r      sO  € € € € € € ðð ð €FˆCÐÐÑà2€Eˆ8�CŒ=Ð2Ð2Ñ2Øà #€J�˜”Ð#Ð#Ñ#ØAà#'€K�˜%”Ð'Ð'Ñ'ØQà €Eˆ8�EŒ?Ð Ð Ñ ØSà€Eˆ8�CŒ=ÐÐÑØFà $€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$àCGÐ˜8 D¨¨e°C¸°IÔ.>Ð)>Ô$?Ô@ÐGÐGÑGØKà8<Ð˜H T¨#¨t¨)¤_Ô5Ð<Ð<Ñ<Ø9à-1Ð˜X cœ]Ð1Ð1Ñ1Ø#à�: HÐ-Ñ-Ô-€Là€_˜(Ð#Ñ#Ô#ð¨$ð °4ð ð ð ñ $Ô#ðð* ð% T¨#¨s¨(¤^ð %ð %ð %ñ „Xð%ð ð!˜3ð !ð !ð !ñ „Xð!ð¨ð °°S¸#°X´ð ð ð ð ð4 %)Ø:>ð	-ð -àð-ð �t˜C”yÔ!ð-ð Ð6Ô7ð	-ð
 ð-ð 
ð-ð -ð -ð -ð -ð -r3   r   )ÚloggingÚtypingr   r   r   r   r   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr	   Ú#langchain_core.language_models.llmsr
   Úlangchain_core.utilsr   Úpydanticr   r   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrR   Úloggerr   r5   r3   r-   ú<module>rg      s)  ðØ €€€Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ð €Ø
ØØBðñ ô ð
Rð Rð Rð Rð R�cñ Rô Rñô ð
Rð Rð Rr3   