model: Minicpmo (#3023)
This commit is contained in:
@@ -73,11 +73,14 @@ class Conversation:
|
||||
stop_str: Union[str, List[str]] = None
|
||||
# The string that represents an image token in the prompt
|
||||
image_token: str = "<image>"
|
||||
audio_token: str = "<audio>"
|
||||
|
||||
image_data: Optional[List[str]] = None
|
||||
modalities: Optional[List[str]] = None
|
||||
stop_token_ids: Optional[int] = None
|
||||
|
||||
audio_data: Optional[List[str]] = None
|
||||
|
||||
def get_prompt(self) -> str:
|
||||
"""Get the prompt for generation."""
|
||||
system_prompt = self.system_template.format(system_message=self.system_message)
|
||||
@@ -327,6 +330,10 @@ class Conversation:
|
||||
"""Append a new message."""
|
||||
self.image_data.append(image)
|
||||
|
||||
def append_audio(self, audio: str):
|
||||
"""Append a new message."""
|
||||
self.audio_data.append(audio)
|
||||
|
||||
def update_last_message(self, message: str):
|
||||
"""Update the last output.
|
||||
|
||||
@@ -373,6 +380,7 @@ class Conversation:
|
||||
sep2=self.sep2,
|
||||
stop_str=self.stop_str,
|
||||
image_token=self.image_token,
|
||||
audio_token=self.audio_token,
|
||||
)
|
||||
|
||||
def dict(self):
|
||||
@@ -459,8 +467,10 @@ def generate_chat_conv(
|
||||
sep2=conv.sep2,
|
||||
stop_str=conv.stop_str,
|
||||
image_data=[],
|
||||
audio_data=[],
|
||||
modalities=[],
|
||||
image_token=conv.image_token,
|
||||
audio_token=conv.audio_token,
|
||||
)
|
||||
|
||||
if isinstance(request.messages, str):
|
||||
@@ -498,6 +508,7 @@ def generate_chat_conv(
|
||||
if conv.name != "qwen2-vl"
|
||||
else conv.image_token
|
||||
)
|
||||
audio_token = conv.audio_token
|
||||
for content in message.content:
|
||||
if content.type == "text":
|
||||
if num_image_url > 16:
|
||||
@@ -507,6 +518,10 @@ def generate_chat_conv(
|
||||
# NOTE: Only works for llava
|
||||
real_content += image_token
|
||||
conv.append_image(content.image_url.url)
|
||||
elif content.type == "audio_url":
|
||||
real_content += audio_token
|
||||
conv.append_audio(content.audio_url.url)
|
||||
|
||||
conv.append_message(conv.roles[0], real_content)
|
||||
elif msg_role == "assistant":
|
||||
parsed_content = ""
|
||||
@@ -704,3 +719,18 @@ register_conv_template(
|
||||
image_token="<image_placeholder>",
|
||||
)
|
||||
)
|
||||
|
||||
# Reference: https://huggingface.co/openbmb/MiniCPM-o-2_6#usage
|
||||
register_conv_template(
|
||||
Conversation(
|
||||
name="minicpmo",
|
||||
system_message="You are Qwen, created by Alibaba Cloud. You are a helpful assistant.",
|
||||
system_template="<|im_start|>system\n{system_message}",
|
||||
roles=("<|im_start|>user", "<|im_start|>assistant"),
|
||||
sep="<|im_end|>\n",
|
||||
sep_style=SeparatorStyle.ADD_NEW_LINE_SINGLE,
|
||||
stop_str=("<|im_end|>", "<|endoftext|>"),
|
||||
image_token="(<image>./</image>)",
|
||||
audio_token="(<audio>./</audio>)",
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user