
    g^                         d Z ddlZddlmZmZmZ ddlZddlm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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.
    N)AnyDictList)EmbeddingResponseapi_basemodelpromptsmodel_responseoptional_paramslogging_objencodingc                 p  K   | j                  d      r| }n|  d}t        j                  j                         }|j	                         D ]  \  }	}
|	|vs|
||	<    ||d}g d}|j	                         D ]K  \  }	}
|	|v r|
||	<   |j                  di        t        |d   t              s6|d   j                  |	|
i       M d}g }t        j                  j                  ||       d {   }|j                         }|d   }t        |      D ]  \  }}|j                  d||d	        |j                  d
      xs0 t        |j!                  dj#                  d |D                          }||z  }d|_        ||_        d|z   |_        t+        |dt        j,                  |||d d              |S 7 ȭw)Nz
/api/embed)r   input)truncateoptions
keep_aliver   r   )urljson
embeddings	embedding)objectindexr   prompt_eval_count c              3       K   | ]  }|  y wN ).0prompts     [/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/ollama/completion/handler.py	<genexpr>z%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_aembeddingsrH      s     &
*% !!,,.F1_$!"OA	  &+W=DC%%'1''DG OOIr*$y/40Y&&1v. ( K11663T6JJHMMOM$1,$?Jj)SkCcRS * !$$%89 S=W==>>L ,&"N%N$u,N,0+"&&*	

 7 Ks!   AF6AF6+A F6+F4,C	F6c                 L    t        j                  t        | ||||||            S )N)r   r   r	   r
   r   r   r   )asynciorunrH   )r   r   r	   r   r
   r   r   s          r    ollama_embeddingsrL   S   s2     ;;)+#	

 
    r   )__doc__rJ   typingr   r   r   r*   litellm.types.utilsr   strr0   rH   r"   rL   r   rM   r    <module>rR      s     " "  1??? #Y? &	?
 ? ? ?R   	
 & rM   