§
    é˜ºhx4  ã                  ó|  — d dl mZ d dlZd dlmZmZ d dlmc 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
œdEd„Zdd
œdFd„Zdd
œdGd„Z	 dHdId„ZdddœdJd„ZdddœdKd!„Zdddddddddd"d#dd$œdLd7„Zej        	 dHdd
œdMd<„¦   «         Zej        dd
œdNd>„¦   «         Z	 dHdd
œdOdA„ZdB„ ZdC„ Z	 dHdPdD„ZdS )Qé    )ÚannotationsN)ÚAnyÚLiteral)Ú
operations)Úget_default_model_client)Úmodel_types)Ú	operation)Úprotobuf_helpers)Úfield_mask_pb2©ÚclientÚnameúmodel_types.AnyModelNameOptionsÚreturnú*model_types.Model | model_types.TunedModelc               óà   — t          j        | ¦  «        } |                      d¦  «        rt          | |¬¦  «        S |                      d¦  «        rt	          | |¬¦  «        S t          d¦  «        ‚)aY  Given a model name, fetch the `types.Model` or `types.TunedModel` object.

    ```
    import pprint
    model = genai.get_tuned_model(model_name):
    pprint.pprint(model)
    ```

    Args:
        name: The name of the model to fetch.
        client: The client to use.

    Returns:
        A `types.Model` or `types.TunedModel` object.
    úmodels/r   útunedModels/z7Model names must start with `models/` or `tunedModels/`)r   Úmake_model_nameÚ
startswithÚget_base_modelÚget_tuned_modelÚ
ValueError)r   r   s     úb/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/google/generativeai/models.pyÚ	get_modelr      ss   € õ$ Ô& tÑ,Ô,€DØ‡‚�yÑ!Ô!ð TÝ˜d¨6Ð2Ñ2Ô2Ð2Ø	�Š˜Ñ	(Ô	(ð TÝ˜t¨FÐ3Ñ3Ô3Ð3åÐRÑSÔSÐSó    ú model_types.BaseModelNameOptionsúmodel_types.Modelc               ó*  — |€t          ¦   «         }t          j        | ¦  «        } |                      d¦  «        st	          d| › �¦  «        ‚|                     | ¬¦  «        }t          |¦  «                             |¦  «        }t          j        di |¤ŽS )a.  Get the `types.Model` for the given base model name.

    ```
    import pprint
    model = genai.get_model('models/chat-bison-001'):
    pprint.pprint(model)
    ```

    Args:
        name: The name of the model to fetch.
        client: The client to use.

    Returns:
        A `types.Model`.
    Nr   z1Base model names must start with `models/`, got: ©r   © )	r   r   r   r   r   r   ÚtypeÚto_dictÚModel©r   r   Úresults      r   r   r   8   s–   € ð  €~Ý)Ñ+Ô+ˆåÔ& tÑ,Ô,€DØ�?Š?˜9Ñ%Ô%ð UÝÐSÈTÐSÐSÑTÔTÐTà×Ò 4ÐÑ(Ô(€FÝ�&‰\Œ\×!Ò! &Ñ)Ô)€FÝÔÐ&Ð&˜vÐ&Ð&Ð&r   ú!model_types.TunedModelNameOptionsúmodel_types.TunedModelc               óæ   — |€t          ¦   «         }t          j        | ¦  «        } |                      d¦  «        st	          d¦  «        ‚|                     | ¬¦  «        }t          j        |¦  «        S )aC  Get the `types.TunedModel` for the given tuned model name.

    ```
    import pprint
    model = genai.get_tuned_model('tunedModels/my-model-1234'):
    pprint.pprint(model)
    ```

    Args:
        name: The name of the model to fetch.
        client: The client to use.

    Returns:
        A `types.TunedModel`.
    Nr   z0Tuned model names must start with `tunedModels/`r    )r   r   r   r   r   r   Údecode_tuned_modelr%   s      r   r   r   T   so   € ð$ €~Ý)Ñ+Ô+ˆåÔ& tÑ,Ô,€Dà�?Š?˜>Ñ*Ô*ð MÝÐKÑLÔLÐLà×#Ò#¨Ð#Ñ.Ô.€FåÔ)¨&Ñ1Ô1Ð1r   Úmodelr   úglm.ModelServiceClient | Nonec                óö  — t          | t          ¦  «        r1|                      d¦  «        rt          | |¬¦  «        } | j        }nµ| }n²t          | t
          j        ¦  «        r| j        }n�t          | t
          j        ¦  «        r| j        }nnt          | t          j        ¦  «        r| j        }nLt          | t          j        ¦  «        r t          | dd ¦  «        }|s| j        j        }nt          d| › �¦  «        ‚|S )Nr   r   Ú
base_modelzCannot understand model: )Ú
isinstanceÚstrr   r   r.   r   Ú
TunedModelr$   r   ÚglmÚgetattrÚtuned_model_sourceÚ	TypeError)r+   r   r.   s      r   Úget_base_model_namer6   s   sÿ   € õ �%�ÑÔð =Ø×Ò˜NÑ+Ô+ð 	Ý˜e¨FÐ3Ñ3Ô3ˆEØÔ)ˆJˆJàˆJˆJÝ	�E�;Ô1Ñ	2Ô	2ð =ØÔ%ˆ
ˆ
Ý	�E�;Ô,Ñ	-Ô	-ð 	=Ø”Zˆ
ˆ
Ý	�E�3œ9Ñ	%Ô	%ð =Ø”Zˆ
ˆ
Ý	�E�3œ>Ñ	*Ô	*ð =Ý˜U L°$Ñ7Ô7ˆ
Øð 	=ØÔ1Ô<ˆJøåÐ;°EÐ;Ð;Ñ<Ô<Ð<àÐr   é2   )Ú	page_sizer   r8   ú
int | Noneúmodel_types.ModelsIterablec              #  óÆ   K  — |€t          ¦   «         }|                     | ¬¦  «        D ]7}t          |¦  «                             |¦  «        }t	          j        di |¤ŽV — Œ8dS )a`  Lists available models.

    ```
    import pprint
    for model in genai.list_models():
        pprint.pprint(model)
    ```

    Args:
        page_size: How many `types.Models` to fetch per page (api call).
        client: You may pass a `glm.ModelServiceClient` instead of using the default client.

    Yields:
        `types.Model` objects.

    N©r8   r!   )r   Úlist_modelsr"   r#   r   r$   ©r8   r   r+   s      r   r=   r=   Œ   s{   è è € ð* €~Ý)Ñ+Ô+ˆà×#Ò#¨iÐ#Ñ8Ô8ð )ð )ˆÝ�U‘”×#Ò# EÑ*Ô*ˆÝÔÐ(Ð( %Ð(Ð(Ð(Ð(Ð(Ð(ð)ð )r   úmodel_types.TunedModelsIterablec              #  óÌ   K  — |€t          ¦   «         }|                     | ¬¦  «        D ]:}t          |¦  «                             |¦  «        }t	          j        |¦  «        V — Œ;dS )aj  Lists available models.

    ```
    import pprint
    for model in genai.list_tuned_models():
        pprint.pprint(model)
    ```

    Args:
        page_size: How many `types.Models` to fetch per page (api call).
        client: You may pass a `glm.ModelServiceClient` instead of using the default client.

    Yields:
        `types.TunedModel` objects.
    Nr<   )r   Úlist_tuned_modelsr"   r#   r   r*   r>   s      r   rA   rA   ©   su   è è € ð( €~Ý)Ñ+Ô+ˆà×)Ò)°IÐ)Ñ>Ô>ð 4ð 4ˆÝ�U‘”×#Ò# EÑ*Ô*ˆÝÔ,¨UÑ3Ô3Ð3Ð3Ð3Ð3ð4ð 4r   Ú
text_inputÚoutput)ÚidÚdisplay_nameÚdescriptionÚtemperatureÚtop_pÚtop_kÚepoch_countÚ
batch_sizeÚlearning_rateÚ	input_keyÚ
output_keyr   Úsource_modelÚtraining_dataúmodel_types.TuningDataOptionsrD   ú
str | NonerE   rF   rG   úfloat | NonerH   rI   rJ   rK   rL   rM   r0   rN   ú$operations.CreateTunedModelOperationc               ó>  — |€t          ¦   «         }t          j        | ¦  «        }t          | ¦  «        }|                     d¦  «        rd|i} n0|                     d¦  «        rd||dœi} nt          d| ›d�¦  «         t          j        |||¬	¦  «        }t          j        ||	|
¬
¦  «        }t          j	        ||¬¦  «        }t          j
        di | ¤||||||dœ¤Ž}|                     t          ||¬¦  «        ¦  «        }t          j                             |¦  «        S )až
  Launches a tuning job to create a TunedModel.

    Since tuning a model can take significant time, this API doesn't wait for the tuning to complete.
    Instead, it returns a `google.api_core.operation.Operation` object that lets you check on the
    status of the tuning job, or wait for it to complete, and check the result.

    After the job completes you can either find the resulting `TunedModel` object in
    `Operation.result()` or `palm.list_tuned_models` or `palm.get_tuned_model(model_id)`.

    ```
    my_id = "my-tuned-model-id"
    operation = palm.create_tuned_model(
      id = my_id,
      source_model="models/text-bison-001",
      training_data=[{'text_input': 'example input', 'output': 'example output'},...]
    )
    tuned_model=operation.result()      # Wait for tuning to finish

    palm.generate_text(f"tunedModels/{my_id}", prompt="...")
    ```

    Args:
        source_model: The name of the model to tune.
        training_data: The dataset to tune the model on. This must be either:
          * A `glm.Dataset`, or
          * An `Iterable` of:
            *`glm.TuningExample`,
            * {'text_input': text_input, 'output': output} dicts, or
            * `(text_input, output)` tuples.
          * A `Mapping` of `Iterable[str]` - use `input_key` and `output_key` to choose which
            columns to use as the input/output
          * A csv file (will be read with `pd.read_csv` and handles as a `Mapping`
            above). This can be:
            * A local path as a `str` or `pathlib.Path`.
            * A url for a csv file.
            * The url of a Google Sheets file.
          * A JSON file - Its contents will be handled either as an `Iterable` or `Mapping`
            above. This can be:
            * A local path as a `str` or `pathlib.Path`.
        id: The model identifier, used to refer to the model in the API
          `tunedModels/{id}`. Must be unique.
        display_name: A human-readable name for display.
        description: A description of the tuned model.
        temperature: The default temperature for the tuned model, see `types.Model` for details.
        top_p: The default `top_p` for the model, see `types.Model` for details.
        top_k: The default `top_k` for the model, see `types.Model` for details.
        epoch_count: The number of tuning epochs to run. An epoch is a pass over the whole dataset.
        batch_size: The number of examples to use in each training batch.
        learning_rate: The step size multiplier for the gradient updates.
        client: Which client to use.

    Returns:
        A [`google.api_core.operation.Operation`](https://googleapis.dev/python/google-api-core/latest/operation.html)
    Nr   r.   r   r4   )Útuned_modelr.   zNot understood: `source_model=ú`)rM   rN   )rJ   rK   rL   )rP   Úhyperparameters)rE   rF   rG   rH   rI   Útuning_task)Útuned_model_idrV   r!   )r   r   r   r6   r   r   Úencode_tuning_datar2   ÚHyperparametersÚ
TuningTaskr1   Úcreate_tuned_modelÚdictr   ÚCreateTunedModelOperationÚfrom_core_operation)rO   rP   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   Úsource_model_nameÚbase_model_namerX   rY   rV   r	   s                       r   r^   r^   Å   s|  € ðP €~Ý)Ñ+Ô+ˆå#Ô3°LÑAÔAÐÝ)¨,Ñ7Ô7€OØ×#Ò# IÑ.Ô.ð 
9Ø$Ð&7Ð8ˆˆØ	×	%Ò	% nÑ	5Ô	5ð 9à Ø0Ø-ð#ð #ð
ˆˆõ 	Ð7 |Ð7Ð7Ð7Ñ8Ô8Ð8åÔ2Ø °zðñ ô €Mõ Ô)ØØØ#ðñ ô €Oõ
 ”.Ø#Ø'ðñ ô €Kõ
 ”.ð ð Ø
ðà!ØØØØØðð ð ð €Kð ×)Ò)­$¸bÈkÐ*ZÑ*ZÔ*ZÑ[Ô[€IåÔ/×CÒCÀIÑNÔNÐNr   rV   úglm.TunedModelÚupdatesÚNonec               ó   — d S ©Nr!   ©rV   re   r   s      r   Úupdate_tuned_modelrj   :  ó	   € ð 	€Dr   údict[str, Any]c               ó   — d S rh   r!   ri   s      r   rj   rj   D  rk   r   ústr | glm.TunedModelúdict[str, Any] | Nonec               ól  — |€t          ¦   «         }t          | t          ¦  «        rË| }t          |t          ¦  «        st	          dt          |¦  «        › �¦  «        ‚|                     |¬¦  «        } t          |¦  «        }t          j	        ¦   «         }| 
                    ¦   «         D ]}|j                             |¦  «         Œ|                     ¦   «         D ]\  }}t          | ||¦  «         Œnˆt          | t          j        ¦  «        rN|�t#          d¦  «        ‚| j        }|                     |¬¦  «        }t'          j        |j        | j        ¦  «        }n t	          dt          | ¦  «        › d�¦  «        ‚|                     t          j        | |¬¦  «        ¦  «        }t1          j        |¦  «        S )zGPush updates to the tuned model. Only certain attributes are updatable.Nz]When calling `update_tuned_model(name:str, updates: dict)`,
`updates` must be a `dict`.
got: r    zfWhen calling `update_tuned_model(tuned_model:glm.TunedModel, updates=None)`,`updates` must not be set.zxFor `update_tuned_model(tuned_model:dict|glm.TunedModel)`,`tuned_model` must be a `dict` or a `glm.TunedModel`. Got a: `rW   )rV   Úupdate_mask)r   r/   r0   r_   r5   r"   r   Ú_flatten_update_pathsr   Ú	FieldMaskÚkeysÚpathsÚappendÚitemsÚ_apply_updater2   r1   r   r   r
   Ú
field_maskÚ_pbrj   ÚUpdateTunedModelRequestr   r*   )	rV   re   r   r   ry   ÚpathÚvalueÚwasr&   s	            r   rj   rj   N  sÜ  € ð €~Ý)Ñ+Ô+ˆå�+�sÑ#Ô#ð 
ØˆÝ˜'¥4Ñ(Ô(ð 	Ýð(å˜W™œð(ð (ñô ð ð
 ×,Ò,°$Ð,Ñ7Ô7ˆå'¨Ñ0Ô0ˆÝ#Ô-Ñ/Ô/ˆ
Ø—L’L‘N”Nð 	*ð 	*ˆDØÔ×#Ò# DÑ)Ô)Ð)Ð)Ø"Ÿ=š=™?œ?ð 	4ð 	4‰KˆD�%Ý˜+ t¨UÑ3Ô3Ð3Ð3ð	4å	�K¥¤Ñ	0Ô	0ð 
ØÐÝð-ñô ð ð
 ÔˆØ×$Ò$¨$Ð$Ñ/Ô/ˆÝ%Ô0°´¸+¼/ÑJÔJˆ
ˆ
åðbÝMQÐR]ÑM^ÔM^ðbð bð bñ
ô 
ð 	
ð
 ×&Ò&ÝÔ#°ÈÐTÑTÔTñô €Fõ Ô)¨&Ñ1Ô1Ð1r   c                óÖ   — i }|                       ¦   «         D ]Q\  }}t          |t          ¦  «        r2t          |¦  «                              ¦   «         D ]\  }}|||› d|› �<   ŒŒL|||<   ŒR|S )Nú.)rw   r/   r_   rr   )re   Únew_updatesÚkeyr}   Úsub_keyÚ	sub_values         r   rr   rr   ~  s‘   € Ø€KØ—m’m‘o”oð %ð %‰
ˆˆUÝ�e�TÑ"Ô"ð 	%Ý&;¸EÑ&BÔ&B×&HÒ&HÑ&JÔ&Jð <ð <Ñ"�˜Ø2;�˜sÐ.Ð. WÐ.Ð.Ñ/Ð/ð<ð  %ˆK˜ÑÐàÐr   c                ó˜   — |                      d¦  «        }|d d…         D ]}t          | |¦  «        } Œt          | |d         |¦  «         d S )Nr€   éÿÿÿÿ)Úsplitr3   Úsetattr)Úthingr|   r}   ÚpartsÚparts        r   rx   rx   Š  sU   € Ø�JŠJ�s‰OŒO€EØ�c�r�c”
ð %ð %ˆÝ˜˜tÑ$Ô$ˆˆÝˆE�5˜”9˜eÑ$Ô$Ð$Ð$Ð$r   c                óz   — |€t          ¦   «         }t          j        | ¦  «        }|                     |¬¦  «         d S )Nr    )r   r   r   Údelete_tuned_model)rV   r   r   s      r   r�   r�   ‘  sA   € ð €~Ý)Ñ+Ô+ˆåÔ& {Ñ3Ô3€DØ
×Ò 4ÐÑ(Ô(Ð(Ð(Ð(r   )r   r   r   r   )r   r   r   r   )r   r'   r   r(   rh   )r+   r   r   r,   )r8   r9   r   r,   r   r:   )r8   r9   r   r,   r   r?   )rO   r   rP   rQ   rD   rR   rE   rR   rF   rR   rG   rS   rH   rS   rI   r9   rJ   r9   rK   r9   rL   rS   rM   r0   rN   r0   r   r,   r   rT   )rV   rd   re   rf   r   r,   r   r(   )rV   r0   re   rl   r   r,   r   r(   )rV   rn   re   ro   r   r,   r   r(   )rV   r'   r   r,   r   rf   ) Ú
__future__r   Útypingr   r   Úgoogle.ai.generativelanguageÚaiÚgenerativelanguager2   Úgoogle.generativeair   Úgoogle.generativeai.clientr   Úgoogle.generativeai.typesr   Úgoogle.api_corer	   r
   Úgoogle.protobufr   r   r   r   r6   r=   rA   r^   Úoverloadrj   rr   rx   r�   r!   r   r   ú<module>r™      sÑ  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *ð 6:ðTð Tð Tð Tð Tð Tð6 FJð 'ð 'ð 'ð 'ð 'ð 'ð: 8<ð2ð 2ð 2ð 2ð 2ð 2ð@ UYðð ð ð ð ð6 Ø,0ð)ð )ð )ð )ð )ð )ð> Ø,0ð4ð 4ð 4ð 4ð 4ð 4ð@ Ø#Ø"Ø $ØØØ"Ø!Ø"&Ø!ØØ,0ðrOð rOð rOð rOð rOð rOðj „ð ð	ð -1ð		ð 	ð 	ð 	ð 	ñ „ð	ð „ð
 -1ð		ð 	ð 	ð 	ð 	ñ „ð	ð &*ð-2ð -1ð	-2ð -2ð -2ð -2ð -2ð -2ð`	ð 	ð 	ð%ð %ð %ð -1ð)ð )ð )ð )ð )ð )ð )r   