@@ -2165,7 +2165,7 @@ def create_completion(stop):
21652165
21662166
21672167class  Llava15ChatHandler :
2168-     DEFAULT_SYSTEM_MESSAGE  =   "A chat between a curious human and an artificial intelligence assistant.  The assistant gives helpful, detailed, and polite answers to the human's questions." 
2168+     DEFAULT_SYSTEM_MESSAGE :  Optional [ str ]  =   "A chat between a curious human and an artificial intelligence assistant.  The assistant gives helpful, detailed, and polite answers to the human's questions." 
21692169
21702170    CHAT_FORMAT  =  (
21712171        "{% for message in messages %}" 
@@ -2288,7 +2288,7 @@ def __call__(
22882288        assert  self .clip_ctx  is  not None 
22892289
22902290        system_prompt  =  _get_system_message (messages )
2291-         if  system_prompt  ==  "" :
2291+         if  system_prompt  ==  ""   and   self . DEFAULT_SYSTEM_MESSAGE   is   not   None :
22922292            messages  =  [llama_types .ChatCompletionRequestSystemMessage (role = "system" , content = self .DEFAULT_SYSTEM_MESSAGE )] +  messages 
22932293
22942294        image_urls  =  self .get_image_urls (messages )
@@ -2771,6 +2771,66 @@ class NanoLlavaChatHandler(Llava15ChatHandler):
27712771        "{% endif %}" 
27722772    )
27732773
2774+ class  Llama3VisionAlpha (Llava15ChatHandler ):
2775+     # question = "<image>" + q 
2776+ 
2777+     # prompt = f"<|start_header_id|>user<|end_header_id|>\n\n{question}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n" 
2778+     DEFAULT_SYSTEM_MESSAGE  =  None 
2779+ 
2780+     CHAT_FORMAT  =  (
2781+         "{% for message in messages %}" 
2782+ 
2783+         "<|start_header_id|>" 
2784+ 
2785+         "{% if message.role == 'user' %}" 
2786+ 
2787+         "user<|end_header_id|>\n \n " 
2788+ 
2789+         "{% if message.content is iterable %}" 
2790+ 
2791+         # <image> 
2792+         "{% for content in message.content %}" 
2793+         "{% if content.type == 'image_url' %}" 
2794+         "{% if content.image_url is string %}" 
2795+         "{{ content.image_url }}" 
2796+         "{% endif %}" 
2797+         "{% if content.image_url is mapping %}" 
2798+         "{{ content.image_url.url }}" 
2799+         "{% endif %}" 
2800+         "{% endif %}" 
2801+         "{% endfor %}" 
2802+ 
2803+         # Question: 
2804+         "{% for content in message.content %}" 
2805+         "{% if content.type == 'text' %}" 
2806+         "{{ content.text }}" 
2807+         "{% endif %}" 
2808+         "{% endfor %}" 
2809+ 
2810+         "{% endif %}" 
2811+ 
2812+         # Question: 
2813+         "{% if message.content is string %}" 
2814+         "{{ message.content }}" 
2815+         "{% endif %}" 
2816+ 
2817+         "{% endif %}" 
2818+ 
2819+         # Answer: 
2820+         "{% if message.role == 'assistant' %}" 
2821+         "assistant<|end_header_id|>\n \n " 
2822+         "{{ message.content }}" 
2823+         "{% endif %}" 
2824+ 
2825+         "<|eot_id|>" 
2826+ 
2827+         "{% endfor %}" 
2828+ 
2829+         # Generation prompt 
2830+         "{% if add_generation_prompt %}" 
2831+         "<|start_header_id|>assistant<|end_header_id|>\n \n " 
2832+         "{% endif %}" 
2833+     )
27742834
27752835@register_chat_completion_handler ("chatml-function-calling" ) 
27762836def  chatml_function_calling (
0 commit comments