| from mmcm.utils.str_util import has_key_brace | |
| from .human import PortraitAttr2PromptTemplate | |
| from .attributes.attr2template import ( | |
| KeywordMultiAttr2PromptTemplate, | |
| OnlySpacePromptTemplate, | |
| ) | |
| def get_template_by_name(template: str, name: str = None): | |
| """根据 template_name 确定 prompt 生成器类 | |
| choose prompt generator class according to template_name | |
| Args: | |
| name (str): template 的名字简称,便于指定. template name abbreviation, for easy reference | |
| Raises: | |
| ValueError: ValueError: 如果name不在支持的列表中,则报错. if name is not in the supported list, an error is reported. | |
| Returns: | |
| MultiAttr2PromptTemplate: 能够将任务字典转化为提词的 实现了__call__功能的类. class that can convert task dictionaries into prompts and implements the __call__ function | |
| """ | |
| if template == "" or template is None: | |
| template = OnlySpacePromptTemplate(template=template) | |
| elif has_key_brace(template): | |
| # if has_key_brace(template): | |
| template = KeywordMultiAttr2PromptTemplate(template=template) | |
| else: | |
| if name == "portrait": | |
| template = PortraitAttr2PromptTemplate(templates=template) | |
| else: | |
| raise ValueError( | |
| "PresetAttr2PromptTemplate only support one of [portrait], but given {}".format( | |
| name | |
| ) | |
| ) | |
| return template | |