U 췀g^@sddlZddlmZddlZddlmZddlmZddlmZddl m Z e rdddl m Z m Z m Z eddd Zd d Zd d ZddZdddZdS)N)wraps) start_span)Span) ContextVar) TYPE_CHECKING)OptionalCallableAnyai_pipeline_name)defaultcCst|dSN)_ai_pipeline_nameset)namerF/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namesrcCstSr )r getrrrrget_ai_pipeline_namesrc sfdd}|S)NcsFfdd}fdd}tr6t|St|SdS)Nc sJt}d|rdnd}tf|d}|diD]\}}|||qD|diD]\}}|||qj|r|d|||W5QRStznz||}WnZtk r}z:t j j |t j dd d d \} } t j| | d |dW5d}~XYnXW5tdX|W5QRSW5QRXdS Nopzai.runz ai.pipeline)rrZ sentry_tagsZ sentry_dataai.pipeline.nameZ ai_monitoringF)typeZhandled)Zclient_optionsZ mechanism)hintr rrpopitemsZset_tagset_datar Exception sentry_sdkutilsZevent_from_exceptionZ get_clientoptionsZ capture_event argskwargsZ curr_pipelinerspankvreseeventr descriptionf span_kwargsrr sync_wrappeds.    z1ai_track..decorator..sync_wrappedc sVt}d|rdnd}tf|d}|diD]\}}|||qD|diD]\}}|||qj|r|d|||IdHW5QRStztz||IdH}WnZtk r&}z:t j j |t j dd d d \} } t j| | d |dW5d}~XYnXW5tdX|W5QRSW5QRXdSrrr"r+rr async_wrapped<s.    z2ai_track..decorator..async_wrapped)inspectiscoroutinefunctionr)r-r/r0r,r.)r-r decorators   zai_track..decoratorr)r,r.r4rr3rai_tracksAr5cCszt}|r|d||dk r,|jd|d|dk rB|jd|d|dkrb|dk rb|dk rb||}|dk rv|d|dS)NrZai_prompt_tokens_used)valueZai_completion_tokens_usedZai_total_tokens_used)rrZset_measurement)r%Z prompt_tokensZcompletion_tokensZ total_tokensr rrrrecord_token_usageas  r7)NNN)r1 functoolsrZsentry_sdk.utilsrrZsentry_sdk.tracingrrtypingrrrr r rrr5r7rrrrs       G