o
    wi                  	   @   s   d dl Z d dlmZmZ d dlmZmZmZmZ d dl	m
Z
 G dd deZe jG dd dZed	d
dg d ejddZedddg d ejddZeZeeedZedkr\ee  dS dS )    N)Enumauto)AnyListOptionalUnion)AutoTokenizerc                   @   s   e Zd ZdZe Ze ZdS )SeparatorStylezDifferent separator style.N)__name__
__module____qualname____doc__r   CHATMLQWEN2VL r   r   k/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/nemo/collections/vlm/qwen2vl/data/conversation.pyr	      s    
r	   c                   @   s   e Zd ZU dZee ed< eeef ed< eee  ed< e	ed< e
jZe
ed< dZeed< d	Zeed
< dZeed< d	Zeed< dZeeee f ed< d	Zee	 ed< dZeed< dd Zdd Zdd Zd	S )Conversationz,A class that keeps all conversation history.systemrolesmessagesoffset	sep_stylez###sepNsep2Unknownversiontokenizer_name_or_path
<|im_end|>stop_strstop_token_idsF	skip_nextc                 C   sn   t |}| jd u st| jdkrg }nd| jdg}|D ]\}}|| |d q|j|dddd}|S )Nr   r   )rolecontentFT)tokenizeadd_vision_idadd_generation_prompt)r   from_pretrainedr   lenappendlowerapply_chat_template)selfr   r   	tokenizerchatr!   messageretr   r   r   process_chat_template0   s   
z"Conversation.process_chat_templatec                 C   s   | j }| jtjkr	 | jpd}| ||}|S | jtjkr^	 | jdkr%dn| j| j d }|D ],\}}|rUt	|t
u rG|\}}dt| | }||d | | j d 7 }q/||d 7 }q/|S td| j )NzQwen/Qwen2-VL-2B-Instruct 
z<image>zInvalid style: )r   r   r	   r   r   r0   r   r   r   typetupler'   
ValueError)r+   r   r   r/   r!   r.   imagesr   r   r   
get_prompt<   s$   
zConversation.get_promptc                 C   s   | j ||g d S )N)r   r(   )r+   r!   r.   r   r   r   append_message   s   zConversation.append_message)r
   r   r   r   r   str__annotations__r4   r   intr	   r   r   r   r   r   r   r   r   r   r   r    boolr0   r7   r8   r   r   r   r   r      s"   
 Cr   zYou are a helpful assistant.)user	assistantqwen2vlr1   )r   r   r   r   r   r   r   z(<|im_start|>system
Answer the questions.)z<|im_start|>user
z<|im_start|>assistant
r   )defaultr?   chatml_direct__main__)dataclassesenumr   r   typingr   r   r   r   transformersr   r	   	dataclassr   r   conv_qwen2vlr   conv_chatml_directdefault_conversationconv_templatesr
   printr7   r   r   r   r   <module>   sB   f	