Ë
    tPêjª	  ã                   ó\   — d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
 ddlmZ  G d„ d«      Zy)	aV  Langtrace attribute mapper.

Produces Langtrace's attribute vocabulary so a span can be ingested by a
Langtrace backend. Compose it alongside other mappers like any other
vocabulary.

Scalar attributes are declared as a flat ``key -> extractor`` table (one lambda
per mapping operation); the prompt/completion blobs are serialized as a tail.
é    )ÚCallable)ÚAttributeMapÚ	AttrValueÚSpanData)ÚcollectÚjson_or_noneÚoutput_messages)ÚLLMCallSpanDatac                   ó  — e Zd ZU i dd„ “dd„ “dd„ “dd„ “d	d
„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd„ “dd „ “Zeeeeged!z  f   f   e	d"<   d#„ d$„ d%œZ
eeeeged!z  f   f   e	d&<   d'ed(efd)„Zed'ed(efd*„«       Zy!)+ÚLangtraceMapperzgen_ai.operation.namec                  ó   — y)NÚchat© ©Úds    úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/otel/mappers/langtrace.pyú<lambda>zLangtraceMapper.<lambda>   s   � ó    zlangtrace.service.namec                 ó"   — | j                   xs d S ©N)Úproviderr   s    r   r   zLangtraceMapper.<lambda>   s   € ¨A¯J©JÒ,>¸$€ r   z	llm.modelc                 ó"   — | j                   xs d S r   )Úrequest_modelr   s    r   r   zLangtraceMapper.<lambda>   s   € ˜qŸ™Ò6°$€ r   zgen_ai.response.modelc                 ó"   — | j                   xs d S r   )Úresponse_modelr   s    r   r   zLangtraceMapper.<lambda>   s   € ¨1×+;Ñ+;Ò+C¸t€ r   zgen_ai.response_idc                 ó"   — | j                   xs d S r   )Úresponse_idr   s    r   r   zLangtraceMapper.<lambda>   s   € ¨¯©Ò(=¸€ r   zgen_ai.system_fingerprintc                 ó"   — | j                   xs d S r   )Úsystem_fingerprintr   s    r   r   zLangtraceMapper.<lambda>   s   € ¨q×/CÑ/CÒ/KÀt€ r   zllm.temperaturec                 ó.   — | j                   j                  S r   )Úrequest_paramsÚtemperaturer   s    r   r   zLangtraceMapper.<lambda>   s   €  Q×%5Ñ%5×%AÑ%A€ r   z	llm.top_pc                 ó.   — | j                   j                  S r   )r!   Útop_pr   s    r   r   zLangtraceMapper.<lambda>   ó   € ˜q×/Ñ/×5Ñ5€ r   z	llm.top_kc                 ó.   — | j                   j                  S r   )r!   Útop_kr   s    r   r   zLangtraceMapper.<lambda>    r%   r   zllm.max_tokensc                 ó.   — | j                   j                  S r   )r!   Ú
max_tokensr   s    r   r   zLangtraceMapper.<lambda>!   s   €  A×$4Ñ$4×$?Ñ$?€ r   zllm.frequency_penaltyc                 ó.   — | j                   j                  S r   )r!   Úfrequency_penaltyr   s    r   r   zLangtraceMapper.<lambda>"   s   € ¨1×+;Ñ+;×+MÑ+M€ r   zllm.presence_penaltyc                 ó.   — | j                   j                  S r   )r!   Úpresence_penaltyr   s    r   r   zLangtraceMapper.<lambda>#   s   € ¨!×*:Ñ*:×*KÑ*K€ r   z
llm.streamc                 ó   — | j                   S r   )Úis_streamingr   s    r   r   zLangtraceMapper.<lambda>$   s
   €  §¡€ r   zllm.token.counts.promptc                 ó.   — | j                   j                  S r   )ÚusageÚinput_tokensr   s    r   r   zLangtraceMapper.<lambda>%   s   € ¨Q¯W©W×-AÑ-A€ r   zllm.token.counts.completionc                 ó.   — | j                   j                  S r   )r1   Úoutput_tokensr   s    r   r   zLangtraceMapper.<lambda>&   s   € °·±×1FÑ1F€ r   zllm.token.counts.totalc                 ó.   — | j                   j                  S r   )r1   Útotal_tokensr   s    r   r   zLangtraceMapper.<lambda>'   s   € ¨A¯G©G×,@Ñ,@€ r   NÚ_LLM_CALL_ATTRSc                 óZ   — | j                   rt        t        | j                   «      «      S d S r   )Úmessages_inr   Úlistr   s    r   r   zLangtraceMapper.<lambda>+   s   € ÀaÇmÂm¤¬d°1·=±=Ó.AÓ!B€ ÐY]€ r   c                 óF   — | j                   rt        t        | «      «      S d S r   )Úchoices_outr   r	   r   s    r   r   zLangtraceMapper.<lambda>,   s   € ÈÏÊ¤\´/À!Ó2DÓ%E€ Ð\`€ r   )zllm.promptszllm.completionsÚ_BLOB_ATTRSÚdataÚreturnc                 óD   — |t         d˜ x�\   | j                  |«      S  	 i S )Nr   )r
   Ú	_llm_call)Úselfr>   s     r   ÚmapzLangtraceMapper.map/   s'   € ØÜ Õ"Ø—~‘~ dÓ+Ð+ð #àØ�	r   c                 ó^   — i t        | j                  |«      ¥t        | j                  |«      ¥S r   )r   r7   r=   )Úclsr>   s     r   rA   zLangtraceMapper._llm_call6   s4   € ð
Ü�c×)Ñ)¨4Ó0ð
ä�c—o‘o tÓ,ð
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__r7   ÚdictÚstrr   r
   r   Ú__annotations__r=   r   r   rC   ÚclassmethodrA   r   r   r   r   r      sr  … ðQØÑ!1ðQà Ñ">ðQð 	Ñ6ðQð 	 Ñ!Cð	Qð
 	Ñ=ðQð 	$Ñ%KðQð 	ÑAðQð 	Ñ5ðQð 	Ñ5ðQð 	Ñ?ðQð 	 Ñ!MðQð 	Ñ KðQð 	Ñ.ðQð 	"Ñ#AðQð 	&Ñ'FðQð  	!Ñ"@ð!Q€O�T˜#˜x¨Ð(9¸9ÀtÑ;KÐ(KÑLÐLÑMó ñ( ^Ù`ñM€K��c˜8 _Ð$5°yÀ4Ñ7GÐ$GÑHÐHÑIó ð
˜ð  \ó ð ð
˜_ð 
°ò 
ó ñ
r   r   N)Ú__doc__Úcollections.abcr   Ú&litellm.integrations.otel.mappers.baser   r   r   Ú'litellm.integrations.otel.mappers.utilsr   r   r	   Ú(litellm.integrations.otel.model.payloadsr
   r   r   r   r   ú<module>rR      s/   ðñõ %ç TÑ T÷ñ õ
 E÷%
ò %
r   