Normalize message content — handles both string and list formats.
(content)
| 11 | |
| 12 | |
| 13 | def _extract_text(content) -> str: |
| 14 | """Normalize message content — handles both string and list formats.""" |
| 15 | if isinstance(content, str): |
| 16 | return content |
| 17 | if isinstance(content, list): |
| 18 | # OpenAI multi-part format: [{"type": "text", "text": "..."}, ...] |
| 19 | parts = [] |
| 20 | for part in content: |
| 21 | if isinstance(part, dict) and part.get("type") == "text": |
| 22 | parts.append(part.get("text", "")) |
| 23 | elif isinstance(part, str): |
| 24 | parts.append(part) |
| 25 | return " ".join(parts) |
| 26 | return str(content) if content else "" |
| 27 | |
| 28 | |
| 29 | def main(): |