o
    پi                     @   s   d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
 G dd de	ZG dd de	ZG dd	 d	e	ZG d
d de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZG dd de	ZdS )z
Ollama-compatible API protocol definitions.

These models match the Ollama API format:
https://github.com/ollama/ollama/blob/main/docs/api.md
    )AnyDictListLiteralOptionalUnion)	BaseModelFieldc                   @   s6   e Zd ZU dZeed< eed< dZeee  ed< dS )OllamaMessagezOllama message format.rolecontentNimages)	__name__
__module____qualname____doc__str__annotations__r   r   r    r   r   Z/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/entrypoints/ollama/protocol.pyr
      s
   
 r
   c                   @   s   e Zd ZU dZeed< ee ed< dZe	ed< dZ
eeed eeef f  ed< dZeeeef  ed	< dZeeeef  ed
< dZeee	ed f  ed< dS )OllamaChatRequestz Ollama /api/chat request format.modelmessagesTstreamNjsonformatoptions
keep_alive)lowmediumhighthink)r   r   r   r   r   r   r   r
   r   boolr   r   r   r   r   r   r   r   floatr!   r   r   r   r   r      s   
 $ r   c                   @   s   e Zd ZU dZeed< eed< eed< dZeed< dZ	e
e ed< d	Ze
e ed
< d	Ze
e ed< d	Ze
e ed< d	Ze
e ed< d	Ze
e ed< d	Ze
e ed< d	S )OllamaChatResponsez1Ollama /api/chat response format (non-streaming).r   
created_atmessageTdonestopdone_reasonNtotal_durationload_durationprompt_eval_countprompt_eval_duration
eval_counteval_duration)r   r   r   r   r   r   r
   r'   r"   r)   r   r*   intr+   r,   r-   r.   r/   r   r   r   r   r$   !   s   
 r$   c                   @   sF   e Zd ZU dZeed< eed< eed< dZeed< dZ	e
e ed< dS )	OllamaChatStreamResponsez*Ollama /api/chat streaming response chunk.r   r%   r&   Fr'   Nr)   )r   r   r   r   r   r   r
   r'   r"   r)   r   r   r   r   r   r1   1      
 r1   c                   @   s   e Zd ZU dZeed< eed< dZee ed< dZee ed< dZ	ee ed< dZ
eee  ed< d	Zeed
< dZeed< dZeeed eeef f  ed< dZeeeef  ed< dZeeeef  ed< dZeee  ed< dZee ed< dS )OllamaGenerateRequestz$Ollama /api/generate request format.r   promptNsuffixsystemtemplatecontextTr   Frawr   r   r   r   r   r!   )r   r   r   r   r   r   r5   r   r6   r7   r8   r   r0   r   r"   r9   r   r   r   r   r   r   r   r#   r   r!   r   r   r   r   r3   ;   s   
 $r3   c                   @   s   e Zd ZU dZeed< eed< eed< dZeed< dZe	e ed< d	Z
e	ee  ed
< d	Ze	e ed< d	Ze	e ed< d	Ze	e ed< d	Ze	e ed< d	Ze	e ed< d	Ze	e ed< d	S )OllamaGenerateResponsez5Ollama /api/generate response format (non-streaming).r   r%   responseTr'   r(   r)   Nr8   r*   r+   r,   r-   r.   r/   )r   r   r   r   r   r   r'   r"   r)   r   r8   r   r0   r*   r+   r,   r-   r.   r/   r   r   r   r   r:   M   s   
 r:   c                   @   sF   e Zd ZU dZeed< eed< eed< dZeed< dZe	e ed< dS )	OllamaGenerateStreamResponsez.Ollama /api/generate streaming response chunk.r   r%   r;   Fr'   Nr)   )
r   r   r   r   r   r   r'   r"   r)   r   r   r   r   r   r<   ^   r2   r<   c                   @   sR   e Zd ZU dZeed< eed< eed< eed< eed< dZee	ee
f  ed< dS )	OllamaModelInfoz)Model information for /api/tags response.namer   modified_atsizedigestNdetails)r   r   r   r   r   r   r0   rB   r   r   r   r   r   r   r   r=   h   s   
 r=   c                   @   s   e Zd ZU dZee ed< dS )OllamaTagsResponsez!Ollama /api/tags response format.modelsN)r   r   r   r   r   r=   r   r   r   r   r   rC   s   s   
 rC   c                   @   s   e Zd ZU dZeed< dS )OllamaShowRequestz Ollama /api/show request format.r   N)r   r   r   r   r   r   r   r   r   r   rE   y   s   
 rE   c                   @   s   e Zd ZU dZdZeed< dZeed< dZeed< dZ	eed< dZ
eed< eedZeeef ed	< eedZeeef ed
< eedZee ed< dS )OllamaShowResponsez!Ollama /api/show response format. license	modelfile
parametersr7   r?   )default_factoryrB   
model_infocapabilitiesN)r   r   r   r   rH   r   r   rI   rJ   r7   r?   r	   dictrB   r   r   rL   listrM   r   r   r   r   r   rF      s   
 rF   N)r   typingr   r   r   r   r   r   pydanticr   r	   r
   r   r$   r1   r3   r:   r<   r=   rC   rE   rF   r   r   r   r   <module>   s     

