o
    }!g                     @   s<  d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZ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Zd	Zd
Ze eZeeef Z				dde de!dee" de"de"deegef fddZ#			ddee$ dee$ dee$ deee$ e$e$f fddZ%ddee$ ddfddZ&dS )     N)AnyCallableOptionalTupleUnion)get_from_param_or_env)before_sleep_logretryretry_if_exception_typestop_after_attemptstop_after_delaywait_exponentialwait_random_exponential)	stop_base)ChatCompletionMessageToolCall)ChoiceDeltaToolCallzhttps://api.openai.com/v1 zNo API key found for OpenAI.
Please set either the OPENAI_API_KEY environment variable or openai.api_key prior to initialization.
API keys can be found or created at https://platform.openai.com/account/api-keys
F   
   max_retriesrandom_exponentialstop_after_delay_secondsmin_secondsmax_secondsreturnc              	   C   sh   |rt ||dntd||d}t| }|d ur|t|B }td||ttjtjtj	tj
ftttjdS )N)minmax   )
multiplierr   r   T)reraisestopwaitr	   before_sleep)r   r   r   r   r	   r
   openaiAPIConnectionErrorAPITimeoutErrorRateLimitErrorInternalServerErrorr   loggerloggingWARNING)r   r   r   r   r   wait_strategystop_strategy r-   e/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/llama_index/embeddings/openai/utils.pycreate_retry_decorator$   s(   	
	r/   api_keyapi_baseapi_versionc                 C   sb   t d| dd} t d|dd}t d|dd}| ptjpd}|p"tjp"t}|p)tjp)t}|t||fS )z "Resolve OpenAI credentials.

    The order of precedence is:
    1. param
    2. env
    3. openai module
    4. default
    r0   OPENAI_API_KEYr   r1   OPENAI_API_BASEr2   OPENAI_API_VERSION)r   r#   r0   base_urlDEFAULT_OPENAI_API_BASEr2   DEFAULT_OPENAI_API_VERSIONstr)r0   r1   r2   final_api_keyfinal_api_basefinal_api_versionr-   r-   r.   resolve_openai_credentialsG   s   r=   c                 C   s"   | pt jdd}|sttd S )Nr3   r   )osenvironget
ValueErrorMISSING_API_KEY_ERROR_MESSAGE)r0   openai_api_keyr-   r-   r.   validate_openai_api_keyc   s   rD   )FNr   r   )NNN)N)'r)   r>   typingr   r   r   r   r   (llama_index.core.base.llms.generic_utilsr   tenacityr   r	   r
   r   r   r   r   tenacity.stopr   r#   openai.types.chatr   'openai.types.chat.chat_completion_chunkr   r7   r8   rB   	getLogger__name__r(   OpenAIToolCallintboolfloatr/   r9   r=   rD   r-   r-   r-   r.   <module>   sX    $	

$
