§
    æ˜ºh:  ã                   ó¢   — d dl Z d dlmZmZmZ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  e j        e¦  «        Z G d„ d	e	¦  «        ZdS )
é    N)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚroot_validator)Úget_from_dict_or_env)Úenforce_stop_tokensc                   óÌ  — e Zd ZU dZeed<   dZee         ed<   	 dZ	ee
eef                  ed<   	 dZeed<   	 d	Zeed
<   	 dZee         ed<   	 dZeee                  ed<    G d„ d¦  «        Z e¦   «         de
de
fd„¦   «         Zede
eef         fd„¦   «         Z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S )ÚPredictionGuardaÒ  Prediction Guard large language models.

    To use, you should have the ``predictionguard`` python package installed, and the
    environment variable ``PREDICTIONGUARD_TOKEN`` set with your access token, or pass
    it as a named parameter to the constructor. To use Prediction Guard's API along
    with OpenAI models, set the environment variable ``OPENAI_API_KEY`` with your
    OpenAI API key as well.

    Example:
        .. code-block:: python

            pgllm = PredictionGuard(model="MPT-7B-Instruct",
                                    token="my-access-token",
                                    output={
                                        "type": "boolean"
                                    })
    ÚclientzMPT-7B-InstructÚmodelNÚoutputé   Ú
max_tokensg      è?ÚtemperatureÚtokenÚstopc                   ó    — e Zd ZdZej        ZdS )úPredictionGuard.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚforbidÚextra© ó    úp/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/predictionguard.pyÚConfigr   3   s   € € € € € Ø5Ð5à”ˆˆˆr    r"   ÚvaluesÚreturnc                 ó    — t          |dd¦  «        }	 ddl}|                     |¬¦  «        |d<   n# t          $ r t          d¦  «        ‚w xY w|S )zHValidate that the access token and python package exists in environment.r   ÚPREDICTIONGUARD_TOKENr   N)r   r   zfCould not import predictionguard python package. Please install it with `pip install predictionguard`.)r   ÚpredictionguardÚClientÚImportError)Úclsr#   r   Úpgs       r!   Úvalidate_environmentz$PredictionGuard.validate_environment8   s|   € õ % V¨WÐ6MÑNÔNˆð	Ø(Ð(Ð(Ð(à!Ÿyšy¨u˜yÑ5Ô5ˆF�8ÑÐøÝð 	ð 	ð 	ÝðHñô ð ð	øøøð
 ˆs	   “1 ±Ac                 ó    — | j         | j        dœS )z@Get the default parameters for calling the Prediction Guard API.©r   r   r.   ©Úselfs    r!   Ú_default_paramszPredictionGuard._default_paramsG   s   € ð œ/ØÔ+ð
ð 
ð 	
r    c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   r1   r/   s    r!   Ú_identifying_paramsz#PredictionGuard._identifying_paramsO   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@r    c                 ó   — dS )zReturn type of llm.r'   r   r/   s    r!   Ú	_llm_typezPredictionGuard._llm_typeT   s
   € ð !Ð r    ÚpromptÚrun_managerÚkwargsc           	      ó<  — ddl }| j        }| j        �|�t          d¦  «        ‚| j        �| j        |d<   n||d<    |j        j        d
| j        || j        |d         |d         dœ|¤Ž}|d         d         d	         }|€| j        �t          ||d         ¦  «        }|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 = pgllm("Tell me a joke.")
        r   Nz2`stop` found in both the input and default params.Ústop_sequencesr   r   )r   r6   r   r   r   ÚchoicesÚtextr   )	r'   r1   r   Ú
ValueErrorÚ
CompletionÚcreater   r   r   )	r0   r6   r   r7   r8   r+   ÚparamsÚresponser<   s	            r!   Ú_callzPredictionGuard._callY   sÝ   € ð  	%Ð$Ð$Ð$àÔ%ˆØŒ9Ð  TÐ%5ÝÐQÑRÔRÐRØŒYÐ"Ø'+¤yˆFÐ#Ñ$Ð$à'+ˆFÐ#Ñ$à'�2”=Ô'ð 
Ø”*ØØ”;Ø˜}Ô-Ø˜lÔ+ð
ð 
ð ð
ð 
ˆð ˜	Ô" 1Ô% fÔ-ˆð Ð˜tœyÐ4Ý& t¨VÐ4DÔ-EÑFÔFˆDàˆr    )NN)r   r   r   r   r   Ú__annotations__r   r   Ústrr   r   r   Úintr   Úfloatr   r   r   r"   r
   r,   Úpropertyr1   r3   r5   r   rB   r   r    r!   r   r      s  € € € € € € ðð ð$ €K€K�KØ,€Eˆ8�CŒ=Ð,Ð,Ñ,Øà'+€FˆH�T˜#˜s˜(”^Ô$Ð+Ð+Ñ+ØFà€J�ÐÐÑØAà€K�ÐÐÑØQà€Eˆ8�CŒ=ÐÐÑØ-à $€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð ðA T¨#¨s¨(¤^ð Að Að Añ „XðAð ð!˜3ð !ð !ð !ñ „Xð!ð %)Ø:>ð	)ð )àð)ð �t˜C”yÔ!ð)ð Ð6Ô7ð	)ð
 ð)ð 
ð)ð )ð )ð )ð )ð )r    r   )ÚloggingÚtypingr   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.pydantic_v1r	   r
   Úlangchain_core.utilsr   Úlangchain_community.llms.utilsr   Ú	getLoggerr   Úloggerr   r   r    r!   ú<module>rQ      sâ   ðØ €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ðtð tð tð tð t�cñ tô tð tð tð tr    