Files
Vladimir Mandic d2d9f7caea captioning improvements and cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-05-29 21:10:56 +02:00

51 lines
2.0 KiB
Python

import re
import transformers
from modules.logger import log
def get_default_args(model):
to_remove = ['_from_model_config', 'transformers_version']
config = {}
for k, v in transformers.GenerationConfig._get_default_generation_params().items(): # pylint: disable=protected-access
if v is not None:
config[k] = v
for k, v in transformers.GenerationConfig.from_model_config(model.config).to_dict().items():
if v is not None:
config[k] = v
for k, v in model.generation_config.to_dict().items():
if v is not None:
config[k] = v
config = {k: v for k, v in config.items() if k not in to_remove}
return config
def get_custom_args(model, args_str):
args = {}
if args_str is not None and len(args_str) > 0:
default_args = get_default_args(model)
pairs = re.split(r'[;\n]+', args_str)
for pair in pairs:
if '=' in pair or ':' in pair:
key, value = re.split(r'[=:]', pair, maxsplit=1)
key = key.strip()
value = value.strip()
if key not in default_args:
log.warning(f'Prompt enhance: key="{key}" invalid')
continue
default_value = default_args[key]
try:
if isinstance(default_value, bool):
value = value.lower() in ['true', '1', 'yes']
elif isinstance(default_value, int):
value = int(value)
elif isinstance(default_value, float):
value = float(value)
elif isinstance(default_value, list):
value = [v.strip() for v in value.split(',')]
elif isinstance(default_value, str):
pass
except ValueError:
log.warning(f'Prompt enhance: key="{key}" value="{value}" typecast failed')
if key and value:
args[key] = value
return args