§
    šŠtj�  ã                   óÀ   — d dl Z d dlmZmZmZmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZ  e j        e¦  «        Z e	ddd¬	¦  «         G d
„ dee¦  «        ¦   «         ZdS )é    N)ÚAnyÚDictÚListÚMappingÚOptional)Ú
deprecated)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictz0.3.1z1.0.0z!langchain_ollama.OllamaEmbeddings)ÚsinceÚremovalÚalternative_importc                   ó&  — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   	 dZ	eed	<   	 d
Z
ee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zeee                  ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 d
Zee         ed<   	 dZeed<   	 d
Zee         ed<   	 ede ee!f         fd„¦   «         Z"d
Z#ee         ed<   	 ede$ee!f         fd„¦   «         Z% e&dd ¬!¦  «        Z'd"edee         fd#„Z(d"ee         deee                  fd$„Z)d%ee         deee                  fd&„Z*d'edee         fd(„Z+d
S ))ÚOllamaEmbeddingsa—  Ollama locally runs large language models.

    To use, follow the instructions at https://ollama.ai/.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import OllamaEmbeddings
            ollama_emb = OllamaEmbeddings(
                model="llama:7b",
            )
            r1 = ollama_emb.embed_documents(
                [
                    "Alpha is the first letter of Greek alphabet",
                    "Beta is the second letter of Greek alphabet",
                ]
            )
            r2 = ollama_emb.embed_query(
                "What is the second letter of Greek alphabet"
            )

    zhttp://localhost:11434Úbase_urlÚllama2Úmodelz	passage: Úembed_instructionzquery: Úquery_instructionNÚmirostatÚmirostat_etaÚmirostat_tauÚnum_ctxÚnum_gpuÚ
num_threadÚrepeat_last_nÚrepeat_penaltyÚtemperatureÚstopÚtfs_zÚtop_kÚtop_pFÚshow_progressÚheadersÚreturnc                 ó´   — | j         | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        dœdœS )z.Get the default parameters for calling Ollama.)r   r   r   r   r   r   r   r   r   r   r    r!   r"   )r   Úoptions)r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   ©Úselfs    úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/ollama.pyÚ_default_paramsz OllamaEmbeddings._default_paramsx   sh   € ð ”Zà œMØ $Ô 1Ø $Ô 1Øœ<Øœ<Ø"œoØ!%Ô!3Ø"&Ô"5Ø#Ô/Øœ	ØœØœØœðð ð
ð 
ð 	
ó    Úmodel_kwargsc                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   r+   r(   s    r*   Ú_identifying_paramsz$OllamaEmbeddings._identifying_params‘   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@r,   Úforbid© )ÚextraÚprotected_namespacesÚinputc                 óÒ  — ddi| j         pi ¥}	 t          j        | j        › d�|| j        |dœ| j        ¥¬¦  «        }n.# t          j        j        $ r}t          d|› �¦  «        ‚d}~ww xY w|j	        dk    rt          d	|j	        ›d
|j
        ›�¦  «        ‚	 |                     ¦   «         }|d         S # t          j        j        $ r}t          d|› d|j
        › �¦  «        ‚d}~ww xY w)z¥Process a response from the API.

        Args:
            response: The response from the API.

        Returns:
            The response as a dictionary.
        zContent-Typezapplication/jsonz/api/embeddings)r   Úprompt)r$   Újsonz$Error raised by inference endpoint: NéÈ   z)Error raised by inference API HTTP code: z, Ú	embeddingzError raised by inference API: z.
Response: )r$   ÚrequestsÚpostr   r   r+   Ú
exceptionsÚRequestExceptionÚ
ValueErrorÚstatus_codeÚtextr7   ÚJSONDecodeError)r)   r4   r$   ÚresÚeÚts         r*   Ú_process_emb_responsez&OllamaEmbeddings._process_emb_response˜   sE  € ð Ð.ð
àŒ|Ð!˜rð
ˆð
	IÝ”-Ø”=Ð1Ð1Ð1ØØ#œz°UÐSÐS¸dÔ>RÐSðñ ô ˆCˆCøõ
 Ô"Ô3ð 	Ið 	Ið 	IÝÐGÀAÐGÐGÑHÔHÐHøøøøð	Iøøøð Œ?˜cÒ!Ð!Ý�*à”?�?�? C¤H Hð.ñô ð ð	Ø—’‘
”
ˆAØ�[”>Ð!øÝÔ"Ô2ð 	ð 	ð 	ÝØL°!ÐLÐLÀ#Ä(ÐLÐLñô ð øøøøð	øøøs-   �.> ¾A)ÁA$Á$A)ÂB3 Â3C&ÃC!Ã!C&c                 ó´   ‡ — ‰ j         rA	 ddlm}  ||d¬¦  «        }n.# t          $ r t                               d¦  «         |}Y nw xY w|}ˆ fd„|D ¦   «         S )Nr   )Útqdmr   )ÚdesczgUnable to show progress bar because tqdm could not be imported. Please install with `pip install tqdm`.c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r1   )rE   )Ú.0r6   r)   s     €r*   ú
<listcomp>z+OllamaEmbeddings._embed.<locals>.<listcomp>Ê   s'   ø€ ÐGÐGÐG°v�×*Ò*¨6Ñ2Ô2ÐGÐGÐGr,   )r#   rG   ÚImportErrorÚloggerÚwarning)r)   r4   rG   Úiter_s   `   r*   Ú_embedzOllamaEmbeddings._embed¼   sž   ø€ ØÔð 	ð	Ø%Ð%Ð%Ð%Ð%Ð%à˜˜UÐ);Ð<Ñ<Ô<��øÝð ð ð Ý—’ð>ñô ð ð ���ðøøøð ˆEØGÐGÐGÐGÀÐGÑGÔGÐGs   Š ž&AÁAÚtextsc                 óN   ‡ — ˆ fd„|D ¦   «         }‰                       |¦  «        }|S )zÅEmbed documents using an Ollama deployed embedding model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                 ó&   •— g | ]}‰j         › |› �‘ŒS r1   )r   )rJ   r@   r)   s     €r*   rK   z4OllamaEmbeddings.embed_documents.<locals>.<listcomp>Õ   s'   ø€ ÐQÐQÐQÀ4 Ô 6Ð>¸Ð>Ð>ÐQÐQÐQr,   )rP   )r)   rQ   Úinstruction_pairsÚ
embeddingss   `   r*   Úembed_documentsz OllamaEmbeddings.embed_documentsÌ   s8   ø€ ð RÐQÐQÐQÈ5ÐQÑQÔQÐØ—[’[Ð!2Ñ3Ô3ˆ
ØÐr,   r@   c                 óT   — | j         › |› �}|                      |g¦  «        d         }|S )zªEmbed a query using a Ollama deployed embedding model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   )r   rP   )r)   r@   Úinstruction_pairr9   s       r*   Úembed_queryzOllamaEmbeddings.embed_queryÙ   s8   € ð #Ô4Ð<°dÐ<Ð<ÐØ—K’KÐ!1Ð 2Ñ3Ô3°AÔ6ˆ	ØÐr,   ),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   r   r   r   r   Úintr   Úfloatr   r   r   r   r   r   r   r   r   r    r!   r"   r#   Úboolr$   ÚdictÚpropertyr   r   r+   r-   r   r/   r   Úmodel_configrE   rP   rV   rY   r1   r,   r*   r   r      sB  € € € € € € ðð ð. -€HˆcÐ,Ð,Ñ,Ø-Ø€Eˆ3ÐÐÑØà(Ð�sÐ(Ð(Ñ(Ø.Ø&Ð�sÐ&Ð&Ñ&Ø.à"€Hˆh�sŒmÐ"Ð"Ñ"ðBð %)€L�(˜5”/Ð(Ð(Ñ(ð5ð
 %)€L�(˜5”/Ð(Ð(Ñ(ð%ð "€GˆX�cŒ]Ð!Ð!Ñ!ð$ð "€GˆX�cŒ]Ð!Ð!Ñ!ð+ð !%€J�˜”Ð$Ð$Ñ$ðNð
 $(€M�8˜C”=Ð'Ð'Ñ'ð=ð '+€N�H˜U”OÐ*Ð*Ñ*ð,ð $(€K�˜%”Ð'Ð'Ñ'ð=ð !%€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$Ø&à!€Eˆ8�EŒ?Ð!Ð!Ñ!ðMð  €Eˆ8�CŒ=ÐÐÑð0ð "€Eˆ8�EŒ?Ð!Ð!Ñ!ðCð  €M�4ÐÐÑØJà"€GˆX�dŒ^Ð"Ð"Ñ"ðð
 ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð* $(€L�(˜4”.Ð'Ð'Ñ'Ø"àðA W¨S°#¨XÔ%6ð Að Að Añ „XðAð �: HÀ2ÐFÑFÔF€Lð"¨3ð "°4¸´;ð "ð "ð "ð "ðHH˜D œIð H¨$¨t°E¬{Ô*;ð Hð Hð Hð Hð  T¨#¤Yð °4¸¸U¼Ô3Dð ð ð ð ð ð ¨¨U¬ð ð ð ð ð ð r,   r   )ÚloggingÚtypingr   r   r   r   r   r:   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr	   Úpydanticr
   r   Ú	getLoggerrZ   rM   r   r1   r,   r*   ú<module>rl      sø   ðØ €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à	ˆÔ	˜8Ñ	$Ô	$€ð €Ø
ØØ:ðñ ô ð
Sð Sð Sð Sð S�y *ñ Sô Sñô ð
Sð Sð Sr,   