Ë
    µŒjNG  ã                  ó  — d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ 	 	 	 	 dd
„Z G d„ de«      Z  G d„ de«      Z! eddd¬«       G d„ dee!«      «       Z"y)é    )ÚannotationsN)
ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚMappingÚOptionalÚTupleÚUnion)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLanguageModel)ÚBaseLLM)ÚGenerationChunkÚ	LLMResult)Ú
ConfigDictc                ó”   — t        j                  | «      }|j                  d«      du r|nd}t        |j                  dd«      |¬«      S )z0Convert a stream response to a generation chunk.ÚdoneTNÚresponseÚ )ÚtextÚgeneration_info)ÚjsonÚloadsÚgetr   )Ústream_responseÚparsed_responser   s      úi/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/ollama.pyÚ$_stream_response_to_generation_chunkr"      sK   € ô —j‘j Ó1€OØ)8×)<Ñ)<¸VÓ)DÈÑ)L‘oÐRV€OÜØ× Ñ  ¨RÓ0À/ôð ó    c                  ó   — e Zd ZdZy)ÚOllamaEndpointNotFoundErrorz-Raised when the Ollama endpoint is not found.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r#   r!   r%   r%   )   s   „ Ú7r#   r%   c                  óz  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 dZd	ed
<   	 dZd	ed<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZd	ed<   	 dZd	ed<   	 dZded<   	 dZd	ed<   	 dZded<   	 dZd	ed<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded <   	 dZd!ed"<   	 dZd#ed$<   	 ed-d%„«       Zed.d&„«       Z	 	 d/	 	 	 	 	 	 	 	 	 d0d'„Z	 	 d/	 	 	 	 	 	 	 	 	 d1d(„Z 	 d2	 	 	 	 	 	 	 	 	 d3d)„Z!	 d2	 	 	 	 	 	 	 	 	 d4d*„Z"	 	 	 d5	 	 	 	 	 	 	 	 	 	 	 d6d+„Z#	 	 	 d5	 	 	 	 	 	 	 	 	 	 	 d7d,„Z$y)8Ú_OllamaCommonzhttp://localhost:11434ÚstrÚbase_urlÚllama2ÚmodelNzOptional[int]ÚmirostatzOptional[float]Úmirostat_etaÚmirostat_tauÚnum_ctxÚnum_gpuÚ
num_threadÚnum_predictÚrepeat_last_nÚrepeat_penaltyÚtemperatureúOptional[List[str]]ÚstopÚtfs_zÚtop_kÚtop_pzOptional[str]ÚsystemÚtemplateÚformatÚtimeoutzOptional[Union[int, str]]Ú
keep_alivezOptional[bool]ÚrawzOptional[dict]ÚheaderszUnion[Callable, Tuple, None]Úauthc                óÄ  — | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  dœ| j                   | j"                  | j$                  | j&                  dœS )z.Get the default parameters for calling Ollama.)r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r?   )r0   rB   Úoptionsr@   rA   rD   rE   )r0   rB   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r?   r@   rA   rD   rE   ©Úselfs    r!   Ú_default_paramsz_OllamaCommon._default_params™   s­   € ð —Z‘ZØ—k‘kà ŸM™MØ $× 1Ñ 1Ø $× 1Ñ 1ØŸ<™<ØŸ<™<Ø"Ÿo™oØ#×/Ñ/Ø!%×!3Ñ!3Ø"&×"5Ñ"5Ø#×/Ñ/ØŸ	™	ØŸ™ØŸ™ØŸ™ñð  —k‘kØŸ™ØŸ/™/Ø—8‘8ñ-
ð 	
r#   c                óP   — i | j                   | j                  dœ¥| j                  ¥S )zGet the identifying parameters.)r0   rB   )r0   rB   rL   rJ   s    r!   Ú_identifying_paramsz!_OllamaCommon._identifying_paramsµ   s(   € ð X˜DŸJ™J°$·+±+Ñ>ÐWÀ$×BVÑBVÐWÐWr#   c              +  óp   K  — ||dœ} | j                   d||| j                  › d�dœ|¤ŽE d {  –—†  y 7 Œ­w©N©ÚpromptÚimagesz/api/generate)Úpayloadr<   Úapi_urlr*   )Ú_create_streamr.   )rK   rR   r<   rS   ÚkwargsrT   s         r!   Ú_create_generate_streamz%_OllamaCommon._create_generate_streamº   sO   è ø€ ð $¨vÑ6ˆØ&�4×&Ñ&ð 
ØØØ—}‘}�o ]Ð3ñ
ð ñ	
÷ 	
ò 	
ús   ‚,6®4¯6c               ó€   K  — ||dœ} | j                   d||| j                  › d�dœ|¤Ž2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wrP   )Ú_acreate_streamr.   )rK   rR   r<   rS   rW   rT   Úitems          r!   Ú_acreate_generate_streamz&_OllamaCommon._acreate_generate_streamÉ   s^   è ø€ ð $¨vÑ6ˆØ.˜$×.Ñ.ð 
ØØØ—}‘}�o ]Ð3ñ
ð ò	
÷ 	�$ð ŒJð	øñ 
ùs   ‚)>«<¯:°<³>º<¼>c                óœ  — | j                   �|�t        d«      ‚| j                   �| j                   }| j                  }| j                  D ]  }||v sŒ||   ||<   Œ d|v r	|d   |d<   nAi |d   ¥d|i¥|j                  «       D ��ci c]  \  }}|| j                  vsŒ||“Œ c}}¥|d<   |j	                  d«      rd|j	                  dg «      i|¥}	n&|j	                  d«      |j	                  dg «      dœ|¥}	t        j                  |dd	it        | j                  t        «      r| j                  ni ¥| j                  |	d
| j                  ¬«      }
d|
_        |
j                  dk7  rO|
j                  dk(  rt        d| j                  › d�«      ‚|
j                   }t        d|
j                  › d|› �«      ‚|
j#                  d
¬«      S c c}}w )Nú2`stop` found in both the input and default params.rI   r<   ÚmessagesrR   rS   rQ   úContent-Typeúapplication/jsonT)ÚurlrF   rG   r   ÚstreamrC   úutf-8éÈ   é”  zwOllama call failed with status code 404. Maybe your model is not found and you should pull the model with `ollama pull z`.ú$Ollama call failed with status code ú. Details: )Údecode_unicode)r<   Ú
ValueErrorrL   Úitemsr   ÚrequestsÚpostÚ
isinstancerF   ÚdictrG   rC   ÚencodingÚstatus_coder%   r0   r   Ú
iter_lines)rK   rU   rT   r<   rW   ÚparamsÚkeyÚkÚvÚrequest_payloadr   Úoptional_details               r!   rV   z_OllamaCommon._create_streamÙ   s  € ð �9‰9Ð  TÐ%5ÜÐQÓRÐRØ�Y‰YÐ"Ø—9‘9ˆDà×%Ñ%ˆà×'Ô'ˆCØ�fŠ}Ø$ S™k��s’ð (ð ˜ÑØ & yÑ 1ˆF�9Òð!Ø˜Ñ#ð!à˜ñ!ð %+§L¡L¤NÔT¡N™D˜A˜q°a¸t×?SÑ?SÒ6S�1�a‘4 NÒTð!ˆF�9Ñð �;‰;�zÔ"Ø)¨7¯;©;°zÀ2Ó+FÐQÈ&ÐQ‰Oð "Ÿ+™+ hÓ/Ø!Ÿ+™+ h°Ó3ñð ðˆOô
 —=‘=ØàÐ 2ðä#-¨d¯l©l¼DÔ#A�4—<’<Àrðð —‘Ø ØØ—L‘Lô

ˆð $ˆÔØ×Ñ 3Ò&Ø×#Ñ# sÒ*Ü1ðGàGKÇzÁzÀlÐRTðVóð ð #+§-¡-�Ü Ø:¸8×;OÑ;OÐ:Pð Q!Ø!0Ð 1ð3óð ð ×"Ñ"°$Ð"Ó7Ð7ùóI Us   ÂGÂGc           	    ó–  K  — | j                   �|�t        d«      ‚| j                   �| j                   }| j                  }| j                  D ]  }||v sŒ||   ||<   Œ d|v r	|d   |d<   nAi |d   ¥d|i¥|j                  «       D ��ci c]  \  }}|| j                  vsŒ||“Œ c}}¥|d<   |j	                  d«      rd|j	                  dg «      i|¥}	n&|j	                  d«      |j	                  dg «      dœ|¥}	t        j                  «       4 ƒd {  –—† }
|
j                  |dd	it        | j                  t        «      r| j                  ni ¥| j                  |	| j                  ¬
«      4 ƒd {  –—† }|j                  dk7  rA|j                  dk(  rt        d«      ‚|j                  }t        d|j                  › d|› �«      ‚|j                   2 3 d {  –—† }|j#                  d«      ­–— Œc c}}w 7 Œá7 Œ†7 Œ#6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wd d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­w)Nr^   rI   r<   r_   rR   rS   rQ   r`   ra   )rb   rF   rG   r   rC   re   rf   z(Ollama call failed with status code 404.rg   rh   rd   )r<   rj   rL   rk   r   ÚaiohttpÚClientSessionrm   rn   rF   ro   rG   rC   Ústatusr%   r   ÚcontentÚdecode)rK   rU   rT   r<   rW   rs   rt   ru   rv   rw   Úsessionr   rx   Úlines                 r!   rZ   z_OllamaCommon._acreate_stream  sY  è ø€ ð �9‰9Ð  TÐ%5ÜÐQÓRÐRØ�Y‰YÐ"Ø—9‘9ˆDà×%Ñ%ˆà×'Ô'ˆCØ�fŠ}Ø$ S™k��s’ð (ð ˜ÑØ & yÑ 1ˆF�9Òð!Ø˜Ñ#ð!à˜ñ!ð %+§L¡L¤NÔT¡N™D˜A˜q°a¸t×?SÑ?SÒ6S�1�a‘4 NÒTð!ˆF�9Ñð �;‰;�zÔ"Ø)¨7¯;©;°zÀ2Ó+FÐQÈ&ÐQ‰Oð "Ÿ+™+ hÓ/Ø!Ÿ+™+ h°Ó3ñð ðˆOô ×(Ñ(×*Ô*¨gØ—|‘|Øà"Ð$6ðä'1°$·,±,ÄÔ'E�t—|’|È2ðð —Y‘YØ$ØŸ™ð $÷ 	ô 	ð Ø—?‘? cÒ)Ø—‘¨#Ò-Ü9ØFóð ð +3¯-©-˜Ü(ØBÀ8Ç?Á?ÐBSð T)Ø)8Ð(9ð;óð ð #+×"2Ò"2÷ /˜$ØŸ+™+ gÓ.Ô.ùóG Uð +øð	øð*/øÐ"2÷+	÷ 	÷ 	÷ 	ó 	ú÷ +×*×*×*Ó*üsÉ   ‚AI	Á4I	ÂG.ÂG.Â$A.I	ÄG4ÄI	ÄAH4Å/G6Å0H4Å3AHÇG:ÇG8
ÇG:ÇHÇ.I	Ç6H4Ç8G:Ç:HÇ;H4ÈH	ÈH4ÈH	ÈHÈH	ÈH4È"I	È-H0È.I	È4IÈ:H=È;IÉI	c                óÆ   — d } | j                   ||fi |¤ŽD ]:  }|sŒt        |«      }|€|}n||z  }|sŒ|j                  |j                  |¬«       Œ< |€t	        d«      ‚|S ©N©Úverbosez$No data received from Ollama stream.)rX   r"   Úon_llm_new_tokenr   rj   ©	rK   rR   r<   Úrun_managerr„   rW   Úfinal_chunkÚstream_respÚchunks	            r!   Ú_stream_with_aggregationz&_OllamaCommon._stream_with_aggregationT  s„   € ð 26ˆØ7˜4×7Ñ7¸ÀÑOÈÔOˆKÚÜ<¸[ÓI�ØÐ&Ø"'‘Kà 5Ñ(�KÚØ×0Ñ0ØŸ
™
Ø 'ð 1õ ð Pð ÐÜÐCÓDÐDàÐr#   c              ‹  óò   K  — d } | j                   ||fi |¤Ž2 3 d {  –—† }|sŒt        |«      }|€|}n||z  }|sŒ$|j                  |j                  |¬«      ƒ d {  –—†  ŒJ7 ŒE7 Œ6 |€t	        d«      ‚|S ­wr‚   )r\   r"   r…   r   rj   r†   s	            r!   Ú_astream_with_aggregationz'_OllamaCommon._astream_with_aggregationn  s£   è ø€ ð 26ˆØ!> ×!>Ñ!>¸vÀtÑ!VÈvÒ!V÷ 	�+ÚÜ<¸[ÓI�ØÐ&Ø"'‘Kà 5Ñ(�KÚØ%×6Ñ6ØŸ
™
Ø 'ð 7ó ÷ ñ ð	øðøð "Wð ÐÜÐCÓDÐDàÐùsA   ‚A7™A'�A#žA'¡A7¥A7½ A7ÁA%ÁA7Á#A'Á%A7Á'A7)ÚreturnzDict[str, Any])rŽ   zMapping[str, Any]©NN)
rR   r-   r<   r;   rS   r;   rW   r   rŽ   úIterator[str])
rR   r-   r<   r;   rS   r;   rW   r   rŽ   úAsyncIterator[str])N)
rU   r-   rT   r   r<   r;   rW   r   rŽ   r�   )
rU   r-   rT   r   r<   r;   rW   r   rŽ   r‘   )NNF)rR   r-   r<   r;   r‡   ú"Optional[CallbackManagerForLLMRun]r„   ÚboolrW   r   rŽ   r   )rR   r-   r<   r;   r‡   ú'Optional[AsyncCallbackManagerForLLMRun]r„   r“   rW   r   rŽ   r   )%r&   r'   r(   r.   Ú__annotations__r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   ÚpropertyrL   rN   rX   r\   rV   rZ   r‹   r�   r*   r#   r!   r,   r,   -   s0  … Ø,€HˆcÓ,Ø-à€Eˆ3ÓØà"€HˆmÓ"ðBð %)€L�/Ó(ð5ð
 %)€L�/Ó(ð%ð "€Gˆ]Ó!ð$ð "€Gˆ]Ó!ð+ð !%€J�Ó$ðNð
 "&€K�Ó%ðCð $(€M�=Ó'ð=ð '+€N�OÓ*ð,ð $(€K�Ó'ð=ð !%€DÐ
Ó$Ø&à!€Eˆ?Ó!ðMð  €Eˆ=Óð0ð "€Eˆ?Ó!ðCð !€FˆMÓ ØDà"€HˆmÓ"ØUà €FˆMÓ Ø7à!€Gˆ]Ó!Ø(à,0€JÐ)Ó0ð	_ð €CˆÓØà"€Gˆ^Ó"ðð
 *.€DÐ
&Ó-ðTð ò
ó ð
ð6 òXó ðXð %)Ø&*ð	
àð
ð "ð
ð $ð	
ð
 ð
ð 
ó
ð$ %)Ø&*ð	àðð "ðð $ð	ð
 ðð 
óð( %)ð	<8àð<8ð ð<8ð "ð	<8ð
 ð<8ð 
ó<8ðD %)ð	;/àð;/ð ð;/ð "ð	;/ð
 ð;/ð 
ó;/ð@ %)Ø:>Øðàðð "ðð 8ð	ð
 ðð ðð 
óð: %)Ø?CØðàðð "ðð =ð	ð
 ðð ðð 
ôr#   r,   z0.3.1z1.0.0zlangchain_ollama.OllamaLLM)ÚsinceÚremovalÚalternative_importc                  óÐ   ‡ — e Zd ZdZ ed¬«      Zed	d„«       Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z		 	 d	 	 	 	 	 	 	 	 	 dd„Z
	 	 d	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚOllamazúOllama locally runs large language models.
    To use, follow the instructions at https://ollama.ai/.
    Example:
        .. code-block:: python
            from langchain_community.llms import Ollama
            ollama = Ollama(model="llama2")
    Úforbid)Úextrac                 ó   — y)zReturn type of llm.z
ollama-llmr*   rJ   s    r!   Ú	_llm_typezOllama._llm_type›  s   € ð r#   c           	     ó�   •— g }|D ]3  }t        ‰	| �  |f|||| j                  dœ|¤Ž}|j                  |g«       Œ5 t	        |¬«      S )ád  Call out to Ollama's generate endpoint.
        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.
        Returns:
            The string generated by the model.
        Example:
            .. code-block:: python
                response = ollama("Tell me a joke.")
        ©r<   rS   r‡   r„   ©Úgenerations)Úsuperr‹   r„   Úappendr   ©
rK   Úpromptsr<   rS   r‡   rW   r¤   rR   rˆ   Ú	__class__s
            €r!   Ú	_generatezOllama._generate   sd   ø€ ð& ˆÛˆFÜ™'Ñ:ØðàØØ'ØŸ™ñð ñˆKð ×Ñ ˜}Õ-ð ô  [Ô1Ð1r#   c           	   ‹  ó¬   •K  — g }|D ];  }t        ‰	| �  |f|||| j                  dœ|¤Žƒ d{  –—† }|j                  |g«       Œ= t	        |¬«      S 7 Œ$­w)r¡   r¢   Nr£   )r¥   r�   r„   r¦   r   r§   s
            €r!   Ú
_ageneratezOllama._agenerateÀ  sr   øè ø€ ð& ˆÛˆFÜ %¡Ñ AØð!àØØ'ØŸ™ñ!ð ñ!÷ ˆKð ×Ñ ˜}Õ-ð ô  [Ô1Ð1ðús   ƒ*A­A®%Ac              +  ó´   K  —  | j                   ||fi |¤ŽD ]=  }|sŒt        |«      }|r'|j                  |j                  | j                  ¬«       |–— Œ? y ­w©Nrƒ   )rX   r"   r…   r   r„   ©rK   rR   r<   r‡   rW   r‰   rŠ   s          r!   Ú_streamzOllama._streamà  s_   è ø€ ð 8˜4×7Ñ7¸ÀÑOÈÔOˆKÚÜ<¸[ÓI�ÙØ×0Ñ0ØŸ
™
Ø $§¡ð 1ô ð “ñ Pùs
   ‚A�;Ac               óÚ   K  —  | j                   ||fi |¤Ž2 3 d {  –—† }|sŒt        |«      }|r/|j                  |j                  | j                  ¬«      ƒ d {  –—†  |­–— ŒN7 ŒI7 Œ6 y ­wr®   )r\   r"   r…   r   r„   r¯   s          r!   Ú_astreamzOllama._astreamñ  sz   è ø€ ð "? ×!>Ñ!>¸vÀtÑ!VÈvÒ!V÷ 	�+ÚÜ<¸[ÓI�ÙØ%×6Ñ6ØŸ
™
Ø $§¡ð 7ó ÷ ð ð ”ð	øðøñ	 "Wùs<   ‚A+—A)›A%œA)ŸA+£7A+ÁA'Á
A+Á%A)Á'A+Á)A+)rŽ   r-   )NNN)r¨   z	List[str]r<   r;   rS   r;   r‡   r’   rW   r   rŽ   r   r�   )
rR   r-   r<   r;   r‡   r’   rW   r   rŽ   zIterator[GenerationChunk])
rR   r-   r<   r;   r‡   r”   rW   r   rŽ   zAsyncIterator[GenerationChunk])r&   r'   r(   r)   r   Úmodel_configr–   rŸ   rª   r¬   r°   r²   Ú__classcell__)r©   s   @r!   r›   r›   ‰  s;  ø„ ññ Øô€Lð òó ðð %)Ø&*Ø:>ð2àð2ð "ð2ð $ð	2ð
 8ð2ð ð2ð 
õ2ðF %)Ø&*Ø:>ð2àð2ð "ð2ð $ð	2ð
 8ð2ð ð2ð 
õ2ðF %)Ø:>ð	àðð "ðð 8ð	ð
 ðð 
#óð( %)Ø?Cð	àðð "ðð =ð	ð
 ðð 
(÷r#   r›   )r   r-   rŽ   r   )#Ú
__future__r   r   Útypingr   r   r   r   r   r	   r
   r   r   r   rz   rl   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   r   Úlangchain_core.language_modelsr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   Úpydanticr   r"   Ú	Exceptionr%   r,   r›   r*   r#   r!   Ú<module>r¾      s—   ðÝ "ã ÷÷ ÷ ó Û Ý 6÷õ =Ý 7ß =Ý ðØðàóô8 )ô 8ôYÐ%ô Yñx
 Ø
ØØ3ôô
rˆW�mó róñ
rr#   