Ë
    ümxi  ã                  ó:  — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ  G d„ dej&                  «      Z	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)z\Utilities for Commands.

Common methods for Commands such as RunCommand and CompileCommand.
é    )Úannotations)ÚAbstractSetÚAnyÚCallableÚSequence)Úipython_env)Úmodel_registry)Úparsed_args_lib)Úpost_process_utils)Úllm_function)Úllmfn_input_utils)Úllmfn_output_row)Úllmfn_outputs)Ú	unique_fnc                  ó<   ‡ — e Zd ZdZdˆ fd„Zdd„Z	 	 	 	 dd„Zˆ xZS )Ú_GroundTruthLLMFunctionz9LLMFunction that returns pre-generated ground truth data.c                ó4   •— t         ‰| �  d ¬«       || _        y )N)Úoutputs_ipython_display_fn)ÚsuperÚ__init__Ú_data)ÚselfÚdataÚ	__class__s     €úa/home/htdocs/ttos/venv/lib/python3.12/site-packages/google/generativeai/notebook/command_utils.pyr   z _GroundTruthLLMFunction.__init__%   s   ø€ Ü‰Ñ°DÐÔ9Øˆ�
ó    c                ó   — t        i «      S ©N)Ú	frozenset)r   s    r   Úget_placeholdersz(_GroundTruthLLMFunction.get_placeholders)   s   € ä˜‹}Ðr   c           	     ó(  — t        j                  |«      }t        | j                  «      t        |«      k7  r7t	        dj                  t        | j                  «      t        |«      «      «      ‚g }t        t        | j                  |«      «      D ]€  \  }\  }}t        j                  t        j                  j                  dt        j                  j                  |it        ¬«      }|j                  t        j                   d|||g¬«      «       Œ‚ |S )NzCGround truth should have same number of entries as inputs: {} vs {}r   )r   Úresult_type)Ú
prompt_numÚ	input_numÚprompt_varsÚoutput_rows)r   Úto_normalized_inputsÚlenr   ÚRuntimeErrorÚformatÚ	enumerateÚzipr   ÚLLMFnOutputRowr   ÚColumnNamesÚ
RESULT_NUMÚTEXT_RESULTÚstrÚappendÚLLMFnOutputEntry)r   ÚinputsÚnormalized_inputsÚoutputsÚidxÚvaluer%   Ú
output_rows           r   Ú
_call_implz"_GroundTruthLLMFunction._call_impl-   s÷   € ô .×BÑBÀ6ÓJÐÜˆt�z‰z‹?œcÐ"3Ó4Ò4ÜØU×\Ñ\Ü˜Ÿ
™
“O¤SÐ):Ó%;óóð ð 9;ˆÜ)2´3°t·z±zÐCTÓ3UÓ)Vò 	Ñ%ˆCÑ%�%˜Ü)×8Ñ8ä!×-Ñ-×8Ñ8¸!Ü!×-Ñ-×9Ñ9¸5ðô  ôˆJð �N‰NÜ×.Ñ.Ø Ø!Ø +Ø!+ ô	õð	ð  ˆr   )r   zSequence[str])ÚreturnzAbstractSet[str])r4   z*llmfn_input_utils.LLMFunctionInputs | Noner;   z(Sequence[llmfn_outputs.LLMFnOutputEntry])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r:   Ú__classcell__)r   s   @r   r   r   "   s%   ø„ ÙCõóðØ@ðà	1÷r   r   c                ó   ‡ — ˆ fd„S )Nc                óB   •— ‰j                  | j                  «       «      S r   )ÚdisplayÚas_pandas_dataframe)ÚxÚenvs    €r   ú<lambda>z)_get_ipython_display_fn.<locals>.<lambda>O   s   ø€ �S—[‘[ ×!6Ñ!6Ó!8Ó9€ r   © )rF   s   `r   Ú_get_ipython_display_fnrI   L   s   ø€ ó :Ð9r   c                ó,  — |g}|rt        |«      nd}t        j                  | j                  |j                  «      |j
                  ||¬«      }|j                  r!|j                  dt        j                  ¬«      }|D ]  }|j                  |«      }Œ |S )z8Creates an LLMFunction from Command.execute() arguments.N)ÚmodelÚ
model_argsÚpromptsr   Úunique)ÚnameÚfn)
rI   r   ÚLLMFunctionImplÚ	get_modelÚ
model_typerL   rN   Úadd_post_process_reorder_fnr   Úadd_to_llm_function)	ÚmodelsrF   Úparsed_argsÚcell_contentÚpost_processing_fnsrM   Úllmfn_outputs_display_fnÚllm_fnrP   s	            r   Úcreate_llm_functionr\   R   sš   € ð '˜€Gá?BÔ6°sÔ;ÈÐä×)Ñ)Ø×Ñ˜{×5Ñ5Ó6Ø×)Ñ)ØØ#;ô	€Fð ×ÒØ×3Ñ3¸Äi×FYÑFYÐ3ÓZˆØ!ò 0ˆØ×'Ñ'¨Ó/‰ð0ð €Mr   c                ó&   ‡— | d   Šˆfd„}| d   |fS )Né   c                óN   •—  ‰| j                  «       |j                  «       «      S r   )Úresult_value)rE   ÚyÚ	simple_fns     €r   rG   z,_convert_simple_compare_fn.<locals>.<lambda>p   s   ø€ ™) A§N¡NÓ$4°a·n±nÓ6FÓG€ r   r   rH   )Úname_and_simple_fnÚnew_fnrb   s     @r   Ú_convert_simple_compare_fnre   l   s$   ø€ ð # 1Ñ%€IÛG€FØ˜aÑ  &Ð(Ð(r   c           
     óú   — | rt        | «      nd}t        j                  |j                  |j                  |j
                  D �cg c]  }t        |«      ‘Œ c}|¬«      }|D ]  }|j                  |«      }Œ |S c c}w )ú?Creates an LLMCompareFunction from Command.execute() arguments.N©Úlhs_name_and_fnÚrhs_name_and_fnÚcompare_name_and_fnsr   )rI   r   ÚLLMCompareFunctionri   rj   Ú
compare_fnre   rU   )rF   rW   rY   rZ   rE   Ú
llm_cmp_fnrP   s          r   Úcreate_llm_compare_functionro   t   s„   € ñ @CÔ6°sÔ;ÈÐä×0Ñ0Ø#×3Ñ3Ø#×3Ñ3ØEP×E[ÑE[Ö\ÀÔ8¸Õ;Ò\Ø#;ô	€Jð "ò 8ˆØ×+Ñ+¨JÓ7‰
ð8ð Ðùò ]s   ÁA8c           
     óö   — |rt        |«      nd}t        | ||||¬«      }t        |j                  ¬«      }t	        j
                  d|fd|f|j                  D �cg c]  }t        |«      ‘Œ c}|¬«      }	|	S c c}w )rg   N)rV   rF   rW   rX   rY   )r   ÚactualÚground_truthrh   )rI   r\   r   rr   r   rl   rm   re   )
rV   rF   rW   rX   rY   rZ   r[   Úground_truth_fnrE   rn   s
             r   Úcreate_llm_eval_functionrt   ˆ   sŽ   € ñ @CÔ6°sÔ;ÈÐô !ØØØØ!Ø/ô€Fô .°;×3KÑ3KÔL€OÜ×0Ñ0Ø! 6Ð*Ø'¨Ð9ØEP×E[ÑE[Ö\ÀÔ8¸Õ;Ò\Ø#;ô	€Jð Ðùò	 ]s   ÁA6N)rF   zipython_env.IPythonEnvr;   z,Callable[[llmfn_outputs.LLMFnOutputs], None])rV   zmodel_registry.ModelRegistryrF   úipython_env.IPythonEnv | NonerW   úparsed_args_lib.ParsedArgsrX   r1   rY   ú2Sequence[post_process_utils.ParsedPostProcessExpr]r;   úllm_function.LLMFunction)rc   z%tuple[str, Callable[[str, str], Any]]r;   z"tuple[str, llm_function.CompareFn])rF   ru   rW   rv   rY   rw   r;   rx   )r?   Ú
__future__r   Útypingr   r   r   r   Úgoogle.generativeai.notebookr   r	   r
   r   Ú google.generativeai.notebook.libr   r   r   r   r   ÚLLMFunctionr   rI   r\   re   ro   rt   rH   r   r   ú<module>r~      s  ðñõ #ç 7Ó 7å 4Ý 7Ý 8Ý ;Ý 9Ý >Ý =Ý :Ý 6ô'˜l×6Ñ6ô 'ðT:Ø	ð:à1ó:ðØ(ðà	&ðð ,ðð ð	ð
 Lðð óð4)Ø=ð)à'ó)ðØ	&ðà+ðð Lðð ó	ð(Ø(ðà	&ðð ,ðð ð	ð
 Lðð ôr   