§
    æ˜ºh   ã                   óò   — 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mZ dd	l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)ÚExtraÚ	SecretStrÚroot_validator©Úconvert_to_secret_strÚget_from_dict_or_env)ÚRequestsz0.0.12z0.2zlangchain_together.Together)ÚsinceÚremovalÚalternative_importc                   ó2  — 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<   	  G d„ d¦  «        Z ed¬¦  «        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Úlogprobsc                   ó    — e Zd ZdZej        ZdS )úTogether.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextra© ó    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/together.pyÚConfigr"   D   s   € € € € € Ø5Ð5à”ˆˆˆr*   r,   T)ÚpreÚvaluesÚreturnc                 óH   — t          t          |dd¦  «        ¦  «        |d<   |S )z,Validate that api key exists in environment.r   ÚTOGETHER_API_KEYr   )Úclsr.   s     r+   Úvalidate_environmentzTogether.validate_environmentI   s1   € õ &;Ý  Ð);Ð=OÑPÔPñ&
ô &
ˆÐ!Ñ"ð ˆr*   c                 ó   — dS )zReturn type of model.Útogetherr)   ©Úselfs    r+   Ú	_llm_typezTogether._llm_typeQ   s	   € ð ˆzr*   Úoutputc                 ó6   — |d         d         d         d         S )Nr9   Úchoicesr   Útextr)   )r7   r9   s     r+   Ú_format_outputzTogether._format_outputV   s   € Ø�hÔ 	Ô*¨1Ô-¨fÔ5Ð5r*   c                  ó   — ddl m}  d| › �S )Nr   ©Ú__version__z
langchain/)Úlangchain_communityr@   r?   s    r+   Úget_user_agentzTogether.get_user_agentY   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   rD   r6   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 )zÁCall 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   ©rF   rG   c                 ó   — i | ]
\  }}|®||“ŒS ©Nr)   ©Ú.0ÚkÚvs      r+   ú
<dictcomp>z"Together._call.<locals>.<dictcomp>‡   ó   € ÐEÐEÐE™D˜A˜q°q°}�1�a°}°}°}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ÚlenrE   Úitemsr   Úpostr   Ústatus_codeÚ	ExceptionÚ
ValueErrorr<   ÚjsonÚgetr=   )r7   rF   rG   rH   rI   rY   Ústop_to_useÚpayloadÚrequestÚresponser[   Úerr_msgr9   s                r+   Ú_callzTogether._callj   s¹  € ð" R tÔ'<×'MÒ'MÑ'OÔ'OÐQÐQØ.ð
ð 
ˆð "&ÐB­#¨d©)¬)°qª.¨.�d˜1”g�g¸dˆð#
ØÔ!ð#
àØð#
ð #
ð #
ð ð	#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆÝ 7Ð+Ñ+Ô+ˆØ—<’< D¤M¸�<Ñ@Ô@ˆàÔ 3Ò&Ð&ÝÐL°hÔ6JÐLÐLÑMÔMÐMØÔ! SÒ(Ð(ÝÐUÀhÄmÐUÐUÑVÔVÐVØÔ! SÒ(Ð(Ýð;ØÔ'ð;ð ;Ø+3¬=ð;ð ;ñô ð ð
 �}Š}‰ŒˆØ�8Š8�HÑÔ Ò+Ð+Ø—h’h˜wÐ(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 )zËCall 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.
        rK   rL   rM   rO   r   rP   c                 ó   — i | ]
\  }}|®||“ŒS rR   r)   rS   s      r+   rW   z#Together._acall.<locals>.<dictcomp>º   rX   r*   N)rn   rY   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   )r   rg   rh   rE   ri   r   rj   r   rc   rl   rm   r<   rn   ro   r=   )r7   rF   rG   rH   rI   rY   rp   rq   Úsessionrs   Úresponse_jsonrt   r9   s                r+   Ú_acallzTogether._acallž   s‘  è è € ð  R tÔ'<×'MÒ'MÑ'OÔ'OÐQÐQØ.ð
ð 
ˆð "&ÐB­#¨d©)¬)°qª.¨.�d˜1”g�g¸dˆð#
ØÔ!ð#
àØð#
ð #
ð #
ð ð	#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆÝ ‘?”?ð 	ð 	ð 	ð 	ð 	ð 	ð 	 gØ—|’|Ø” G°Wð $ñ ô ð ð ð ð ð ð ð ð àØ”? cÒ)Ð)Ý#Ð$O¸h¼oÐ$OÐ$OÑPÔPÐPØ”_¨Ò+Ð+Ý$ØPÀÄÐPÐPñô ð ð ”_¨Ò+Ð+Ý#ð>Ø#œ?ð>ð >Ø.6¬mð>ð >ñô ð ð
 '/§m¢m¡o¤oÐ 5Ð 5Ð 5Ð 5Ð 5Ð 5�à ×$Ò$ XÑ.Ô.°*Ò<Ð<Ø+×/Ò/°Ð9JÑKÔK�GÝ# GÑ,Ô,Ð,à×,Ò,¨]Ñ;Ô;�Øð-ð ð ð ñ ô ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   Â$GÂ(CF*ÆGÆ*
F4	Æ4GÆ7F4	Æ8GÇ
GÇG)NN)"r#   r$   r%   r&   r   ÚstrÚ__annotations__r   r   r   Úfloatr   r   Úintr   r   r    r,   r   r   r3   Úpropertyr8   Údictr=   ÚstaticmethodrB   r   rE   r   r
   ru   r	   rz   r)   r*   r+   r   r      s±  € € € € € € ðð ð 9€HˆcÐ8Ð8Ñ8Ø!ØÐÐÑØVØ€J€J�Jðð $(€K�˜%”Ð'Ð'Ñ'ØØ!€Eˆ8�EŒ?Ð!Ð!Ñ!ðð  €Eˆ8�CŒ=ÐÐÑðð !%€J�˜”Ð$Ð$Ñ$Ø3Ø*.Ð˜ œÐ.Ð.Ñ.ðð #€Hˆh�sŒmÐ"Ð"Ñ"ððð ð ð ð ñ ô ð ð
 €^˜ÐÑÔð¨$ð °4ð ð ð ñ Ôðð ð˜3ð ð ð ñ „Xðð6 Tð 6¨cð 6ð 6ð 6ð 6ð ð*˜Cð *ð *ð *ñ „\ð*ð
 ð
  S¨# X¤ð 
ð 
ð 
ñ „Xð
ð %)Ø:>ð	2ð 2àð2ð �t˜C”yÔ!ð2ð Ð6Ô7ð	2ð
 ð2ð 
ð2ð 2ð 2ð 2ðn %)Ø?Cð	4ð 4àð4ð �t˜C”yÔ!ð4ð Ð;Ô<ð	4ð
 ð4ð 
ð4ð 4ð 4ð 4ð 4ð 4r*   r   )r&   ÚloggingÚtypingr   r   r   r   Úaiohttpr   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr	   r
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.pydantic_v1r   r   r   Úlangchain_core.utilsr   r   Ú&langchain_community.utilities.requestsr   Ú	getLoggerr#   Úloggerr   r)   r*   r+   ú<module>r�      sX  ðØ 2Ð 2Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à !Ð !Ð !Ð !Ð !Ð !Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là ;Ð ;Ð ;Ð ;Ð ;Ð ;à	ˆÔ	˜8Ñ	$Ô	$€ð €Ø
˜EÐ6Sðñ ô ð{ð {ð {ð {ð {ˆsñ {ô {ñô ð{ð {ð {r*   