Source code for mllm_shap.backends.transformers.chat

"""Conversation snapshot helpers for Hugging Face chat templates.

@domain backends
@see [[knowledge/architecture/backends]]
@tested-by [[tests/backends/test_transformers_chat.py]]
"""

from typing import Any


[docs] def render_prompt(tokenizer: Any, messages: list[dict[str, str]]) -> str: """Render chat messages to a model prompt string.""" apply_template = getattr(tokenizer, "apply_chat_template", None) chat_template = getattr(tokenizer, "chat_template", None) if apply_template is not None and chat_template: try: rendered = apply_template( messages, tokenize=False, add_generation_prompt=True, ) except ValueError: rendered = None if isinstance(rendered, str): return rendered return "\n".join(f"{message['role']}: {message['content']}" for message in messages)