
    j                         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	Z	d
e
dee   dededededefdZdededee   dede
dedefdZ	 ddededee   de
dededefdZy)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                     | |d}g d}|j                         D ]K  \  }}||v r|||<   |j                  di        t        |d   t              s6|d   j	                  ||i       M |S )N)r   input)truncateoptions
keep_aliver   )items
setdefault
isinstancedictupdate)r   r   r	   dataspecial_optional_paramskvs          /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/ollama/completion/handler.py!_prepare_ollama_embedding_payloadr      sv     &+W=DC%%'1''DGOOIr*$y/40Y&&1v. ( K    response_jsonmodel_responselogging_objencodingc                    g }| d   }t        |      D ]  \  }}	|j                  d||	d        | j                  dd       }
|
T|=t        |j	                  dj                  |                  }
|r'|j                  d       nd}
|r|j                  d       d	|_        ||_	        d
|z   |_
        t        j                  |
d|
d d       |_        |S )N
embeddings	embedding)objectindexr"   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/)prompt_tokenscompletion_tokenstotal_tokensprompt_tokens_detailscompletion_tokens_details)	enumerateappendgetlenencodejoindebugwarningr#   r   r   litellmUsageusage)r   r   r   r   r   r   output_datar!   idxembinput_tokenss              r   "_process_ollama_embedding_responser<      s     K$1,$?Jj)SkCcRS * !$$%8$?Lxrwww/?@AL!!Y L##Y #N%N$u,N"=="!""&N r   api_basec                    K   | j                  d      s| dz  } t        |||      }t        j                  j	                  | |       d {   }|j                         }	t        |	|||||      S 7 %wNz
/api/embed)urljson)r   r   r   r   r   r   )endswithr   r5   module_level_aclientpostrA   r<   )
r=   r   r   r   r	   r   r   r   responser   s
             r   ollama_aembeddingsrF   I   s|      \*L ,UG_MD11668$6OOHMMOM-#%  Ps   AA2
A0&A2c                     | j                  d      s| dz  } t        |||      }t        j                  j	                  | |      }|j                         }	t        |	|||||      S r?   )rB   r   r5   module_level_clientrD   rA   r<   )
r=   r   r   r	   r   r   r   r   rE   r   s
             r   ollama_embeddingsrI   d   so     \*L ,UG_MD**//H4/HHMMOM-#% r   )N)__doc__typingr   r   r   r5   litellm.types.utilsr   strr   r   r<   rF   rI    r   r   <module>rO      s9   # "  1c59#s(^	#s(^"((#Y( ( &	(
 ( ( (V #Y &	
   D  #Y 	
 &  r   