
    -hhP                        S r SSKrSSKJrJr  SSKJrJrJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJr  0 S	S
_SS_SS
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S"_0 S#S"_S$S
_S%S_S&S
_S'S_S(S_S)S_S*S_S+S_S,S-_S.S-_S/S0_S1S0_S2S"_S3S"_S4S5_S6S5_E0 S7S8_S9S8_S:S5_S;S5_S<S_S=S_S>S"_S?S"_S@SA_SBSA_SCSD_SESD_SFSG_SHSG_SISJ_SKSJ_SLSM_E0 SNSM_SOSP_SQSP_SRSG_SSSG_STSU_SVSU_SWS_SXS_SYS-_SZS-_S[S0_S\S0_S]S^_S_S^_S`Sa_SbSa_E0 ScSd_SeSd_SfS^_SgS^_ShSi_SjSi_SkSd_SlSd_SmS^_SnSi_SoS^_SpSi_SqSd_SrSd_SsSJ_StSM_SuSJ_E0 SvSM_SwSP_SxSP_SySz_S{S
_S|S}_S~Sz_SS
_SSz_SS
_SS_SSJ_SS_SS_SSz_SSz_SSz_E0 SS_SS_SS_SS}_SS}_SS}_SSz_SSz_SSz_SS_SS_SS_SS_SS_SS_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSz_SSz_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SSP_SSP_SSP_SS_SS_SS_SS_SS_E0 SS_SSP_SSP_SSP_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS-_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS-_SS_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS"_SS"_SS-_SS-_SS_SS_SS_SS_E0 SS_SS8_SS_SS_GS S_GSS_GSS_GSS_GSS8_GSS_GSGS_GSGS_GS	GS_GS
GS_GSS"_GSS_GSS_ES"SSS8SSSGS.Er " GS GS\5      r GS\R(                  GS.GS\GS\GS\GS\4GS jjjr GS\R(                  GS.GS\GS\GS\GS\GS\4
GS jjjr " GS GS\5      rg(  z(Callback Handler that prints to std out.    N)Enumauto)AnyDictList)warn_deprecated)BaseCallbackHandler)	AIMessage)ChatGeneration	LLMResultgpt-5g{GzT?zgpt-5-cachedgMb ?zgpt-5-2025-08-07zgpt-5-2025-08-07-cachedzgpt-5-completiong{Gz?zgpt-5-2025-08-07-completionz
gpt-5-minigMb0?zgpt-5-mini-cachedg-C6>zgpt-5-mini-2025-08-07zgpt-5-mini-2025-08-07-cachedzgpt-5-mini-completiongMb`?z gpt-5-mini-2025-08-07-completionz
gpt-5-nanog-C6
?zgpt-5-nano-cachedgh㈵>zgpt-5-nano-2025-08-07zgpt-5-nano-2025-08-07-cachedzgpt-5-nano-completiong-C6:?z gpt-5-nano-2025-08-07-completionzgpt-5-chat-latestzgpt-5-chat-latest-cachedzgpt-5-chat-latest-2025-08-07z#gpt-5-chat-latest-2025-08-07-cachedzgpt-5-chat-latest-completionz'gpt-5-chat-latest-2025-08-07-completiongpt-4.1zgpt-4.1-2025-04-14zgpt-4.1-cachedgMb@?zgpt-4.1-2025-04-14-cachedzgpt-4.1-completiongMb?zgpt-4.1-2025-04-14-completionzgpt-4.1-minizgpt-4.1-mini-2025-04-14zgpt-4.1-mini-cachedg-C6?zgpt-4.1-mini-2025-04-14-cachedzgpt-4.1-mini-completiong-C6Z?z"gpt-4.1-mini-2025-04-14-completionzgpt-4.1-nanozgpt-4.1-nano-2025-04-14zgpt-4.1-nano-cachedzgpt-4.1-nano-2025-04-14-cachedzgpt-4.1-nano-completionz"gpt-4.1-nano-2025-04-14-completionzgpt-4.5-previewg333333?zgpt-4.5-preview-2025-02-27zgpt-4.5-preview-cachedg333333?z!gpt-4.5-preview-2025-02-27-cachedzgpt-4.5-preview-completiong333333?z%gpt-4.5-preview-2025-02-27-completiono1gQ?zo1-2024-12-17z	o1-cachedgQ~?zo1-2024-12-17-cachedzo1-completiongQ?zo1-2024-12-17-completionzo1-prozo1-pro-2025-03-19zo1-pro-completiong333333?zo1-pro-2025-03-19-completiono3zo3-2025-04-16z	o3-cachedzo3-2025-04-16-cachedzo3-completionzo3-2025-04-16-completionzo4-minig/nR?zo4-mini-2025-04-16zo4-mini-cachedg/n2?zo4-mini-2025-04-16-cachedzo4-mini-completiong/nr?zo4-mini-2025-04-16-completionzo3-minizo3-mini-2025-01-31zo3-mini-cachedg/nB?zo3-mini-2025-01-31-cachedzo3-mini-completionzo3-mini-2025-01-31-completionzo1-minizo1-mini-cachedzo1-mini-2024-09-12zo1-mini-2024-09-12-cachedzo1-mini-completionzo1-mini-2024-09-12-completionz
o1-previewzo1-preview-cachedzo1-preview-2024-09-12zo1-preview-2024-09-12-cachedzo1-preview-completionz o1-preview-2024-09-12-completiongpt-4og{Gzd?zgpt-4o-cachedgpt-4o-2024-05-13g{Gzt?zgpt-4o-2024-08-06zgpt-4o-2024-08-06-cachedzgpt-4o-2024-11-20zgpt-4o-2024-11-20-cachedzgpt-4o-completionzgpt-4o-2024-05-13-completionzgpt-4o-2024-08-06-completionzgpt-4o-2024-11-20-completionzgpt-4o-audio-previewzgpt-4o-audio-preview-2024-12-17zgpt-4o-audio-preview-2024-10-01zgpt-4o-audio-preview-completionz*gpt-4o-audio-preview-2024-12-17-completionz*gpt-4o-audio-preview-2024-10-01-completionzgpt-4o-realtime-previewz"gpt-4o-realtime-preview-2024-12-17z"gpt-4o-realtime-preview-2024-10-01zgpt-4o-realtime-preview-cachedz)gpt-4o-realtime-preview-2024-12-17-cachedz)gpt-4o-realtime-preview-2024-10-01-cachedz"gpt-4o-realtime-preview-completiong{Gz?z-gpt-4o-realtime-preview-2024-12-17-completionz-gpt-4o-realtime-preview-2024-10-01-completionzgpt-4o-miniga2U0*#?zgpt-4o-mini-cachedga2U0*?zgpt-4o-mini-2024-07-18zgpt-4o-mini-2024-07-18-cachedzgpt-4o-mini-completionga2U0*C?z!gpt-4o-mini-2024-07-18-completionzgpt-4o-mini-audio-previewz$gpt-4o-mini-audio-preview-2024-12-17z$gpt-4o-mini-audio-preview-completionz/gpt-4o-mini-audio-preview-2024-12-17-completionzgpt-4o-mini-realtime-previewz'gpt-4o-mini-realtime-preview-2024-12-17z#gpt-4o-mini-realtime-preview-cachedga2U0*3?z.gpt-4o-mini-realtime-preview-2024-12-17-cachedz'gpt-4o-mini-realtime-preview-completionga2U0*c?z2gpt-4o-mini-realtime-preview-2024-12-17-completionzgpt-4o-mini-search-previewz%gpt-4o-mini-search-preview-2025-03-11z%gpt-4o-mini-search-preview-completionz0gpt-4o-mini-search-preview-2025-03-11-completionzgpt-4o-search-previewz gpt-4o-search-preview-2025-03-11z gpt-4o-search-preview-completionz+gpt-4o-search-preview-2025-03-11-completionzcomputer-use-previewg~jth?zcomputer-use-preview-2025-03-11zcomputer-use-preview-completiong~jt?z*computer-use-preview-2025-03-11-completiongpt-4gQ?z
gpt-4-0314z
gpt-4-0613z	gpt-4-32kzgpt-4-32k-0314zgpt-4-32k-0613zgpt-4-vision-previewzgpt-4-1106-previewzgpt-4-0125-previewzgpt-4-turbo-previewzgpt-4-turbozgpt-4-turbo-2024-04-09zgpt-4-completionzgpt-4-0314-completionzgpt-4-0613-completionzgpt-4-32k-completiongQ?zgpt-4-32k-0314-completionzgpt-4-32k-0613-completionzgpt-4-vision-preview-completionzgpt-4-1106-preview-completionzgpt-4-0125-preview-completionzgpt-4-turbo-preview-completionzgpt-4-turbo-completionz!gpt-4-turbo-2024-04-09-completionzgpt-3.5-turbog~jtX?zgpt-3.5-turbo-0125zgpt-3.5-turbo-0301zgpt-3.5-turbo-0613zgpt-3.5-turbo-1106gMbP?zgpt-3.5-turbo-instructzgpt-3.5-turbo-16kzgpt-3.5-turbo-16k-0613zgpt-3.5-turbo-completionzgpt-3.5-turbo-0125-completionzgpt-3.5-turbo-0301-completionzgpt-3.5-turbo-0613-completionzgpt-3.5-turbo-1106-completionz!gpt-3.5-turbo-instruct-completionzgpt-3.5-turbo-16k-completiongMbp?z!gpt-3.5-turbo-16k-0613-completionzgpt-35-turbozgpt-35-turbo-0125zgpt-35-turbo-0301zgpt-35-turbo-0613zgpt-35-turbo-instructzgpt-35-turbo-16kzgpt-35-turbo-16k-0613zgpt-35-turbo-completionzgpt-35-turbo-0125-completionzgpt-35-turbo-0301-completionzgpt-35-turbo-0613-completionz gpt-35-turbo-instruct-completionzgpt-35-turbo-16k-completionz gpt-35-turbo-16k-0613-completionztext-ada-001adaztext-babbage-001babbageztext-curie-001curieztext-davinci-003ztext-davinci-002zcode-davinci-002zbabbage-002-finetunedzdavinci-002-finetunedzgpt-3.5-turbo-0613-finetunedzgpt-3.5-turbo-1106-finetunedzgpt-3.5-turbo-0125-finetunedz gpt-4o-mini-2024-07-18-finetunedz'gpt-4o-mini-2024-07-18-finetuned-cachedz babbage-002-finetuned-completionz davinci-002-finetuned-completionz'gpt-3.5-turbo-0613-finetuned-completiong~jtx?z'gpt-3.5-turbo-1106-finetuned-completionz'gpt-3.5-turbo-0125-finetuned-completionz+gpt-4o-mini-2024-07-18-finetuned-completionga2U0*S?zbabbage-002-azure-finetunedzdavinci-002-azure-finetunedz!gpt-35-turbo-0613-azure-finetuned)z&babbage-002-azure-finetuned-completionz&davinci-002-azure-finetuned-completionz,gpt-35-turbo-0613-azure-finetuned-completionzada-finetuned-legacyzbabbage-finetuned-legacyzcurie-finetuned-legacyzdavinci-finetuned-legacyc                   B    \ rS rSrSr\" 5       r\" 5       r\" 5       rSr	g)	TokenTypei4  zToken type enum. N)
__name__
__module____qualname____firstlineno____doc__r   PROMPTPROMPT_CACHED
COMPLETION__static_attributes__r       Y/root/34ku/venv/lib/python3.13/site-packages/langchain_community/callbacks/openai_info.pyr   r   4  s    VFFMJr#   r   
token_type
model_nameis_completionr&   returnc                   U(       a  [        SSSS9  [        R                  nU R                  5       n SU ;   a  U R	                  S5      S   S-   n SU ;   a  U R	                  S	5      S   S
-   n SU ;   a  U R	                  S	5      S   S-   n U[        R                  :X  a  U R                  S5      (       d  U R                  S5      (       dz  U R                  S5      (       dd  U R                  S5      (       dN  U R                  S5      (       d8  U R                  S5      (       d"  U R                  S5      (       d  SU ;   a  SU ;  a  U S-   $ U[        R                  :X  a  U R                  S5      (       dn  U R                  S5      (       dX  U R                  S5      (       dB  U R                  S5      (       d,  U R                  S5      (       d  U R                  S5      (       a  U R                  S5      (       d  U S-   $ U $ )aj  
Standardize the model name to a format that can be used in the OpenAI API.

Args:
    model_name: Model name to standardize.
    is_completion: Whether the model is used for completion or not.
        Defaults to False. Deprecated in favor of ``token_type``.
    token_type: Token type. Defaults to ``TokenType.PROMPT``.

Returns:
    Standardized model name.

0.3.13zis_completion is deprecated. Use token_type instead. Example:

from langchain_community.callbacks.openai_info import TokenType

standardize_model_name('gpt-4o', token_type=TokenType.COMPLETION)
1.0sincemessageremovalz.ft-r   z-azure-finetunedz:ft-:z-finetuned-legacyzft:   z
-finetunedr   r   zgpt-3.5zgpt-35zo1-zo3-zo4-	finetunedlegacyz-completionr   r   r   r   o4r   z-cached)r   r   r!   lowersplit
startswithr    )r'   r(   r&   s      r$   standardize_model_namer9   <  s   & V 	
 ))
!!#J%%f-a03EE
%%c*1-0CC

%%c*1-<
Y)))g&&  ))  ++  **  ''  ''  '':%(**DM))i---!!'**$$X..$$Y//$$T**$$T**$$T**&&':;;I%%r#   
num_tokensc                    U(       a  [        SSSS9  [        R                  n[        XS9n U [        ;  a3  [        SU  S3SR                  [        R                  5       5      -   5      e[        U    US	-  -  $ )
ag  
Get the cost in USD for a given model and number of tokens.

Args:
    model_name: Name of the model
    num_tokens: Number of tokens.
    is_completion: Whether the model is used for completion or not.
        Defaults to False. Deprecated in favor of ``token_type``.
    token_type: Token type. Defaults to ``TokenType.PROMPT``.

Returns:
    Cost in USD.
r+   zis_completion is deprecated. Use token_type instead. Example:

from langchain_community.callbacks.openai_info import TokenType

get_openai_token_cost_for_model('gpt-4o', 10, token_type=TokenType.COMPLETION)
r,   r-   r%   zUnknown model: z=. Please provide a valid OpenAI model name.Known models are: z, i  )r   r   r!   r9   MODEL_COST_PER_1K_TOKENS
ValueErrorjoinkeys)r'   r:   r(   r&   s       r$   get_openai_token_cost_for_modelr@   }  s    ( c 	
 ))
'
JJ11j\ *! !#'99-E-J-J-L#MN
 	
 $J/:3DEEr#   c                   ,  ^  \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S'   Sr\\S'   Sr\\S	'   S
r\\S'   SU 4S jjrS\4S jr\S\4S j5       rS\\\4   S\\   S\SS4S jrS\S\SS4S jrS\S\SS4S jrSS jrS\SS 4S jrSrU =r$ )OpenAICallbackHandleri  z)Callback Handler that tracks OpenAI info.r   total_tokensprompt_tokensprompt_tokens_cachedcompletion_tokensreasoning_tokenssuccessful_requestsg        
total_costr)   Nc                 V   > [         TU ]  5         [        R                  " 5       U l        g )N)super__init__	threadingLock_lock)self	__class__s    r$   rL   OpenAICallbackHandler.__init__  s    ^^%
r#   c                     SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   SU R                   3$ )NzTokens Used: z
	Prompt Tokens: z
		Prompt Tokens Cached: z
	Completion Tokens: z
		Reasoning Tokens: z
Successful Requests: z
Total Cost (USD): $)rC   rD   rE   rF   rG   rH   rI   rP   s    r$   __repr__OpenAICallbackHandler.__repr__  s    D--. /  $ 2 23 4))-)B)B(C D$$($:$:#; <%%)%:%:$; <$$($<$<#= >""&//!24	
r#   c                     g)z;Whether to call verbose callbacks even if verbose is False.Tr   rT   s    r$   always_verbose$OpenAICallbackHandler.always_verbose  s     r#   
serializedpromptskwargsc                     g)zPrint out the prompts.Nr   )rP   rZ   r[   r\   s       r$   on_llm_start"OpenAICallbackHandler.on_llm_start  s     	r#   tokenc                     g)zPrint out the token.Nr   )rP   r`   r\   s      r$   on_llm_new_token&OpenAICallbackHandler.on_llm_new_token  s    r#   responsec                 ^    UR                   S   S   n[        U[        5      (       a@   UR                  n[        U[
        5      (       a  UR                  nUR                  nO	SnSnOSnSnSnSnU(       a  SUS   0n	US   n
US   nU=(       d    0 R                  S5      =n(       a  [        U5      nO5UR                  c  SnO%[        UR                  R                  SS5      5      nSUR                  S	0 5      ;   a  US	   S   nS
UR                  S0 5      ;   a  US   S
   nOUR                  c  gSUR                  ;  a+  U R                     U =R                  S-  sl        SSS5        gUR                  S   n	U	R                  SS5      n
U	R                  SS5      n[        UR                  R                  SS5      5      nU[        ;   aR  X-
  n[        X[         R"                  S9n[        X[         R$                  S9nUU-   n[        X[         R&                  S9nOSnSnU R                     U =R(                  UU-   -  sl        U =R*                  U	R                  SS5      -  sl        U =R,                  U-  sl        U =R.                  U-  sl        U =R0                  U
-  sl        U =R2                  U-  sl        U =R                  S-  sl        SSS5        g! [         a    Sn GNf = f! [         a    SnSn GNf = f! , (       d  f       g= f! , (       d  f       g= f)zCollect token usage.r   NrC   output_tokensinput_tokensr'    
cache_readinput_token_details	reasoningoutput_token_detailstoken_usager2   rF   rD   r%   )generations
IndexError
isinstancer   r/   r
   usage_metadataresponse_metadataAttributeErrorgetr9   
llm_outputrO   rH   r<   r@   r   r   r    r!   rI   rC   rD   rE   rF   rG   )rP   rd   r\   
generationr/   rq   rr   rE   rG   rm   rF   rD   response_model_namer'   uncached_prompt_tokensuncached_prompt_costcached_prompt_costprompt_costcompletion_costs                      r$   
on_llm_end OpenAICallbackHandler.on_llm_end  s7   	!--a03J j.11
)$,,gy11%,%;%;N(/(A(A%%)N(,%
 "N $ )>.+IJK . ?*>:M'8'>B&C&CL&QQ"Q34GH
$$,
3''++L"=
 ~112GLL'56K'L ($ n001GLL#12H#I+#V ""*H$7$77ZZ,,1,   #--m<K +0CQ G'OOOQ?M/##''b9J 11%2%I"#By?O?O$  "AY=T=T" /1CCK=):N:NO  OK ZZOO{_<<O!CC-/%%)==%""&77"!!%55!$$)$ ZS  	J	 " )!%$(!)B  Z6 ZsA   K% 9K8 $K8 L5B'L%K54K58L
	L

L
L,c                     U $ )z&Return a copy of the callback handler.r   rT   s    r$   __copy__OpenAICallbackHandler.__copy__%      r#   memoc                     U $ )z+Return a deep copy of the callback handler.r   )rP   r   s     r$   __deepcopy__"OpenAICallbackHandler.__deepcopy__)  r   r#   )rO   )r)   N)r)   rB   ) r   r   r   r   r   rC   int__annotations__rD   rE   rF   rG   rH   rI   floatrL   strrU   propertyboolrX   r   r   r   r^   rb   r   r}   r   r   r"   __classcell__)rQ   s   @r$   rB   rB     s   3L#M3 !#!sc  J&	
# 	
   sCx.379HK	c S T U*9 U* U* U*n )@  r#   rB   )F)r   rM   enumr   r   typingr   r   r   langchain_core._apir   langchain_core.callbacksr	   langchain_core.messagesr
   langchain_core.outputsr   r   r<   r   r   r   r   r9   r   r   r@   rB   r   r#   r$   <module>r      s   .   " " / 8 - <eWe He 	e
 xe e "4e 'e e We #He Ue  '!e$ '%e& 'e( W)e* #H+e. V/e0 '1e4 5e6 7e8 #G9e: *8;e> #D?e@ .tAeD uEeF %GeH fIeJ  KeN %OeP $UQeT FUeV vWeX 6YeZ %f[e^ v_e` )&aed Feef vgeh 8iej %hken voep )&qet uuev !%wex fyez ({e~ !$e@ ,TAeD 	%EeF UGeH IeJ FKeN TOeP QeT dUeV WeZ [e\ #C]e` 	%aeb Uced eef Fgej Ukel mep vqer &set huev  wez &{e| $V}e@ vAeB &CeD gEeF  GeJ &KeL $VMeP vQeR gSeT &UeV  WeZ &[e\ $V]e` %aeb ced Ueef #Fgej Tkel 'mep fqer Wset uev wex yez {e| }e@ AeB #ECeD #DEeF #DGeJ FKeL &vMeN &vOeR &tSeT 1$UeV 1$WeZ u[e\ )%]e^ )%_e` %faeb 0ced 0eeh )$iej 4Tkel 4Tmep 7qer (set guev $Xwez f{e| (}e@  AeB +GCeF +FGeH 6vIeL #FMeN .vOeP *6QeR 5fSeV .vWeX 9&Ye\ !']e^ ,W_eb ,Vced 7eeh Viej 'ken 'oep 24qet Euev &uwez &u{e| 1%}e@ TAeB $CeD $EeF GeH dIeJ dKeL DMeN $OeP $QeR 4SeT 4UeV dWeZ [e\ T]e^ T_e` Daeb  ced  eef &tgeh $Tiej $Tkel %dmen doep (qex Vyez &{e| &}e~ &e@ %AeB fCeD EeF eGeN OeP $VQeR $USeT $UUeV $UWeX (YeZ #E[e\ (]e` Faeb ced eef geh Viej kel Umep uqer #Fset #Euev #Ewex 'yez "5{e| '}e@ FAeB 
6CeD EeF vGeH eIeJ UKeL MeN OeP QeT VUeV UWeX #EYeZ #E[e\ #E]e^ '_e` .waed 'eef 'geh .uiej .ukel .umen 26oer "6set "5uev (wez /5.349" &# $I	e P	   > &,,	>>> 	>
 	>H  %F
 &,,%F%F%F %F
 %F %FPF/ Fr#   