Ë
    tPêj  ã                   ó°   — d Z ddlmZ ddlmZmZ ddlmZ ddlmZm	Z	m
Z
 deeef   deeef   d	ed
ededee
j                  dz  e
j                  f   fd„Zy)z%Public API for Opik payload building.é    )Údatetime)ÚAnyÚFinal)Úutilsé   )Ú
extractorsÚpayload_buildersÚtypesÚkwargsÚresponse_objÚ
start_timeÚend_timeÚproject_nameÚreturnNc                 óü  — | d   }| j                  di «      xs i }|j                  di «      xs i }|j                  di «      xs i }t        j                  ||«      }	|	j                  d|«      }
|	j                  d«      }t        j                  |«      \  }}t        j                  |	| j                  d«      «      }|	j                  d«      }|j                  di «      xs i }|j                  d	i «      xs i }t        j
                  |
|||«      \  }
}}t        j                  |	||| ¬
«      }|j                  di «      }|j                  di «      }d}|€3t        j                  «       }t        j                  |
|||||||||¬«
      }t        j                  |d   «      }t        j                  | j                  d«      «      }| j                  d«      }t        j                  |
||||||||||||¬«      }||fS )aN  
    Build Opik trace and span payloads from LiteLLM completion data.

    This is the main public API for creating Opik payloads. It:
    1. Extracts all necessary data from LiteLLM kwargs and response
    2. Decides whether to create a new trace or attach to existing
    3. Builds trace payload (if new trace)
    4. Builds span payload (always)

    Args:
        kwargs: LiteLLM kwargs containing request metadata and logging data
        response_obj: LiteLLM response object containing model response
        start_time: Request start time
        end_time: Request end time
        project_name: Default Opik project name

    Returns:
        Tuple of (optional trace payload, span payload)
        - First element is TracePayload if creating a new trace, None if attaching to existing
        - Second element is always SpanPayload
    Ústandard_logging_objectÚlitellm_paramsÚmetadatar   Úcurrent_span_dataÚcustom_llm_providerÚ	thread_idÚproxy_server_requestÚheaders)Úopik_metadataÚstandard_logging_metadatar   Úlitellm_kwargsÚmessagesÚresponseN)
r   Útrace_idr   r   r   Ú
input_dataÚoutput_datar   Útagsr   ÚusageÚresponse_cost)r   r   Úparent_span_idr   r   r   r    r!   r   r"   r#   ÚproviderÚcost)Úgetr   Úextract_opik_metadataÚextract_span_identifiersÚextract_tagsÚapply_proxy_header_overridesÚextract_and_build_metadatar   Úcreate_uuid7r	   Úbuild_trace_payloadÚcreate_usage_objectÚnormalize_provider_nameÚbuild_span_payload)r   r   r   r   r   r   r   Úlitellm_metadatar   r   Úcurrent_project_namer   r   r%   r"   r   Úproxy_requestÚproxy_headersr   r    r!   Útrace_payloadr#   r&   r'   Úspan_payloads                             úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/opik/opik_payload_builder/api.pyÚbuild_opik_payloadr:      s@  € ð8 &,Ð,EÑ%FÐð #ŸJ™JÐ'7¸Ó<ÒBÀ€NØ,×0Ñ0°¸RÓ@ÒFÀBÐØ'>×'BÑ'BÀ:ÈrÓ'RÒ'XÐVXÐô &×;Ñ;Ð<LÐNgÓh€Mð )×,Ñ,¨^¸\ÓJÐð  -×0Ñ0Ð1DÓEÐÜ)×BÑBÐCTÓUÑ€Hˆnô ×"Ñ" =°&·*±*Ð=RÓ2SÓT€DØ×!Ñ! +Ó.€Ið *×-Ñ-Ð.DÀbÓIÒOÈR€MØ(×,Ñ,¨Y¸Ó;ÒA¸r€MÜ,6×,SÑ,SØ˜d I¨}ó-Ñ)Ð˜$ 	ô
 !×;Ñ;Ø#Ø";Ø 7Øô	€Hð 0×3Ñ3°JÀÓC€JØ0×4Ñ4°ZÀÓD€Kð 04€MØÐÜ×%Ñ%Ó'ˆÜ(×<Ñ<Ø-ØØ%Ø!ØØ!Ø#ØØØô
ˆô ×,Ñ,¨\¸'Ñ-BÓC€Eô !×8Ñ8¸¿¹ÐDYÓ9ZÓ[€HØ—*‘*˜_Ó-€Dä*×=Ñ=Ø)ØØ%Ø!ØØØØØØØØØô€Lð  ˜,Ð&Ð&ó    )Ú__doc__r   Útypingr   r   Úlitellm.integrations.opikr   Ú r   r	   r
   ÚdictÚstrÚtupleÚTracePayloadÚSpanPayloadr:   © r;   r9   ú<module>rF      s†   ðÙ +å ß å +ç 1Ñ 1ðl'Ø��c�‰Nðl'à�s˜C�x‘.ðl'ð ðl'ð ð	l'ð
 ðl'ð ˆ5×Ñ Ñ$ e×&7Ñ&7Ð7Ñ8ôl'r;   