o
    ưi                     @   s   d Z ddlmZmZmZ ddlZddlmZ dedee deeef deeef fd	d
Z	de
dee dededededefddZdededee dede
dedefddZ	ddededee de
dededefddZdS )zu
Ollama /chat/completion calls handled in llm_http_handler.py

[TODO]: migrate embeddings to a base handler as well.
    )AnyDictListN)EmbeddingResponsemodelpromptsoptional_paramsreturnc                 C   sf   | |d}g d}|  D ]#\}}||v r|||< q|di  t|d tr0|d ||i q|S )N)r   input)truncateoptions
keep_alive
dimensionsr   )items
setdefault
isinstancedictupdate)r   r   r   dataZspecial_optional_paramskv r   ]/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/ollama/completion/handler.py!_prepare_ollama_embedding_payload   s   

r   response_jsonmodel_responselogging_objencodingc                 C   s   g }| d }t |D ]\}}	|d||	d q
| dd }
|
d u rA|d ur8t|d|}
|r7|d n	d}
|rA|d d	|_||_	d
| |_
tj|
d|
d d d|_|S )N
embeddings	embedding)objectindexr   Zprompt_eval_count zCOllama response missing prompt_eval_count; estimated with encoding.r   zCMissing prompt_eval_count and no encoding provided; defaulted to 0.listzollama/)Zprompt_tokensZcompletion_tokensZtotal_tokensZprompt_tokens_detailsZcompletion_tokens_details)	enumerateappendgetlenencodejoindebugwarningr    r   r   litellmUsageusage)r   r   r   r   r   r   Zoutput_datar   idxZembZinput_tokensr   r   r   "_process_ollama_embedding_response   s:   
r0   api_basec           
         sR   |  ds
| d7 } t|||}tjj| |dI d H }| }	t|	|||||dS Nz
/api/embed)urljson)r   r   r   r   r   r   )endswithr   r,   Zmodule_level_aclientpostr4   r0   )
r1   r   r   r   r   r   r   r   responser   r   r   r   ollama_aembeddingsI   s   
	r8   c           
      C   sJ   |  ds	| d7 } t|||}tjj| |d}| }	t|	|||||dS r2   )r5   r   r,   Zmodule_level_clientr6   r4   r0   )
r1   r   r   r   r   r   r   r   r7   r   r   r   r   ollama_embeddingsd   s   
	r9   )N)__doc__typingr   r   r   r,   Zlitellm.types.utilsr   strr   r   r0   r8   r9   r   r   r   r   <module>   sv    



+
"