Ë
    ³ŒjÂ  ã                  ó`   — d Z ddlmZ ddlZddlZddlmZ dd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zy)z%Message serialization for Google ADK.é    )ÚannotationsN)ÚAnyc                ó¼   — | €g S t        | d«      r| j                  }nt        | t        «      r| }nt	        | «      gS |D �cg c]  }|€Œt	        |«      ‘Œ c}S c c}w )z8Convert ADK Content/Part objects to serializable format.Úparts)Úhasattrr   Ú
isinstanceÚlistÚ_serialize_part)Úcontentr   Úparts      úu/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/integrations/google_adk/_messages.pyÚ convert_adk_content_to_langsmithr   
   s^   € à€Øˆ	Üˆw˜Ô Ø—‘‰Ü	�GœTÔ	"Ø‰ä Ó(Ð)Ð)Ù.3ÓH©e d°tÑ7GŒO˜DÕ!¨eÑHÐHùÒHs   ÁAÁ	Ac           	     óÒ  — t        | t        «      r| S t        | d«      r�| j                  rut	        | j                  dd«      }t	        | j                  dd«      }|�Et        |t
        «      r$t        j                  |«      j                  d«      n
t        |«      }d||dœS t        | d	«      r<| j                  r0d
t	        | j                  dd«      t	        | j                  dd«      dœS t        | d«      rA| j                  r5| j                  }dt	        |dd«      t        t	        |dd«      xs i «      dœS t        | d«      r=| j                  r1| j                  }dt	        |dd«      t        t	        |dd«      «      dœS t        | d«      r$| j                  �dt        | j                  «      dœS t        | d«      r4| j                  r(| j                  }dt	        |dd«      t	        |dd«      dœS t        | d«      r4| j                   r(| j                   }dt	        |d d«      t	        |d!d«      d"œS t        | d#«      r$| j"                  �d$t        | j"                  «      d%œS t        | «      S )&zSerialize a single Part.Úinline_dataÚdataNÚ	mime_typezapplication/octet-streamúutf-8Úimage)Útyper   r   Ú	file_dataÚfileÚfile_uri)r   r   r   Úfunction_callÚtool_useÚnameÚunknownÚargs)r   r   ÚinputÚfunction_responseÚtool_resultÚresponse)r   r   r   Útext)r   r"   Úexecutable_codeÚlanguageÚpythonÚcodeÚ )r   r$   r&   Úcode_execution_resultÚoutcomeÚoutput)r   r)   r*   ÚthoughtÚthinking)r   r,   )r   Údictr   r   ÚgetattrÚbytesÚbase64Ú	b64encodeÚdecodeÚstrr   r   r   Ú_safe_serializer"   r#   r(   r+   )r   r   r   ÚencodedÚfcÚfrr&   Úresults           r   r
   r
      sM  € ä�$œÔØˆäˆt�]Ô#¨×(8Ò(8Ü�t×'Ñ'¨°Ó6ˆÜ˜D×,Ñ,¨kÐ;UÓVˆ	ØÐô ˜d¤EÔ*ô × Ñ  Ó&×-Ñ-¨gÔ6ä˜“Yð ð
 $¨WÀ9ÑMÐMäˆt�[Ô! d§n¢nàÜ §¡°
¸DÓAÜ  §¡°¸dÓCñ
ð 	
ô ˆt�_Ô%¨$×*<Ò*<Ø×ÑˆàÜ˜B ¨	Ó2Üœ' " f¨dÓ3Ò9°rÓ:ñ
ð 	
ô ˆtÐ(Ô)¨d×.DÒ.DØ×#Ñ#ˆà!Ü˜B ¨	Ó2Ü&¤w¨r°:¸tÓ'DÓEñ
ð 	
ô ˆt�VÔ §¡Ð!6Ø¬¨D¯I©I«Ñ7Ð7äˆtÐ&Ô'¨D×,@Ò,@Ø×#Ñ#ˆà%Ü  j°(Ó;Ü˜D &¨"Ó-ñ
ð 	
ô ˆtÐ,Ô-°$×2LÒ2LØ×+Ñ+ˆà+Ü˜v y°)Ó<Ü˜f h°Ó3ñ
ð 	
ô ˆt�YÔ D§L¡LÐ$<Ø"´°D·L±LÓ0AÑBÐBä˜4Ó Ð ó    c                óÔ  — | � t        | t        t        t        t        f«      r| S t        | t
        «      r$t        j                  | «      j                  d«      S t        | t        «      r-| j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}S t        | t        t        f«      r| D �cg c]  }t        |«      ‘Œ c}S t        | d«      r	 | j                  «       S t        | d«      r8	 | j"                  j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}S t        | «      S c c}}w c c}w # t         $ r Y Œew xY wc c}}w # t         $ r Y t        | «      S w xY w)z5Safely serialize an object to JSON-compatible format.r   Ú
model_dumpÚ__dict__)r   r3   ÚintÚfloatÚboolr/   r0   r1   r2   r-   Úitemsr4   r	   Útupler   r;   Ú	Exceptionr<   )ÚobjÚkÚvÚitems       r   r4   r4   W   sE  € à
€{”j ¤s¬C´¼Ð&=Ô>Øˆ
Ü�#”uÔÜ×Ñ Ó$×+Ñ+¨GÓ4Ð4Ü�#”tÔØ25·)±)´+Ô>±+©$¨!¨Q�”? 1Ó%Ñ%°+Ò>Ð>Ü�#œœe�}Ô%Ù25Ó6±#¨$” Õ%°#Ñ6Ð6Üˆs�LÔ!ð	Ø—>‘>Ó#Ð#ô ˆs�JÔð	Ø69·l±l×6HÑ6HÔ6JÔKÑ6J©d¨a°�A” qÓ)Ñ)Ð6JÒKÐKô ˆs‹8€Oùó ?ùâ6øô ò 	Ùð	üó LøÜò 	ØÜˆs‹8€Oð	úsB   Á<D1Â0D7ÃD< Ã/E ÄEÄ"E Ä<	EÅEÅE Å	E'Å&E'c                ó`  — g }t        | dd«      }|r,t        |dd«      }|r|j                  dt        |«      dœ«       t        | dd«      }|s|S |D �]Ó  }t        |dd«      }|d	k(  rd
}t        |«      }g g g }
}	}|D ]‚  }|j	                  d«      }|dk(  r"|j                  |j	                  dd«      «       Œ;|dk(  r|	j                  |«       ŒR|dk(  r|
j                  |«       Œi|j                  t        |«      «       Œ„ |	rˆ|d
k(  rƒ|j                  d
|rdj                  |«      ndt        |	«      D ��cg c]D  \  }}d|› �d|j	                  dd«      t        j                  |j	                  di «      «      dœdœ‘ŒF c}}dœ«       �Œ:|
rq|
D ]j  }|j	                  d«      }|j                  d|j	                  dd«      t        |t        «      rt        j                  |«      nt        |xs d«      dœ«       Œl �Œ­|j                  ||rdj                  |«      nddœ«       �ŒÖ |S c c}}w )z7Convert LlmRequest to OpenAI-compatible message format.ÚconfigNÚsystem_instructionÚsystem)Úroler   ÚcontentsrK   ÚuserÚmodelÚ	assistantr   r"   r'   r   r    Ú Úcall_Úfunctionr   r   )r   Ú	arguments)Úidr   rR   )rK   r   Ú
tool_callsr   Útool)rK   r   r   )r.   Úappendr3   r   ÚgetÚjoinÚ	enumerateÚjsonÚdumpsr   r-   )Úllm_requestÚmessagesrH   Úsys_instrL   r   rK   r   Ú
text_partsrU   Útool_resultsr   ÚtÚiÚtcÚtrÚcs                    r   Úconvert_llm_request_to_messagesrg   n   s+  € à%'€Hô �[ (¨DÓ1€FÙÜ˜6Ð#7¸Ó>ˆÙØ�O‰O X¼#¸h»-ÑHÔIä�{ J°Ó5€HÙØˆäˆÜ�w ¨Ó/ˆØ�7Š?ØˆDä0°Ó9ˆØ/1°2°r �Jˆ
ãˆDØ—‘˜Ó ˆAØ�FŠ{Ø×!Ñ! $§(¡(¨6°2Ó"6Õ7Ø�j’Ø×!Ñ! $Õ'Ø�mÒ#Ø×#Ñ# DÕ)à×!Ñ!¤# d£)Õ,ð ñ ˜$ +Ò-Ø�O‰Oà'Ù7A˜sŸx™x¨
Ô3Àtô &/¨zÔ%:ô
#ñ &;™E˜A˜rð %*¨!¨ +Ø$.à(*¯©¨v°rÓ(:Ü-1¯Z©Z¸¿¹¸wÈÓ8KÓ-Lñ)óð &;ò
#ñöñ" Û"�Ø—F‘F˜9Ó%�Ø—‘à &Ø "§¡ v¨rÓ 2ä-7¸¼4Ô-@œDŸJ™J qœMÄcÈ!Ê'ÈrÃlñ	õò #ð �O‰Oà Ù7A˜sŸx™x¨
Ô3Àrñöðe ðr €OùóC
#s   Ä6A	H*c                ó\   — t        | dd«      }|syt        |«      }t        d„ |D «       «      S )z-Check if LlmResponse contains function calls.r   NFc              3  óD   K  — | ]  }|j                  d «      dk(  –— Œ y­w)r   r   N©rX   ©Ú.0Úps     r   Ú	<genexpr>z%has_function_calls.<locals>.<genexpr>¿   s   è ø€ Ð:±E¨qˆq�u‰u�V‹} 
Õ*±Eùó   ‚ ©r.   r   Úany)Úllm_responser   r   s      r   Úhas_function_callsrs   ¹   s1   € ä�l I¨tÓ4€GÙØÜ,¨WÓ5€EÜÑ:±EÓ:Ó:Ð:r9   c                ón   — t        | dd«      xs g D ]!  }t        |«      }t        d„ |D «       «      sŒ! y y)z?Check if LlmRequest contains function responses (tool results).rL   Nc              3  óD   K  — | ]  }|j                  d «      dk(  –— Œ y­w)r   r    Nrj   rk   s     r   rn   z3has_function_response_in_request.<locals>.<genexpr>Æ   s   è ø€ Ð=±u°!ˆq�u‰u�V‹} Õ-±uùro   TFrp   )r]   r   r   s      r   Ú has_function_response_in_requestrv   Â   s>   € ä˜;¨
°DÓ9Ò?¸RÒ?ˆÜ0°Ó9ˆÜÑ=±uÓ=Õ=Ùð @ð r9   )r   r   Úreturnúlist[dict[str, Any]])r   r   rw   zdict[str, Any])rC   r   rw   r   )r]   r   rw   rx   )rr   r   rw   r?   )r]   r   rw   r?   )Ú__doc__Ú
__future__r   r0   r[   Útypingr   r   r
   r4   rg   rs   rv   © r9   r   Ú<module>r}      s6   ðÙ +å "ã Û Ý ó
Ió=!ó@ó.HóV;ôr9   