
    dh                         S r SSKrSSKJrJrJrJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJr  SSKJrJr  SS	KJrJrJr  SS
KJr  \R2                  " \5      r\
" SSSS9 " S S\5      5       rg)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                      \ rS rSr% SrSr\\S'    \\S'    \\S'    Sr	\
\   \S'    Sr\
\   \S	'    Sr\
\   \S
'    Sr\
\   \S'    Sr\
\   \S'    Sr\
\   \S'    \" SS9r\" SS9\S\S\4S j5       5       r\S\4S j5       rS\S\4S jr\S\4S j5       r\S\\\4   4S j5       r  S!S\S\
\ \      S\
\!   S\S\4
S jjr"  S!S\S\
\ \      S\
\#   S\S\4
S jjr$S r%g)"Together   a8  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                 8    [        [        USS5      5      US'   U$ )z,Validate that api key exists in environment.r   TOGETHER_API_KEYr   )clsr&   s     Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/together.pyvalidate_environmentTogether.validate_environmentI   s)     &; );=OP&
!"     c                     g)zReturn type of model.together selfs    r+   	_llm_typeTogether._llm_typeR   s     r.   outputc                     US   S   S   S   $ )Nr6   choicesr   textr1   )r3   r6   s     r+   _format_outputTogether._format_outputW   s    h	*1-f55r.   c                      SSK Jn   SU  3$ )Nr   __version__z
langchain/)langchain_communityr>   r=   s    r+   get_user_agentTogether.get_user_agentZ   s    3K=))r.   c                     U R                   U R                  U R                  U R                  U R                  U R
                  S.$ )Nr   r   r   r   r   r    rC   r2   s    r+   default_paramsTogether.default_params`   s<     ZZ++ZZZZ//"&"9"9
 	
r.   promptstoprun_managerkwargsc                    SU R                   R                  5        3SS.nU(       a  [        U5      S:X  a  US   OUn0 U R                  EUUS.EUEnUR	                  5        VV	s0 sH  u  pU	c  M
  X_M     nnn	[        US9n
U
R                  U R                  US9nUR                  S	:  a  [        S
UR                   35      eUR                  S:  a  [        SUR                   35      eUR                  S:w  a%  [        SUR                   SUR                   35      eUR                  5       nUR                  S5      S:w  a  UR                  SS5      n[        U5      eU R                  U5      nU$ s  sn	nf )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   rF   rG   )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lenrD   itemsr   postr   status_code	Exception
ValueErrorr9   jsongetr:   )r3   rF   rG   rH   rI   rQ   stop_to_usepayloadkvrequestresponserS   err_msgr6   s                  r+   _callTogether._callk   s   "  't'<'<'M'M'O&PQ.
 "&#d)q.d1gd#
!!#
#
 	#
 %,MMOEODAq414OE7+<<DMM<@3&5h6J6J5KLMM!!S(Ehmm_UVV!!S(G''(8==/; 
 }}88H+hhw(9:GG$$$$T*+ Fs   &E82E8c                 "  #    SU R                   R                  5        3SS.nU(       a  [        U5      S:X  a  US   OUn0 U R                  EUUS.EUEnUR	                  5        VV	s0 sH  u  pU	c  M
  X_M     nnn	[        5        ISh  vN n
U
R                  U R                  XuS9 ISh  vN nUR                  S	:  a  [        S
UR                   35      eUR                  S:  a  [        SUR                   35      eUR                  S:w  a%  [        SUR                   SUR                   35      eUR                  5       I Sh  vN nUR                  S5      S:w  a  UR                  SS5      n[        U5      eU R                  U5      nUsSSS5      ISh  vN   sSSS5      ISh  vN   $ s  sn	nf  GN2 GN Nw N$ N! , ISh  vN  (       d  f       O= fSSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f7f)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.
rK   rL   rM   rO   r   rP   N)rf   rQ   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   )r   r_   r`   rD   ra   r   rb   r   r[   rd   re   r9   rf   rg   r:   )r3   rF   rG   rH   rI   rQ   rh   ri   rj   rk   sessionrm   response_jsonrn   r6   s                  r+   _acallTogether._acall   s       't'<'<'M'M'O&PQ.
 "&#d)q.d1gd#
!!#
#
 	#
 %,MMOEODAq414OE ??g||G $  ??c)#&=hoo=N$OPP__+$@P  __+#O#??+2hmm_> 
 '/mmo 5 $$X.*<+//9JKG#G,,,,];-   #?? F" !6 #   #?????s   A&H(F74F7:HF=HG5.G /G52BG	GAG	G5 G!G5%H1G2H G5G	G5H	G 	GG 	G5#H.G1/H5H;G><HHr1   )NN)&__name__
__module____qualname____firstlineno____doc__r   str__annotations__r   r   r   floatr   r   intr   r    r!   r   model_configr   classmethodr   r   r,   propertyr4   dictr:   staticmethodr@   rD   r   r
   ro   r	   rt   __static_attributes__r1   r.   r+   r   r      s    9Hc8!VJ $(K%'!E8E?!  E8C= !%J$3*.. #Hhsm" L (#$ 3   $ 3  6T 6c 6 *C * *
 
S#X 
 
 %):>	22 tCy!2 67	2
 2 
2n %)?C	44 tCy!4 ;<	4
 4 
4 4r.   r   )rz   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   	getLoggerrv   loggerr   r1   r.   r+   <module>r      sh    2  , , ! 6 4 L ; ; ;			8	$ 
E6S{s {{r.   