
    Ng                         d dl mZmZmZmZmZmZmZ d dlm	Z	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mZ  G d de          Zd	S )
    )AnyAsyncIteratorDictIteratorListMappingOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)GenerationChunk)get_from_dict_or_env)
ConfigDictField	SecretStrmodel_validatorc                   ~   e Zd ZU dZ edd          Zeed<    edd          Zeed<    ed          Z	e
e         ed<   	  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                  ed<   	 dZe
e         ed<   	  ee          Zeeef         ed<   	  e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 e d          e!d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f
d"Z'	 	 d%dede
e%e                  de
e#         d ede(e)         f
d#Z*	 	 d%dede
e%e                  de
e&         d ede+e)         f
d$Z,dS )&Writera  Writer large language models.

    To use, you should have the ``writer-sdk`` Python package installed, and the
    environment variable ``WRITER_API_KEY`` set with your API key.

    Example:
        .. code-block:: python

            from langchain_community.llms import Writer as WriterLLM
            from writerai import Writer, AsyncWriter

            client = Writer()
            async_client = AsyncWriter()

            chat = WriterLLM(
                client=client,
                async_client=async_client
            )
    NT)defaultexcludeclientasync_client)r   api_keyzpalmyra-x-003-instructmodel)r   alias
model_name
max_tokensgffffff?temperaturetop_pstopbest_of)default_factorymodel_kwargs)populate_by_namereturnc                 R    | j         | j        | j        | j        | j        d| j        S )z2Get the default parameters for calling Writer API.)r   r   r   r    r!   )r   r   r   r    r!   r#   selfs    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/writer.py_default_paramszWriter._default_paramsF   s:     /+ZI|
 
 
 	
    c                 "    d| j         i| j        S )zGet the identifying parameters.r   )r   r*   r'   s    r)   _identifying_paramszWriter._identifying_paramsR   s      T_
"
 	
r+   c                     dS )zReturn type of llm.writer r'   s    r)   	_llm_typezWriter._llm_typeZ   s	     xr+   before)modevaluesc           
          	 ddl m}m} n"# t          $ r}t          d          |d}~ww xY w|                    d          s0|                    d |t          |dd                    i           |                    d	          s0|                    d	 |t          |dd                    i           t          |                    d                    |u r$t          |                    d	                    |u st          d
          |S )z<Validates that api key is passed and creates Writer clients.r   )AsyncClientClientzXCould not import writerai python package. Please install it with `pip install writerai`.Nr   r   WRITER_API_KEY)r   r   zx'client' attribute must be with type 'Client' and 'async_client' must be with type 'AsyncClient' from 'writerai' package)	writerair6   r7   ImportErrorgetupdater   type
ValueError)clsr4   r6   r7   es        r)   validate_environmentzWriter.validate_environment_   su   	444444444 	 	 	A  	 zz(## 		MMff 4"I/?! !     zz.)) 		MM"KK 4"I/?! !% % %   H%%&&&00VZZ//00K??Y  
 s    
*%*promptrun_managerkwargsc                     i | j         |}||                    d|i            | j        j        j        dd|i|j        d         j        }|S Nr    rB   r   r0   )r-   r<   r   completionscreatechoicestext)r(   rB   r    rC   rD   paramsrJ   s          r)   _callzWriter._call   sd     8D,77MM64.)))-t{&-FFVFvFFNqQVr+   c                    K   i | j         |}||                    d|i            | j        j        j        dd|i| d {V }|j        d         j        }|S rF   )r-   r<   r   rG   rH   rI   rJ   )r(   rB   r    rC   rD   rK   responserJ   s           r)   _acallzWriter._acall   s       8D,77MM64.)))=*6=VVVVvVVVVVVVV"'r+   c              +      K   i | j         |ddi}||                    d|i            | j        j        j        dd|i|}|D ]5}|r|                    |j                   t          |j                  V  6d S NstreamTr    rB   )rJ   r0   )r-   r<   r   rG   rH   on_llm_new_tokenvaluer   r(   rB   r    rC   rD   rK   rN   chunks           r)   _streamzWriter._stream   s       HD,GG$GGMM64.)))14;*1JJJ6JJ 	4 	4E :,,U[999!u{3333333	4 	4r+   c                "  K   i | j         |ddi}||                    d|i            | j        j        j        dd|i| d {V }|2 3 d {V }|r |                    |j                   d {V  t          |j                  W V  B6 d S rQ   )r-   r<   r   rG   rH   rS   rT   r   rU   s           r)   _astreamzWriter._astream   s       HD,GG$GGMM64.)))=*6=VVVVvVVVVVVVV# 	4 	4 	4 	4 	4 	4 	4% @!225;?????????!u{33333333 $88s   B)NN)-__name__
__module____qualname____doc__r   r   r   __annotations__r   r   r	   r   r   strr   intr   floatr   r    r   r!   dictr#   r   r   model_configpropertyr   r*   r-   r1   r   classmethodrA   r   rL   listr
   rO   r   r   rW   r   rY   r0   r+   r)   r   r      s         ( %d333FC333dD999L#999#(5#6#6#6GXi 666e$<GLLLJLLL $J$$$S#&K%&&&M "E8E?!!!: !%D(49
$$$2 "GXc]!!! $)5#>#>#>L$sCx.>>>V:t444L	
c!2 	
 	
 	
 X	
 
WS#X%6 
 
 
 X
 3    X _(###)$ )3 ) ) ) [ $#)\ %):>	  tCy! 67	
  
     %)?C	  tCy! ;<	
  
   " %):>	4 44 tCy!4 67	4
 4 
/	"4 4 4 4& %)?C	4 44 tCy!4 ;<	4
 4 
	'4 4 4 4 4 4r+   r   N)typingr   r   r   r   r   r   r	   langchain_core.callbacksr
   r   #langchain_core.language_models.llmsr   langchain_core.outputsr   langchain_core.utilsr   pydanticr   r   r   r   r   r0   r+   r)   <module>rm      s    N N N N N N N N N N N N N N N N N N        4 3 3 3 3 3 2 2 2 2 2 2 5 5 5 5 5 5 B B B B B B B B B B B Bx4 x4 x4 x4 x4S x4 x4 x4 x4 x4r+   