§
    ~ŠtjÂ  ã                  ób   — 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dS )z%Message serialization for Google ADK.é    )ÚannotationsN)ÚAnyÚcontentr   Úreturnúlist[dict[str, Any]]c                ó¢   — | €g S t          | d¦  «        r| j        }n(t          | t          ¦  «        r| }nt	          | ¦  «        gS d„ |D ¦   «         S )z8Convert ADK Content/Part objects to serializable format.NÚpartsc                ó0   — g | ]}|®t          |¦  «        ‘ŒS )N)Ú_serialize_part)Ú.0Úparts     úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langsmith/integrations/google_adk/_messages.pyú
<listcomp>z4convert_adk_content_to_langsmith.<locals>.<listcomp>   s%   € ÐHÐHÐH d°tÐ7G�O˜DÑ!Ô!Ð7GÐ7GÐ7Gó    )Úhasattrr	   Ú
isinstanceÚlistr   )r   r	   s     r   Ú convert_adk_content_to_langsmithr   
   se   € à€Øˆ	Ýˆw˜Ñ Ô ð *Ø”ˆˆÝ	�G�TÑ	"Ô	"ð *Øˆˆå Ñ(Ô(Ð)Ð)ØHÐH¨eÐHÑHÔHÐHr   r   údict[str, Any]c           	     ó  — t          | t          ¦  «        r| S t          | d¦  «        r†| j        rt	          | j        dd¦  «        }t	          | j        dd¦  «        }|�Qt          |t
          ¦  «        r't          j        |¦  «                             d¦  «        nt          |¦  «        }d||dœS t          | d	¦  «        r5| j
        r.d
t	          | j
        dd¦  «        t	          | j
        dd¦  «        dœS t          | d¦  «        rA| j        r:| j        }dt	          |dd¦  «        t          t	          |dd¦  «        pi ¦  «        dœS t          | d¦  «        r?| j        r8| j        }dt	          |dd¦  «        t          t	          |dd¦  «        ¦  «        dœS t          | d¦  «        r| j        �dt          | j        ¦  «        dœS t          | d¦  «        r2| j        r+| j        }dt	          |dd¦  «        t	          |dd¦  «        dœS t          | d¦  «        r2| 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   r0   r1   ÚthoughtÚthinking)r   r3   )r   Údictr   r   ÚgetattrÚbytesÚbase64Ú	b64encodeÚdecodeÚstrr   r    r&   Ú_safe_serializer)   r*   r/   r2   )r   r   r   ÚencodedÚfcÚfrr-   Úresults           r   r   r      sè  € å�$�ÑÔð Øˆåˆt�]Ñ#Ô#ð 	N¨Ô(8ð 	NÝ�tÔ'¨°Ñ6Ô6ˆÝ˜DÔ,¨kÐ;UÑVÔVˆ	ØÐõ ˜d¥EÑ*Ô*ð•Ô  Ñ&Ô&×-Ò-¨gÑ6Ô6Ð6å˜‘Y”Yð ð
 $¨WÀ9ÐMÐMÐMåˆt�[Ñ!Ô!ð 
 d¤nð 
àÝ ¤°
¸DÑAÔAÝ  ¤°¸dÑCÔCð
ð 
ð 	
õ ˆt�_Ñ%Ô%ð 
¨$Ô*<ð 
ØÔˆàÝ˜B ¨	Ñ2Ô2Ý�' " f¨dÑ3Ô3Ð9°rÑ:Ô:ð
ð 
ð 	
õ ˆtÐ(Ñ)Ô)ð 
¨dÔ.Dð 
ØÔ#ˆà!Ý˜B ¨	Ñ2Ô2Ý&¥w¨r°:¸tÑ'DÔ'DÑEÔEð
ð 
ð 	
õ ˆt�VÑÔð 8 ¤Ð!6Ø­¨D¬I©¬Ð7Ð7Ð7åˆtÐ&Ñ'Ô'ð 
¨DÔ,@ð 
ØÔ#ˆà%Ý  j°(Ñ;Ô;Ý˜D &¨"Ñ-Ô-ð
ð 
ð 	
õ ˆtÐ,Ñ-Ô-ð 
°$Ô2Lð 
ØÔ+ˆà+Ý˜v y°)Ñ<Ô<Ý˜f h°Ñ3Ô3ð
ð 
ð 	
õ ˆt�YÑÔð C D¤LÐ$<Ø"µ°D´LÑ0AÔ0AÐBÐBÐBå˜4Ñ Ô Ð r   Úobjc                ó˜  — | �(t          | t          t          t          t          f¦  «        r| S t          | t
          ¦  «        r't          j        | ¦  «                             d¦  «        S t          | t          ¦  «        rd„ |  
                    ¦   «         D ¦   «         S t          | t          t          f¦  «        rd„ | D ¦   «         S t          | d¦  «        r%	 |                      ¦   «         S # t          $ r Y nw xY wt          | d¦  «        r4	 d„ | j         
                    ¦   «         D ¦   «         S # t          $ r Y nw xY wt          | ¦  «        S )z5Safely serialize an object to JSON-compatible format.Nr   c                ó4   — i | ]\  }}|t          |¦  «        “ŒS © ©r;   ©r   ÚkÚvs      r   ú
<dictcomp>z#_safe_serialize.<locals>.<dictcomp>^   s&   € Ð>Ð>Ð>©$¨!¨Q�•? 1Ñ%Ô%Ð>Ð>Ð>r   c                ó,   — g | ]}t          |¦  «        ‘ŒS rC   rD   )r   Úitems     r   r   z#_safe_serialize.<locals>.<listcomp>`   s    € Ð6Ð6Ð6¨$• Ñ%Ô%Ð6Ð6Ð6r   Ú
model_dumpÚ__dict__c                ó4   — i | ]\  }}|t          |¦  «        “ŒS rC   rD   rE   s      r   rH   z#_safe_serialize.<locals>.<dictcomp>h   s&   € ÐKÐKÐK©d¨a°�A• qÑ)Ô)ÐKÐKÐKr   )r   r:   ÚintÚfloatÚboolr6   r7   r8   r9   r4   Úitemsr   Útupler   rK   Ú	ExceptionrL   )r@   s    r   r;   r;   W   sW  € à
€{•j ¥s­Cµ½Ð&=Ñ>Ô>€{Øˆ
Ý�#•uÑÔð 5ÝÔ Ñ$Ô$×+Ò+¨GÑ4Ô4Ð4Ý�#•tÑÔð ?Ø>Ð>°#·)²)±+´+Ð>Ñ>Ô>Ð>Ý�#��e�}Ñ%Ô%ð 7Ø6Ð6°#Ð6Ñ6Ô6Ð6Ýˆs�LÑ!Ô!ð ð	Ø—>’>Ñ#Ô#Ð#øÝð 	ð 	ð 	ØˆDð	øøøåˆs�JÑÔð ð	ØKÐK°c´l×6HÒ6HÑ6JÔ6JÐKÑKÔKÐKøÝð 	ð 	ð 	ØˆDð	øøøåˆs‰8Œ8€Os$   ÃC) Ã)
C6Ã5C6Ä
"D- Ä-
D:Ä9D:Úllm_requestc           
     ó‚  — g }t          | dd¦  «        }|r8t          |dd¦  «        }|r%|                     dt          |¦  «        dœ¦  «         t          | dd¦  «        }|s|S |D �]Ø}t          |dd¦  «        }|d	k    rd
}t          |¦  «        }g g g }
}	}|D ]¡}|                     d¦  «        }|dk    r*|                     |                     dd¦  «        ¦  «         ŒG|dk    r|	                     |¦  «         Œc|dk    r|
                     |¦  «         Œ|                     t          |¦  «        ¦  «         Œ¢|	rO|d
k    rI|                     d
|rd                     |¦  «        ndd„ t          |	¦  «        D ¦   «         dœ¦  «         �Œ&|
r�|
D ]|}|                     d¦  «        }|                     d|                     dd¦  «        t          |t          ¦  «        rt          j
        |¦  «        nt          |pd¦  «        dœ¦  «         Œ}�Œ©|                     ||rd                     |¦  «        nddœ¦  «         �ŒÚ|S )z7Convert LlmRequest to OpenAI-compatible message format.ÚconfigNÚsystem_instructionÚsystem)Úroler   ÚcontentsrY   ÚuserÚmodelÚ	assistantr   r)   r.   r!   r'   ú c                ó    — g | ]K\  }}d |› �d|                      dd¦  «        t          j        |                      di ¦  «        ¦  «        dœdœ‘ŒLS )Úcall_Úfunctionr"   r.   r%   )r"   Ú	arguments)Úidr   ra   )ÚgetÚjsonÚdumps)r   ÚiÚtcs      r   r   z3convert_llm_request_to_messages.<locals>.<listcomp>•   sw   € ð 
#ð 
#ð 
#ñ "˜A˜rð #.¨! + +Ø$.à(*¯ª¨v°rÑ(:Ô(:Ý-1¬Z¸¿º¸wÈÑ8KÔ8KÑ-LÔ-Lð)ð )ðð ð
#ð 
#ð 
#r   )rY   r   Ú
tool_callsr   Útoolr"   )rY   r"   r   )r5   Úappendr:   r   rd   ÚjoinÚ	enumerater   r4   re   rf   )rT   ÚmessagesrV   Úsys_instrZ   r   rY   r	   Ú
text_partsri   Útool_resultsr   ÚtÚtrÚcs                  r   Úconvert_llm_request_to_messagesru   n   sÄ  € à%'€Hõ �[ (¨DÑ1Ô1€FØð JÝ˜6Ð#7¸Ñ>Ô>ˆØð 	JØ�OŠO X½#¸h¹-¼-ÐHÐHÑIÔIÐIå�{ J°Ñ5Ô5€HØð Øˆàð 7ñ 7ˆÝ�w ¨Ñ/Ô/ˆØ�7Š?ˆ?ØˆDå0°Ñ9Ô9ˆØ/1°2°r �Jˆ
àð 		-ð 		-ˆDØ—’˜Ñ Ô ˆAØ�FŠ{ˆ{Ø×!Ò! $§(¢(¨6°2Ñ"6Ô"6Ñ7Ô7Ð7Ð7Ø�j’�Ø×!Ò! $Ñ'Ô'Ð'Ð'Ø�mÒ#Ð#Ø×#Ò# DÑ)Ô)Ð)Ð)à×!Ò!¥# d¡)¤)Ñ,Ô,Ð,Ð,àð $	˜$ +Ò-Ð-Ø�OŠOà'Ø7AÐK˜sŸxšx¨
Ñ3Ô3Ð3Àtð
#ð 
#õ &/¨zÑ%:Ô%:ð
#ñ 
#ô 
#ðð ñô ð ñ ð" ð 	Ø"ð 
ð 
�Ø—F’F˜9Ñ%Ô%�Ø—’à &Ø "§¢ v¨rÑ 2Ô 2å-7¸½4Ñ-@Ô-@ÐR�DœJ q™MœM˜MÅcÈ!È'ÈrÁlÄlð	ð ñô ð ð ñ
ð �OŠOà Ø7AÐI˜sŸxšx¨
Ñ3Ô3Ð3Àrðð ñô ð ñ ð €Or   Úllm_responserP   c                ó|   — t          | dd¦  «        }|sdS t          |¦  «        }t          d„ |D ¦   «         ¦  «        S )z-Check if LlmResponse contains function calls.r   NFc              3  óH   K  — | ]}|                      d ¦  «        dk    V — ŒdS )r   r!   N©rd   ©r   Úps     r   ú	<genexpr>z%has_function_calls.<locals>.<genexpr>¿   s1   è è € Ð:Ð:¨qˆq�uŠu�V‰}Œ} 
Ò*Ð:Ð:Ð:Ð:Ð:Ð:r   ©r5   r   Úany)rv   r   r	   s      r   Úhas_function_callsr   ¹   sJ   € å�l I¨tÑ4Ô4€GØð ØˆuÝ,¨WÑ5Ô5€EÝÐ:Ð:°EÐ:Ñ:Ô:Ñ:Ô:Ð:r   c                óˆ   — t          | dd¦  «        pg D ]-}t          |¦  «        }t          d„ |D ¦   «         ¦  «        r dS Œ.dS )z?Check if LlmRequest contains function responses (tool results).rZ   Nc              3  óH   K  — | ]}|                      d ¦  «        dk    V — ŒdS )r   r'   Nry   rz   s     r   r|   z3has_function_response_in_request.<locals>.<genexpr>Æ   s1   è è € Ð=Ð=°!ˆq�uŠu�V‰}Œ} Ò-Ð=Ð=Ð=Ð=Ð=Ð=r   TFr}   )rT   r   r	   s      r   Ú has_function_response_in_requestr‚   Â   s_   € å˜;¨
°DÑ9Ô9Ð?¸Rð ð ˆÝ0°Ñ9Ô9ˆÝÐ=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ð 	Ø�4�4ð	àˆ5r   )r   r   r   r   )r   r   r   r   )r@   r   r   r   )rT   r   r   r   )rv   r   r   rP   )rT   r   r   rP   )Ú__doc__Ú
__future__r   r7   re   Útypingr   r   r   r;   ru   r   r‚   rC   r   r   ú<module>r†      sÍ   ðØ +Ð +à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð ð
Ið 
Ið 
Ið 
Ið=!ð =!ð =!ð =!ð@ð ð ð ð.Hð Hð Hð HðV;ð ;ð ;ð ;ðð ð ð ð ð r   