o
    ưi                     @   s6   d dl mZ d dl mZ d dlmZ G dd dZdS )    )BatchRequestCounts)MetadataLiteLLMBatchc                   @   s.   e Zd ZdZe	d	dededdfddZdS )
BedrockBatchesHandlerz
    Handler for Bedrock Batches.

    Specific providers/models needed some special handling.

    E.g. Twelve Labs Embedding Async Invoke
    Nbatch_idaws_region_namereturnr   c                    s~   ddl ddlm   fddddl}fdd}|j }||}| W  d   S 1 s8w   Y  dS )av  
        Handle async invoke status check for AWS Bedrock.

        This is for Twelve Labs Embedding Async Invoke.

        Args:
            batch_id: The async invoke ARN
            aws_region_name: AWS region name
            **kwargs: Additional parameters

        Returns:
            dict: Status information including status, output_file_id (S3 URL), etc.
        r   N)BedrockEmbeddingc                     s     } | j ddI d H }ddlm} |d d d |dp&d|d	 d
}||d d|d |d |d |d|d dkrI|dnd td|d dkrTdnd|d dkr]dndd|dddd}|S )N)Zinvocation_arnr   logging_objr   r   ZoutputDataConfigZs3OutputDataConfigZs3UriZfailureMessage ZmodelArn)Zoutput_file_idZfailure_messageZ	model_arnZinvocationArnbatchstatusZ
submitTimeZlastModifiedTimeZendTimefailed   	completed)totalr   r   Z24hz/v1/embeddings)idobjectr   Z
created_atZin_progress_atZcompleted_atZ	failed_atZrequest_countsmetadataZcompletion_windowZendpointZinput_file_id )Z_get_async_invoke_statuslitellm.types.utilsr   getr   )Zembedding_handlerZstatus_responser   Zopenai_batch_metadataresult)r
   r   r   kwargsr   r   [/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/bedrock/batches/handler.py_async_get_status$   sN   
zLBedrockBatchesHandler._handle_async_invoke_status.<locals>._async_get_statusc                     s4     } |  z|   W |   S |   w N)new_event_loopset_event_looprun_until_completeclose)Znew_loop)r   asyncior   r   run_in_threadV   s
   
zHBedrockBatchesHandler._handle_async_invoke_status.<locals>.run_in_thread)r"   Z$litellm.llms.bedrock.embed.embeddingr
   concurrent.futuresfuturesThreadPoolExecutorsubmitr   )r   r   r   r   
concurrentr#   executorfuturer   )r
   r   r"   r   r   r   r   r   _handle_async_invoke_status   s   0
$z1BedrockBatchesHandler._handle_async_invoke_statusr   )__name__
__module____qualname____doc__staticmethodstrr+   r   r   r   r   r      s    r   N)Zopenai.types.batchr   r   ZOpenAIBatchMetadatar   r   r   r   r   r   r   <module>   s    