+
    )j                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt  ! R R]	4      t
]! RR7       ! R R	4      4       t ! R
 R4      tR# )    )annotationsN)	dataclassc                      ] tR t^
tRtR# )OllamaError N)__name__
__module____qualname____firstlineno____static_attributes__r       src/pataniscai/ollama.pyr   r   
   s    r   r   T)frozenc                  6    ] tR t^t$ R]R&   R]R&   R]R&   RtR# )OllamaResultstrtextint
eval_counttotal_duration_nsr   N)r   r	   r
   r   __annotations__r   r   r   r   r   r      s    
IOr   r   c                  Z    ] tR t^tR R ltRR R lltR R ltR R	 ltRR
 R lltRt	R# )OllamaClientc               (    V ^8  d   QhRRRRRRRR/# )   base_urlr   modeltimeoutr   returnNoner   )formats   "r   __annotate__OllamaClient.__annotate__   s(       S 3 4 r   c                	J    VP                  R 4      V n        W n        W0n        R# )/N)rstripr   r   r   )selfr   r   r   s   &&&&r   __init__OllamaClient.__init__   s     ,
r   Nc               $    V ^8  d   QhRRRRRR/# )r   pathr   bodyzdict | Noner   dictr   )r!   s   "r   r"   r#      s!      S  t r   c                	   Vf   R M$\         P                  ! V4      P                  R4      p\        P                  P                  V P                   V 2TRR/Vf   RMRR7      p \        P                  P                  W@P                  R7      ;_uu_ 4       pVP                  4       pR R R 4        \         P                  ! X4      p\!        T\"        4      '       g   \        R
4      hT#   + '       g   i     LJ; i  \        P                  P                  \        3 d   p\        R4      ThR p?ii ; i  \         P                   d   p\        R	4      ThR p?ii ; i)Nzutf-8zContent-Typezapplication/jsonGETPOST)dataheadersmethod)r   z-Ollama indisponivel ou excedeu o tempo limitezOllama devolveu JSON invalidoz'Ollama devolveu uma resposta inesperada)jsondumpsencodeurllibrequestRequestr   urlopenr   readerrorURLErrorTimeoutErrorr   loadsJSONDecodeError
isinstancer-   )	r'   r+   r,   r1   r8   responsepayloadexcdecodeds	   &&&      r   _requestOllamaClient._request   s(   |tD)9)@)@)I..((}}odV$#%78 L5f	 ) 
	X'''FF("--/ G	Hjj)G '4((GHH GF%%|4 	XMNTWW	X ## 	H=>CG	HsN   &2C> C+)C> 2D7 +C;	6C> ;C> >%D4#D//D47EEEc                   V ^8  d   QhRR/# )r   r   r-   r   )r!   s   "r   r"   r#   0   s     
 
 
r   c                	  a  S P                  R 4      pS P                  R4      pVP                  R. 4       Uu. uF-  p\        V\        4      '       g   K  VP                  RR4      NK/  	  pp. p S P                  R4      pVP                  R. 4       Uu. uF  p\        V\        4      '       g   K  VNK  	  pp\        V 3R lV 4       R4      pRVP                  RR4      R	S P                  V9   R
\        V4      RRVRJRV'       d(   \        VP                  R^ 4      ;'       g    ^ 4      //# ^ //# u upi u upi   \         d    . p Li ; i)z/api/versionz	/api/tagsmodelsname z/api/psc              3  l   <"   T F)  qP                  R R4      SP                  8X  g   K%  Vx  K+  	  R# 5i)rK   rL   N)getr   ).0itemr'   s   & r   	<genexpr>&OllamaClient.health.<locals>.<genexpr>=   s'     Kfd(<

(JTTfs   "4
4Nversionmodel_availablemodels_countgpumodel_loaded
vram_bytes	size_vram)	rF   rN   rA   r-   r   nextr   lenr   )r'   rS   tagsrP   rJ   loadedrunningactives   f       r   healthOllamaClient.health0   sQ   --/}}[)3788Hb3Id3I4ZX\^bMc&$((62&3Id	mmI.G'.{{8R'@['@tJtUYDZdd'@F[
 KfK

 w{{9b1tzzV3CKd 2fc&**[!"<"A"AB	
 	
 ST	
 	
 e \ 	 F	s5   D5D50%D? D:2D:8D? :D? ?EEc                   V ^8  d   QhRR/# )r   r   r    r   )r!   s   "r   r"   r#   J   s     
 
d 
r   c                N    V P                  RRV P                  RRRRRR	/4       R# )
z@Carrega o modelo sem inferencia e mantem-no residente no Ollama./api/generater   promptrL   streamF
keep_aliveN)rF   r   )r'   s   &r   loadOllamaClient.loadJ   s)    djj(B%rR	
r   c               (    V ^8  d   QhRRRRRRRR/# )r   imagebytesre   r   document_typer   r   r   )r!   s   "r   r"   r#   Q   s)     6
 6
 6
s 6
3 6
P\ 6
r   c                	>   V P                   P                  4       pVP                  R 4      '       d   R^ RRR^RRRRR	R
R./pM7R^ RRRRRR/pVP                  4       P                  4       R8X  d   R^ R^RRR^@/p\        P
                  ! V4      P                  R4      pV P                  RRV P                   RVRV.RRRRRR"RV/4      p\        VP                  RR4      4      P                  4       pVP                  R 4      '       d9   R# F2  p	W9   g   K  VP                  V	^4      ^ ,          P                  4       pK4  	  VR8X  d   Rp\        T\        VP                  R^ 4      ;'       g    ^ 4      \        VP                  R ^ 4      ;'       g    ^ 4      R!7      # )$zglm-ocrtemperaturetop_pgh㈵>top_knum_predicti`	  repeat_penaltyg?stopz```markdownz```
```ix  gffffff?repeat_last_n   cc_frente_identificacaog?asciird   r   re   imagesrf   Fthinkrg   optionsrB   rL   z[NAO_LEGIVEL]r   total_duration)r   r   r   rh   )z
```markdownz
```
```)r   lower
startswithstripbase64	b64encodedecoderF   r   rN   splitr&   r   r   )
r'   rl   re   rn   
model_namer|   encoded_imagerC   r   markers
   &&&&      r   
transcribeOllamaClient.transcribeQ   s   ZZ%%'
  ++qt # 
3	G qt $	G ""$**,0II
 "1!3$d#R	 ((/66w?--&=/%b7
 7;;z2./557  ++9>::fa03::<D : ?"D7;;|Q7<<1=!'++.>"B"G"GaH
 	
r   )r   r   r   )N)rL   )
r   r	   r
   r   r(   rF   r`   ri   r   r   r   r   r   r   r      s     
*
4
6
 6
r   r   )
__future__r   r   r4   urllib.errorr7   urllib.requestdataclassesr   RuntimeErrorr   r   r   r   r   r   <module>r      sM    "     !	, 	 $  r
 r
r   