(text)
| 639 | return "User:" in text or "Assistant:" in text |
| 640 | |
| 641 | def process_single_response(text): |
| 642 | if not has_conversation_tags(text): |
| 643 | return text |
| 644 | |
| 645 | messages = [] |
| 646 | # Split on "User:" or "Assistant:" while keeping the delimiter |
| 647 | parts = re.split(r'(?=(User:|Assistant:))', text.strip()) |
| 648 | # Remove empty strings |
| 649 | parts = [p for p in parts if p.strip()] |
| 650 | |
| 651 | for part in parts: |
| 652 | part = part.strip() |
| 653 | if part.startswith('User:'): |
| 654 | messages.append({ |
| 655 | 'role': 'user', |
| 656 | 'content': part[5:].strip() |
| 657 | }) |
| 658 | elif part.startswith('Assistant:'): |
| 659 | messages.append({ |
| 660 | 'role': 'assistant', |
| 661 | 'content': part[10:].strip() |
| 662 | }) |
| 663 | return messages |
| 664 | |
| 665 | if isinstance(response_text, list): |
| 666 | processed = [process_single_response(text) for text in response_text] |
no test coverage detected