§
    æ˜ºhj  ã                   ó†   — 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mZ d dlmZ d dlmZ  G d„ d	e
¦  «        ZdS )
é    )ÚAnyÚDictÚListÚMappingÚOptionalN)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚroot_validator©Úget_from_dict_or_env)Úenforce_stop_tokensc                   ó”  — e Zd ZU dZdZee         ed<   	 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                  ed
<   	 dZee         ed<   	 dZee         ed<   	 dZee
         ed<   	 dZeed<   	 dZee
         ed<   	 dZee         ed<   	 dZ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 ) ÚWriteraX  Writer large language models.

    To use, you should have the environment variable ``WRITER_API_KEY`` and
    ``WRITER_ORG_ID`` set with your API key and organization ID respectively.

    Example:
        .. code-block:: python

            from langchain_community.llms import Writer
            writer = Writer(model_id="palmyra-base")
    NÚwriter_org_idzpalmyra-instructÚmodel_idÚ
min_tokensÚ
max_tokensÚtemperatureÚtop_pÚstopÚpresence_penaltyÚrepetition_penaltyÚbest_ofFÚlogprobsÚnÚwriter_api_keyÚbase_urlc                   ó    — e Zd ZdZej        ZdS )úWriter.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/writer.pyÚConfigr    C   s   € € € € € Ø5Ð5à”ˆˆˆr(   r*   ÚvaluesÚreturnc                 ó^   — t          |dd¦  «        }||d<   t          |dd¦  «        }||d<   |S )z?Validate that api key and organization id exist in environment.r   ÚWRITER_API_KEYr   ÚWRITER_ORG_IDr   )Úclsr+   r   r   s       r)   Úvalidate_environmentzWriter.validate_environmentH   sI   € õ .ØÐ$Ð&6ñ
ô 
ˆð $2ˆÐÑ å,¨V°_ÀoÑVÔVˆØ"/ˆˆÑàˆr(   c                 ó€   — | j         | j        | j        | j        | j        | j        | j        | j        | j        | j	        dœ
S )z2Get the default parameters for calling Writer API.)
Ú	minTokensÚ	maxTokensr   ÚtopPr   ÚpresencePenaltyÚrepetitionPenaltyÚbestOfr   r   )
r   r   r   r   r   r   r   r   r   r   ©Úselfs    r)   Ú_default_paramszWriter._default_paramsV   sH   € ð œØœØÔ+Ø”JØ”IØ#Ô4Ø!%Ô!8Ø”lØœØ”ð
ð 
ð 	
r(   c                 ó2   — i | j         | j        dœ¥| j        ¥S )zGet the identifying parameters.)r   r   )r   r   r;   r9   s    r)   Ú_identifying_paramszWriter._identifying_paramsf   s,   € ð
Øœ=¸4Ô;MÐNÐNð
àÔ"ð
ð 	
r(   c                 ó   — dS )zReturn type of llm.Úwriterr'   r9   s    r)   Ú	_llm_typezWriter._llm_typen   s	   € ð ˆxr(   ÚpromptÚrun_managerÚkwargsc                 óÜ   — | j         �| j         }nd| j        › d| j        › d�}i | j        ¥|¥}t	          j        || j        › dddœd|i|¥¬¦  «        }|j        }|�t          ||¦  «        }|S )	ak  Call out to Writer's completions 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

                response = Writer("Tell me a joke.")
        Nz3https://enterprise-api.writer.com/llm/organization/z/model/z/completionszapplication/json)ÚAuthorizationzContent-TypeÚAcceptrA   )ÚurlÚheadersÚjson)	r   r   r   r;   ÚrequestsÚpostr   Útextr   )	r:   rA   r   rB   rC   r   ÚparamsÚresponserL   s	            r)   Ú_callzWriter._calls   s½   € ð* Œ=Ð$Ø”}ˆHˆHð6Ø!%Ô!3ð6ð 6àœ-ð6ð 6ð 6ð ð
 4�DÔ(Ð3¨FÐ3ˆÝ”=Øà$(Ô$7Ð!9Ø 2Ø,ðð ð
 ˜FÐ- fÐ-ð
ñ 
ô 
ˆð Œ}ˆØÐõ ' t¨TÑ2Ô2ˆDØˆr(   )NN)%r!   r"   r#   r$   r   r   ÚstrÚ__annotations__r   r   Úintr   r   Úfloatr   r   r   r   r   r   r   Úboolr   r   r   r*   r   r   r1   Úpropertyr   r   r;   r=   r@   r   rO   r'   r(   r)   r   r      s©  € € € € € € ð
ð 
ð $(€M�8˜C”=Ð'Ð'Ñ'Ø!à&€HˆcÐ&Ð&Ñ&Øà $€J�˜”Ð$Ð$Ñ$Ø/à $€J�˜”Ð$Ð$Ñ$Ø/à#'€K�˜%”Ð'Ð'Ñ'Ø+à!€Eˆ8�EŒ?Ð!Ð!Ñ!ØDà $€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$Ø9à(,Ð�h˜u”oÐ,Ð,Ñ,Ø<à*.Ð˜ œÐ.Ð.Ñ.Ø;à!€GˆX�cŒ]Ð!Ð!Ñ!ØMà€HˆdÐÐÑØ.à€A€x�„}ÐÐÑØ+à$(€N�H˜S”MÐ(Ð(Ñ(Øà"€Hˆh�sŒmÐ"Ð"Ñ"Ø?ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð
 ¨¨c¨Ô!2ð 
ð 
ð 
ñ „Xð
ð ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	,ð ,àð,ð �t˜C”yÔ!ð,ð Ð6Ô7ð	,ð
 ð,ð 
ð,ð ,ð ,ð ,ð ,ð ,r(   r   )Útypingr   r   r   r   r   rJ   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   Úlangchain_core.utilsr   Úlangchain_community.llms.utilsr   r   r'   r(   r)   ú<module>r\      sÖ   ðØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à >Ð >Ð >Ð >Ð >Ð >ðSð Sð Sð Sð SˆSñ Sô Sð Sð Sð Sr(   