§
    é˜ºh~  ã                  óè   — 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d%S )*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                  ó4   ‡ — 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.ÚdataúSequence[str]c                óZ   •— t          ¦   «                              d ¬¦  «         || _        d S )N)Úoutputs_ipython_display_fn)ÚsuperÚ__init__Ú_data)Úselfr   Ú	__class__s     €úr/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/google/generativeai/notebook/command_utils.pyr   z _GroundTruthLLMFunction.__init__%   s)   ø€ Ý‰Œ×Ò°DÐÑ9Ô9Ð9ØˆŒ
ˆ
ˆ
ó    ÚreturnúAbstractSet[str]c                ó    — t          i ¦  «        S ©N)Ú	frozenset)r   s    r   Úget_placeholdersz(_GroundTruthLLMFunction.get_placeholders)   s   € å˜‰}Œ}Ðr   Úinputsú*llmfn_input_utils.LLMFunctionInputs | Noneú(Sequence[llmfn_outputs.LLMFnOutputEntry]c           	     ó(  — t          j        |¦  «        }t          | j        ¦  «        t          |¦  «        k    rBt	          d                     t          | j        ¦  «        t          |¦  «        ¦  «        ¦  «        ‚g }t          t          | j        |¦  «        ¦  «        D ]q\  }\  }}t          j	        t          j        j        dt          j        j        |it          ¬¦  «        }|                     t          j        d|||g¬¦  «        ¦  «         Œr|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   r$   Únormalized_inputsÚoutputsÚidxÚvaluer+   Ú
output_rows           r   Ú
_call_implz"_GroundTruthLLMFunction._call_impl-   s  € õ .ÔBÀ6ÑJÔJÐÝˆtŒz‰?Œ?�cÐ"3Ñ4Ô4Ò4Ð4ÝØU×\Ò\Ý˜œ
‘O”O¥SÐ):Ñ%;Ô%;ñô ñô ð ð 9;ˆÝ)2µ3°t´zÐCTÑ3UÔ3UÑ)VÔ)Vð 	ð 	Ñ%ˆCÑ%�%˜Ý)Ô8å!Ô-Ô8¸!Ý!Ô-Ô9¸5ðõ  ðñ ô ˆJð �NŠNÝÔ.Ø Ø!Ø +Ø!+ ð	ñ ô ñô ð ð ð ˆr   )r   r   )r   r   )r$   r%   r   r&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r?   Ú__classcell__)r   s   @r   r   r   "   sk   ø€ € € € € ØCÐCðð ð ð ð ð ðð ð ð ðð ð ð ð ð ð ð r   r   Úenvúipython_env.IPythonEnvr   ú,Callable[[llmfn_outputs.LLMFnOutputs], None]c                ó   ‡ — ˆ fd„S )Nc                óR   •— ‰                      |                      ¦   «         ¦  «        S r!   )ÚdisplayÚas_pandas_dataframe)ÚxrE   s    €r   ú<lambda>z)_get_ipython_display_fn.<locals>.<lambda>O   s   ø€ �S—[’[ ×!6Ò!6Ñ!8Ô!8Ñ9Ô9€ r   © )rE   s   `r   Ú_get_ipython_display_fnrO   L   s   ø€ ð :Ð9Ð9Ð9Ð9r   Úmodelsúmodel_registry.ModelRegistryúipython_env.IPythonEnv | NoneÚparsed_argsúparsed_args_lib.ParsedArgsÚcell_contentr7   Úpost_processing_fnsú2Sequence[post_process_utils.ParsedPostProcessExpr]úllm_function.LLMFunctionc                ó   — |g}|rt          |¦  «        nd}t          j        |                      |j        ¦  «        |j        ||¬¦  «        }|j        r!|                     dt          j        ¬¦  «        }|D ]}| 	                    |¦  «        }Œ|S )z8Creates an LLMFunction from Command.execute() arguments.N)ÚmodelÚ
model_argsÚpromptsr   Úunique)ÚnameÚfn)
rO   r   ÚLLMFunctionImplÚ	get_modelÚ
model_typer[   r]   Úadd_post_process_reorder_fnr   Úadd_to_llm_function)	rP   rE   rS   rU   rV   r\   Úllmfn_outputs_display_fnÚllm_fnr_   s	            r   Úcreate_llm_functionrg   R   s­   € ð '˜€Gà?BÐLÕ6°sÑ;Ô;Ð;ÈÐåÔ)Ø×Ò˜{Ô5Ñ6Ô6ØÔ)ØØ#;ð	ñ ô €Fð Ôð [Ø×3Ò3¸ÅiÔFYÐ3ÑZÔZˆØ!ð 0ð 0ˆØ×'Ò'¨Ñ/Ô/ˆˆà€Mr   Úname_and_simple_fnú%tuple[str, Callable[[str, str], Any]]ú"tuple[str, llm_function.CompareFn]c                ó2   ‡— | d         Šˆfd„}| d         |fS )Né   c                ód   •—  ‰|                       ¦   «         |                      ¦   «         ¦  «        S r!   )Úresult_value)rL   ÚyÚ	simple_fns     €r   rM   z,_convert_simple_compare_fn.<locals>.<lambda>p   s'   ø€ ˜)˜) A§N¢NÑ$4Ô$4°a·n²nÑ6FÔ6FÑGÔG€ r   r   rN   )rh   Únew_fnrp   s     @r   Ú_convert_simple_compare_fnrr   l   s-   ø€ ð # 1Ô%€IØGÐGÐGÐG€FØ˜aÔ  &Ð(Ð(r   c                óÂ   — | rt          | ¦  «        nd}t          j        |j        |j        d„ |j        D ¦   «         |¬¦  «        }|D ]}|                     |¦  «        }Œ|S )ú?Creates an LLMCompareFunction from Command.execute() arguments.Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rN   ©rr   ©Ú.0rL   s     r   ú
<listcomp>z/create_llm_compare_function.<locals>.<listcomp>   ó!   € Ð\Ð\Ð\ÀÕ8¸Ñ;Ô;Ð\Ð\Ð\r   ©Úlhs_name_and_fnÚrhs_name_and_fnÚcompare_name_and_fnsr   )rO   r   ÚLLMCompareFunctionr|   r}   Ú
compare_fnrd   )rE   rS   rV   re   Ú
llm_cmp_fnr_   s         r   Úcreate_llm_compare_functionr‚   t   s…   € ð @CÐLÕ6°sÑ;Ô;Ð;ÈÐåÔ0Ø#Ô3Ø#Ô3Ø\Ð\À[ÔE[Ð\Ñ\Ô\Ø#;ð	ñ ô €Jð "ð 8ð 8ˆØ×+Ò+¨JÑ7Ô7ˆ
ˆ
àÐr   c                óÔ   — |rt          |¦  «        nd}t          | ||||¬¦  «        }t          |j        ¬¦  «        }t	          j        d|fd|fd„ |j        D ¦   «         |¬¦  «        }|S )rt   N)rP   rE   rS   rU   rV   )r   ÚactualÚground_truthc                ó,   — g | ]}t          |¦  «        ‘ŒS rN   rv   rw   s     r   ry   z,create_llm_eval_function.<locals>.<listcomp>    rz   r   r{   )rO   rg   r   r…   r   r   r€   )	rP   rE   rS   rU   rV   re   rf   Úground_truth_fnr�   s	            r   Úcreate_llm_eval_functionrˆ   ˆ   sŸ   € ð @CÐLÕ6°sÑ;Ô;Ð;ÈÐõ !ØØØØ!Ø/ðñ ô €Fõ .°;Ô3KÐLÑLÔL€OÝÔ0Ø! 6Ð*Ø'¨Ð9Ø\Ð\À[ÔE[Ð\Ñ\Ô\Ø#;ð	ñ ô €Jð Ðr   N)rE   rF   r   rG   )rP   rQ   rE   rR   rS   rT   rU   r7   rV   rW   r   rX   )rh   ri   r   rj   )rE   rR   rS   rT   rV   rW   r   rX   )rC   Ú
__future__r   Útypingr   r   r   r   Úgoogle.generativeai.notebookr   r	   r
   r   Ú google.generativeai.notebook.libr   r   r   r   r   ÚLLMFunctionr   rO   rg   rr   r‚   rˆ   rN   r   r   ú<module>rŽ      s…  ððð ð #Ð "Ð "Ð "Ð "Ð "à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø >Ð >Ð >Ð >Ð >Ð >Ø =Ð =Ð =Ð =Ð =Ð =Ø :Ð :Ð :Ð :Ð :Ð :Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð'ð 'ð 'ð 'ð '˜lÔ6ñ 'ô 'ð 'ðT:ð :ð :ð :ðð ð ð ð4)ð )ð )ð )ðð ð ð ð(ð ð ð ð ð r   