
    Ng                         d Z 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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 )z,Wrapper around Together AI's Completion API.    N)AnyDictListOptional)ClientSession)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLMconvert_to_secret_strget_from_dict_or_env)
ConfigDict	SecretStrmodel_validator)Requestsz0.0.12z1.0zlangchain_together.Together)sinceremovalalternative_importc                   @   e Zd ZU dZdZeed<   	 eed<   	 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d<   	  ed          Z ed          ededefd                        Zedefd            ZdedefdZedefd            Z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dede	ee                  de	e"         dedef
dZ#dS ) TogetheraL  LLM models from `Together`.

    To use, you'll need an API key which you can find here:
    https://api.together.xyz/settings/api-keys. This can be passed in as init param
    ``together_api_key`` or set as environment variable ``TOGETHER_API_KEY``.

    Together AI API reference: https://docs.together.ai/reference/inference
    z"https://api.together.xyz/inferencebase_urltogether_api_keymodelNtemperaturetop_ptop_k
max_tokensrepetition_penaltylogprobsforbid)extrabefore)modevaluesreturnc                 H    t          t          |dd                    |d<   |S )z,Validate that api key exists in environment.r   TOGETHER_API_KEYr   )clsr%   s     ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/together.pyvalidate_environmentzTogether.validate_environmentI   s1     &; );=OPP&
 &
!"     c                     dS )zReturn type of model.together selfs    r*   	_llm_typezTogether._llm_typeR   s	     zr,   outputc                 6    |d         d         d         d         S )Nr3   choicesr   textr/   )r1   r3   s     r*   _format_outputzTogether._format_outputW   s    h	*1-f55r,   c                      ddl m}  d|  S )Nr   __version__z
langchain/)langchain_communityr:   r9   s    r*   get_user_agentzTogether.get_user_agentZ   s"    333333)K)))r,   c                 P    | j         | j        | j        | j        | j        | j        dS )Nr   r   r   r   r   r   r>   r0   s    r*   default_paramszTogether.default_params`   s3     Z+ZZ/"&"9
 
 	
r,   promptstoprun_managerkwargsc                    d| j                                          dd}|rt          |          dk    r|d         n|}i | j        ||d|}d |                                D             }t          |          }|                    | j        |	          }	|	j        d
k    rt          d|	j                   |	j        dk    rt          d|	j                   |	j        dk    rt          d|	j         d|	j                   |	                                }
|
                    d          dk    r%|
                    dd          }t          |          |                     |
          }|S )zCall out to Together's text generation endpoint.

        Args:
            prompt: The prompt to pass into the model.

        Returns:
            The string generated by the model..
        Bearer application/jsonAuthorizationzContent-Type   r   r@   rA   c                     i | ]
\  }}|||S Nr/   .0kvs      r*   
<dictcomp>z"Together._call.<locals>.<dictcomp>       EEEDAqq}1a}}}r,   )headers)urldata  Together Server: Error   &Together received an invalid payload:    5Together returned an unexpected response with status : statusfinishederrorUndefined Error)r   get_secret_valuelenr?   itemsr   postr   status_code	Exception
ValueErrorr6   jsongetr7   )r1   r@   rA   rB   rC   rS   stop_to_usepayloadrequestresponserU   err_msgr3   s                r*   _callzTogether._callk   s   " Rt'<'M'M'O'OQQ.
 
 "&B#d))q..d1ggd#
!#
#
 #
 #
 	#
 FEGMMOOEEE7+++<<DM<@@3&&Lh6JLLMMM!S((UhmUUVVV!S((;'; ;+3=; ;  
 }}88H++hhw(9::GG$$$$$T**r,   c                   K   d| j                                          dd}|rt          |          dk    r|d         n|}i | j        ||d|}d |                                D             }t                      4 d{V }|                    | j        ||	          4 d{V 	 }	|	j        d
k    rt          d|	j                   |	j        dk    rt          d|	j                   |	j        dk    rt          d|	j         d|	j                   |	                                 d{V }
|
                    d          dk    r%|
                    dd          }t          |          |                     |
          }|cddd          d{V  cddd          d{V  S # 1 d{V swxY w Y   	 ddd          d{V  dS # 1 d{V swxY w Y   dS )zCall Together model to get predictions based on the prompt.

        Args:
            prompt: The prompt to pass into the model.

        Returns:
            The string generated by the model.
        rE   rF   rG   rI   r   rJ   c                     i | ]
\  }}|||S rL   r/   rM   s      r*   rQ   z#Together._acall.<locals>.<dictcomp>   rR   r,   N)rh   rS   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   )r   ra   rb   r?   rc   r   rd   r   r]   rf   rg   r6   rh   ri   r7   )r1   r@   rA   rB   rC   rS   rj   rk   sessionrm   response_jsonrn   r3   s                r*   _acallzTogether._acall   s       Rt'<'M'M'O'OQQ.
 
 "&B#d))q..d1ggd#
!#
#
 #
 #
 	#
 FEGMMOOEEE ?? 	 	 	 	 	 	 	g||GW $          ?c))#$Oho$O$OPPP_++$PPP   _++#>#?> >.6m> >  
 '/mmoo 5 5 5 5 5 5 $$X..*<<+//9JKKG#G,,,,,];;-            	 	 	 	 	 	 	 	 	 	 	 	 	 	              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s7   $G(CF*G*
F4	4G7F4	8G
GG)NN)$__name__
__module____qualname____doc__r   str__annotations__r   r   r   floatr   r   intr   r   r    r   model_configr   classmethodr   r   r+   propertyr2   dictr7   staticmethodr<   r?   r   r
   ro   r	   rt   r/   r,   r*   r   r      s          9Hc888!VJJJ $(K%'''!E8E?!!!  E8C= !%J$$$3*.... #Hhsm""" :  L _(###$ 3    [ $# 3    X6T 6c 6 6 6 6 *C * * * \*
 
S#X 
 
 
 X
 %):>	2 22 tCy!2 67	2
 2 
2 2 2 2n %)?C	4 44 tCy!4 ;<	4
 4 
4 4 4 4 4 4r,   r   )rx   loggingtypingr   r   r   r   aiohttpr   langchain_core._api.deprecationr   langchain_core.callbacksr	   r
   #langchain_core.language_models.llmsr   langchain_core.utilsr   r   pydanticr   r   r   &langchain_community.utilities.requestsr   	getLoggerru   loggerr   r/   r,   r*   <module>r      sX   2 2  , , , , , , , , , , , , ! ! ! ! ! ! 6 6 6 6 6 6        4 3 3 3 3 3 L L L L L L L L ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;		8	$	$ 
E6S  { { { { {s { { { { {r,   