Ë
    uPêj¥)  ã            "       ó  — d dl mZmZmZ d dlmZ d dlZd dlmZ d dl	m
Z
 ddlmZ g dddddddddddddddd	fd
edededz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  f d„Zd„ Zd„ Zy)é    )ÚFIRST_COMPLETEDÚThreadPoolExecutorÚwait)ÚFinalN)Úprint_verbose)Úget_optional_paramsé   )ÚhandleriX  éd   ÚmodelÚmessagesÚ	functionsÚfunction_callÚtemperatureÚtop_pÚnÚstreamÚ
max_tokensÚpresence_penaltyÚfrequency_penaltyÚ
logit_biasÚuserÚrequest_timeoutÚtimeoutÚmax_workersc                 óT  — t        «       }|}g }| } d}| j                  dd«      d   t        j                  v r*| j                  dd«      d   }| j                  dd«      d   } |dk(  rFt	        ||||||xs d||	|
|||| |¬«      }t        j                  | |t        j                  |¬«      }|S d	„ }t        |¬
«      5 } ||d«      D ]z  }|D ]s  }|j                  «       }|j                  d«       ||d<   i }d|v r|j                  d«      } |j                  t        j                  fi |¤|¤Ž}|j                  |«       Œu Œ| 	 ddd«       g }|D ]"  }	 |j                  |j                  «       «       Œ$ |S # 1 sw Y   Œ4xY w# t        $ r} |j                  | «       Y d} ~ ŒRd} ~ ww xY w)a   
    Batch litellm.completion function for a given model.

    Args:
        model (str): The model to use for generating completions.
        messages (List, optional): List of messages to use as input for generating completions. Defaults to [].
        functions (List, optional): List of functions to use as input for generating completions. Defaults to [].
        function_call (str, optional): The function call to use as input for generating completions. Defaults to "".
        temperature (float, optional): The temperature parameter for generating completions. Defaults to None.
        top_p (float, optional): The top-p parameter for generating completions. Defaults to None.
        n (int, optional): The number of completions to generate. Defaults to None.
        stream (bool, optional): Whether to stream completions or not. Defaults to None.
        stop (optional): The stop parameter for generating completions. Defaults to None.
        max_tokens (float, optional): The maximum number of tokens to generate. Defaults to None.
        presence_penalty (float, optional): The presence penalty for generating completions. Defaults to None.
        frequency_penalty (float, optional): The frequency penalty for generating completions. Defaults to None.
        logit_bias (dict, optional): The logit bias for generating completions. Defaults to {}.
        user (str, optional): The user string for generating completions. Defaults to "".
        deployment_id (optional): The deployment ID for generating completions. Defaults to None.
        request_timeout (int, optional): The request timeout for generating completions. Defaults to None.
        max_workers (int,optional): The maximum number of threads to use for parallel processing.

    Returns:
        list: A list of completion results.
    Nú/é   r   ÚvllmF)r   r   r   r   r   r   Ústopr   r   r   r   r   r   Úcustom_llm_provider)r   r   Úcustom_prompt_dictÚoptional_paramsc              3   óV   K  — t        dt        | «      |«      D ]  }| |||z    –— Œ y­w)z)Yield successive n-sized chunks from lst.r   N)ÚrangeÚlen)Úlstr   Úis      úb/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/batch_completion/main.pyÚchunksz batch_completion.<locals>.chunks_   s2   è ø€ ä˜1œc #›h¨Ó*ò %�Ø˜!˜a !™e�nÓ$ñ%ùs   ‚')©r   r   r   r   Úkwargs)ÚlocalsÚsplitÚlitellmÚprovider_listr   Úvllm_handlerÚbatch_completionsr"   r   ÚcopyÚpopÚsubmitÚ
completionÚappendÚresultÚ	Exception)!r   r   r   r   r   r   r   r   r    r   r   r   r   r   Údeployment_idr   r   r   r,   ÚargsÚbatch_messagesÚcompletionsr!   r#   Úresultsr*   ÚexecutorÚ	sub_batchÚmessage_listÚkwargs_modifiedÚoriginal_kwargsÚfutureÚexcs!                                    r)   Úbatch_completionrF      sä  € ô` “(€Dà$€NØ€KØ€EØÐØ‡{�{�3˜Ó˜1Ñ¤×!6Ñ!6Ñ6Ø#Ÿk™k¨#¨qÓ1°!Ñ4ÐØ—‘˜C Ó# AÑ&ˆØ˜fÒ$Ü!4ØØ'Ø#ØØØ’?˜UØØ!Ø-Ø/Ø!ØàØ 3ô"
ˆô" ×0Ñ0ØØ#Ü&×9Ñ9Ø+ô	
ˆðH €Nò7	%ô
  ¨KÔ8ð 
	/¸HÙ# N°CÓ8ò 	/�	Ø$-ò /�LØ&*§i¡i£k�OØ#×'Ñ'¨Ô6Ø2>�O JÑ/Ø&(�OØ ?Ñ2Ø*9×*=Ñ*=¸hÓ*G˜Ø,˜XŸ_™_¬W×-?Ñ-?ÑfÀ?ÐfÐVeÑf�FØ×&Ñ& vÕ.ñ/ñ	/÷
	/ð ˆØ!ò 	$ˆFð$Ø—‘˜vŸ}™}›Õ/ð	$ð €N÷-
	/ð 
	/ûô& ò $Ø—‘˜s×#Ñ#ûð$ús%   Â<BE7ÅFÅ7F Æ	F'ÆF"Æ"F'c                  óì  ‡— d|v r|j                  d«       d|v r¹|d   Š|j                  d«       i }t        t        ‰«      ¬«      5 }‰D ]+  } |j                  t        j
                  g| ¢­d|i|¤Ž||<   Œ- t        |j                  «       ˆfd„¬«      D ]0  \  }}|j                  «       €Œ|j                  «       c cddd«       S  	 ddd«       yd|v �r|d   }|j                  d«       |j                  d«       |j                  d	i «      }i }t        t        |«      ¬«      5 }|D ]C  }|D ]  }	|	|vsŒ||	   ||	<   Œ i |¥|¥} |j                  t        j
                  fi |¤Ž||d   <   ŒE |rxt        d
«       t        |j                  «       t        ¬«      \  }
}t        d|
› �«       |
D ]  }	 |j                  «       }|c cddd«       S  t        d«       t        |«       |rŒxddd«       yy# 1 sw Y   yxY w# t        $ r\ t        d«       t        |«       i }|j                  «       D ]  \  }	}||k(  rt        d|	› �«       Œ|||	<   Œ  |}t        d|› �«       Y Œµw xY w# 1 sw Y   yxY w)aý  
    Send a request to multiple language models concurrently and return the response
    as soon as one of the models responds.

    Args:
        *args: Variable-length positional arguments passed to the completion function.
        **kwargs: Additional keyword arguments:
            - models (str or list of str): The language models to send requests to.
            - Other keyword arguments to be passed to the completion function.

    Returns:
        str or None: The response from one of the language models, or None if no response is received.

    Note:
        This function utilizes a ThreadPoolExecutor to parallelize requests to multiple models.
        It sends requests concurrently and returns the response from the first model that responds.
    r   Úmodelsr+   c                 ó,   •— ‰j                  | d   «      S )Nr   )Úindex)ÚxrH   s    €r)   ú<lambda>z)batch_completion_models.<locals>.<lambda>œ   s   ø€ ÀvÇ|Á|ÐTUÐVWÑTXÓGY€ ó    )ÚkeyNÚdeploymentsÚ
model_listr,   z

 waiting for next result

)Úreturn_whenz
done list
z3

got an exception, ignoring, removing from futureszremoving keyznew futuresz 

done looping through futures

)r4   r   r&   r5   r/   r6   ÚsortedÚitemsr8   r   r   Úvaluesr   r9   )r;   r,   Úfuturesr?   r   rD   rO   Únested_kwargsÚ
deploymentrN   ÚdoneÚ_r8   Únew_futuresÚvaluerH   s                  @r)   Úbatch_completion_modelsr\      s¶  ø€ ð& �&ÑØ�
‰
�7ÔØ�6ÑØ˜xÑ(ˆØ�
‰
�8ÔØˆÜ¬C°«KÔ8ð 	+¸HØò c�Ø!0 §¡´×1CÑ1CÐ!bÀdÒ!bÐRWÐ!bÐ[aÑ!b�˜’ðcô "(¨¯©«Ó=YÔ!Zò +‘��vØ—=‘=“?Ñ.Ø!Ÿ=™=›?Ñ*÷	+ñ 	+ñ+÷		+ð` ðS 
˜&Ò	 Ø# MÑ2ˆØ�
‰
�=Ô!Ø�
‰
�<Ô Ø%Ÿz™z¨(°BÓ7ˆØˆÜ¬C°Ó,<Ô=ð !	'ÀØ)ò ]�
Ø!ò 6�CØ *Ò,Ø*0°©+˜
 3šð6ð 9˜JÐ8¨-Ð8�Ø/>¨x¯©¼w×?QÑ?QÑ/\ÐU[Ñ/\�˜
 7Ñ+Ò,ð]ñ äÐ@ÔAÜ˜wŸ~™~Ó/¼_ÔM‘��aÜ ¨D¨6Ð2Ô3Ø"ò !�Fð!Ø!'§¡£˜Ø%™÷!!	'ñ !	'ð!ô& ÐDÔEÜ˜gÔ&ò3 ÷!	'ñF ÷a	+ð` ûô% %ò !ä%Ð&]Ô^Ü% gÔ.Ø&(˜Ø*1¯-©-«/ò 9™J˜C Ø%¨šÜ -°¸S¸EÐ.BÔ CØ (à38 ¨CÒ 0ð9ð #.˜Ü%¨°G°9Ð&=Ô>Ù ð!ú÷#!	'ðF úsW   ÁA%G6Â.G6Ã	G6Ä)I*Ä9A;I*Æ5HÇI*ÇI*Ç6G?ÈA"I'É$I*É&I'É'I*É*I3c            	      ó¦  — ddl }d|v r|j                  d«       d|v r|j                  d«      }nt        d«      ‚t        |t        «      r|g}n-t        |t
        t        f«      rt        |«      }nt        d«      ‚t        |«      dk(  rg S g }|j                  j                  t        |«      ¬«      5 }|D �cg c](  } |j                  t        j                  g| ¢­d|i|¤Ž‘Œ* }}|D ]&  }	 |j                  «       }	|	�|j                  |	«       Œ( 	 ddd«       |S c c}w # t        $ r}
t!        d|
› �«       Y d}
~
ŒUd}
~
ww xY w# 1 sw Y   |S xY w)	a×  
    Send a request to multiple language models concurrently and return a list of responses
    from all models that respond.

    Args:
        *args: Variable-length positional arguments passed to the completion function.
        **kwargs: Additional keyword arguments:
            - models (str or list of str): The language models to send requests to.
            - Other keyword arguments to be passed to the completion function.

    Returns:
        list: A list of responses from the language models that responded.

    Note:
        This function utilizes a ThreadPoolExecutor to parallelize requests to multiple models.
        It sends requests concurrently and collects responses from all models that respond.
    r   Nr   rH   z'models' param not in kwargsz,'models' must be a string or list of stringsr+   z=batch_completion_models_all_responses: model request failed: )Úconcurrent.futuresr4   r9   Ú
isinstanceÚstrÚlistÚtupleÚ	TypeErrorr&   rU   r   r5   r/   r6   r8   r7   r   )r;   r,   Ú
concurrentrH   Ú	responsesr?   r   rU   rD   r8   Úes              r)   Ú%batch_completion_models_all_responsesrg   Ë   s\  € ó$ ð �&ÑØ�
‰
�7ÔØ�6ÑØ—‘˜HÓ%‰äÐ6Ó7Ð7ä�&œ#ÔØ�‰Ü	�FœT¤5˜MÔ	*Ü�f“‰äÐFÓGÐGä
ˆ6ƒ{�aÒØˆ	à€Ià	×	Ñ	×	.Ñ	.¼3¸v»;Ð	.Ó	Gð 
È8ØioÖpÐ`e˜/˜(Ÿ/™/¬'×*<Ñ*<Ð[¸tÒ[È5Ð[ÐTZÓ[ÐpˆÐpàò 	ˆFðØŸ™›�ØÐ%Ø×$Ñ$ VÔ,øñ		÷
ð Ðùò qøô ò ÜÐ ]Ð^_Ð]`ÐaÔbÜûðú÷
ð ÐúsH   Â3EÂ8-DÃ%EÃ-#D"ÄEÄEÄ"	EÄ+D>Ä9EÄ>EÅEÅE)r^   r   r   r   Útypingr   r/   Úlitellm._loggingr   Úlitellm.utilsr   Úllms.vllm.completionr
   r1   r`   ra   ÚfloatÚintÚboolÚdictrF   r\   rg   © rM   r)   ú<module>rq      sH  ðß HÑ HÝ ã Ý *Ý -å :ð Ø!Ø $Ø $ØØØØ	Ø!Ø%)Ø&*Ø"ØØØ"&ØØ!ñ'oØðoð ðoð �d‰{ð	oð
 ˜‘:ðoð ˜‘ðoð �4‰<ðoð ˆT�zðoð �4‰Kðoð �d‘
ðoð ˜d‘lðoð ˜t‘|ðoð �t‘ðoð �‰*ðoð" ˜4‘Zð#oð$ �4‰Zð%oð& �t‘ó'oòhIóX5rM   