
    ^hd                         S r SSKrSSKJrJrJr  SSKrSSKJr  S\	S\	S\\	   S\S	\
S
\S\4S jr SS\	S\	S\S	\
S\S
\4S jjrg)zu
Ollama /chat/completion calls handled in llm_http_handler.py

[TODO]: migrate embeddings to a base handler as well.
    N)AnyDictList)EmbeddingResponseapi_basemodelpromptsmodel_responseoptional_paramslogging_objencodingc                   #    U R                  S5      (       a  U nOU  S3n[        R                  R                  5       nUR	                  5        H  u  pX;  d  M  XU	'   M     XS.n/ SQnUR	                  5        HQ  u  pX;   a  XU	'   M  UR                  S0 5        [        US   [        5      (       d  M<  US   R                  X05        MS     Sn/ n[        R                  R                  X{S9I S h  vN nUR                  5       I S h  vN nUS   n[        U5       H  u  nnUR                  SUUS	.5        M     UR                  S
5      =(       d0    [        UR!                  SR#                  S U 5       5      5      5      nUU-  nSUl        Xl        SU-   Ul        [+        US[        R,                  " UUUS S S95        U$  N N7f)Nz
/api/embed)r   input)truncateoptions
keep_aliver   r   )urljson
embeddings	embedding)objectindexr   prompt_eval_count c              3   $   #    U  H  ov   M     g 7fN ).0prompts     `/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/ollama/completion/handler.py	<genexpr>%ollama_aembeddings.<locals>.<genexpr>>   s     =W6Ws   listzollama/usage)prompt_tokenscompletion_tokenstotal_tokensprompt_tokens_detailscompletion_tokens_details)endswithlitellmOllamaConfig
get_configitems
setdefault
isinstancedictupdatemodule_level_aclientpostr   	enumerateappendgetlenencodejoinr   datar   setattrUsage)r   r   r	   r
   r   r   r   r   configkvr;   special_optional_paramstotal_input_tokensoutput_dataresponseresponse_jsonr   idxembinput_tokenss                        r    ollama_aembeddingsrI      s     &&
*% !!,,.F$!"A	  &+=DC%%''G OOIr*$y/400Y&&v. ( K116636JJH"--/)M$1,$?Jj)SkCcRS * !$$%89 S=W==>>L ,&"N%$u,N,0+"&&*	

 7 K)s2   AGAG7=G4G	5GGB=GGc                 H    [         R                  " [        U UUUUUUS95      $ )N)r   r   r	   r
   r   r   r   )asynciorunrI   )r   r   r	   r   r
   r   r   s          r    ollama_embeddingsrM   S   s2     ;;)+#	

 
    r   )__doc__rK   typingr   r   r   r+   litellm.types.utilsr   strr1   rI   r#   rM   r   rN   r    <module>rS      s     " "  1??? #Y? &	?
 ? ? ?R   	
 & rN   