I-am-agent / my_modelscope_agent /prompt /raw_prompt_builder.py
jianuo's picture
first
09321b6
raw
history blame contribute delete
No virus
1.26 kB
def qwen_chatml_prompt_preprocessor(messages):
prompt = ''
for message in messages:
if message['role'] == 'assistant' and message['content'] == '':
prompt += '<|im_start|>assistant\n'
else:
prompt = prompt + '<|im_start|>{role}\n{content}<|im_end|>\n'.format(
role=message['role'],
content=message['content'].lstrip('\n').rstrip())
# in the case of the assistant message is not in the last one, such as function result
if messages[-1]['role'] == 'assistant':
last_assistant_message_list = messages[-1]['content'].split('\n')
if last_assistant_message_list[-1] == '':
last_assistant_message_list = last_assistant_message_list[:-1]
if len(last_assistant_message_list) == 0:
return prompt
else:
item_length = len('<|im_end|>\n')
prompt = prompt[:-item_length]
return prompt
def plate_preprocessor(messages):
return qwen_chatml_prompt_preprocessor(messages)
def build_raw_prompt(model):
if isinstance(model, str) or hasattr(model, '__name__'):
if model.startswith('qwen'):
return qwen_chatml_prompt_preprocessor
else:
return plate_preprocessor