a
    bgs                     @  sB  U d dl mZ d dl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 d dlmZ d d	lmZ d d
lmZ eeZedddZded< edddZded< edddZded< edddZded< eed eed eeded eeded eddddZeddd d!Zed(d#d$d%d&d'ZdS ))    )annotationsN)contextmanager)
ContextVar)	GeneratorOptional)register_configure_hook))BedrockAnthropicTokenUsageCallbackHandler)OpenAICallbackHandler)CometTracer)WandbTracerZopenai_callback)defaultz+ContextVar[Optional[OpenAICallbackHandler]]openai_callback_varZbedrock_anthropic_callbackz?ContextVar[Optional[BedrockAnthropicTokenUsageCallbackHandler]]bedrock_anthropic_callback_varZtracing_wandb_callbackz!ContextVar[Optional[WandbTracer]]wandb_tracing_callback_varZtracing_comet_callbackz!ContextVar[Optional[CometTracer]]comet_tracing_callback_varTZLANGCHAIN_WANDB_TRACINGZLANGCHAIN_COMET_TRACINGz,Generator[OpenAICallbackHandler, None, None])returnc                  c  s$   t  } t|  | V  td dS )a-  Get the OpenAI callback handler in a context manager.
    which conveniently exposes token and cost information.

    Returns:
        OpenAICallbackHandler: The OpenAI callback handler.

    Example:
        >>> with get_openai_callback() as cb:
        ...     # Use the OpenAI callback handler
    N)r	   r   setcb r   s/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/callbacks/manager.pyget_openai_callback-   s    
r   z@Generator[BedrockAnthropicTokenUsageCallbackHandler, None, None]c                  c  s$   t  } t|  | V  td dS )ay  Get the Bedrock anthropic callback handler in a context manager.
    which conveniently exposes token and cost information.

    Returns:
        BedrockAnthropicTokenUsageCallbackHandler:
            The Bedrock anthropic callback handler.

    Example:
        >>> with get_bedrock_anthropic_callback() as cb:
        ...     # Use the Bedrock anthropic callback handler
    N)r   r   r   r   r   r   r   get_bedrock_anthropic_callback?   s    
r   r   strzGenerator[None, None, None])session_namer   c                 c  s$   t  }t| dV  td dS )a'  Get the WandbTracer in a context manager.

    Args:
        session_name (str, optional): The name of the session.
            Defaults to "default".

    Returns:
        None

    Example:
        >>> with wandb_tracing_enabled() as session:
        ...     # Use the WandbTracer session
    N)r   r   r   )r   r   r   r   r   wandb_tracing_enabledT   s    
r   )r   )
__future__r   logging
contextlibr   contextvarsr   typingr   r   Zlangchain_core.tracers.contextr   Z8langchain_community.callbacks.bedrock_anthropic_callbackr   Z)langchain_community.callbacks.openai_infor	   Z+langchain_community.callbacks.tracers.cometr
   Z+langchain_community.callbacks.tracers.wandbr   	getLogger__name__loggerr   __annotations__r   r   r   r   r   r   r   r   r   r   <module>   sH   




 