from typing import Dict, List, Union def get_text_from_message(message: Union[List, Dict, str]) -> str: """Return the user texts from the message""" if isinstance(message, str): return message if isinstance(message, list): text_messages = [] if len(message) == 0: return "" if "type" in message[0]: for m in message: m_type = m.get("type") if m_type is not None and isinstance(m_type, str): m_value = m.get(m_type) if m_value is not None and isinstance(m_value, str): if m_type == "text": text_messages.append(m_value) # if m_type == "image_url": # text_messages.append(f"Image: {m_value}") # else: # text_messages.append(f"{m_type}: {m_value}") elif "role" in message[0]: for m in message: m_role = m.get("role") if m_role is not None and isinstance(m_role, str): m_content = m.get("content") if m_content is not None and isinstance(m_content, str): if m_role == "user": text_messages.append(m_content) if len(text_messages) > 0: return "\n".join(text_messages) return ""