Spaces:
Sleeping
Sleeping
ChatExplorer
/
dataset_adapters
/ed2b4cf199998dfb4690d6ae767d25dca1256ccd97729b257db3a37206a72969.py
| def transform_data(data): | |
| # Setup alias roles for conversion | |
| role_mapping = {'user': 'human', 'assistant': 'gpt', 'system': 'system'} | |
| conversations = [] | |
| # Check for system messages and prepend if present | |
| system_messages = [msg for msg in data['messages'] if msg['role'] == 'system'] | |
| if system_messages: | |
| for msg in system_messages: | |
| conversations.append({'from': role_mapping[msg['role']], 'value': msg['content']}) | |
| # Prepare human and gpt messages | |
| prompt = data.get('prompt', '') | |
| human_messages = [msg for msg in data['messages'] if msg['role'] == 'user'] | |
| gpt_messages = [msg for msg in data['messages'] if msg['role'] == 'assistant'] | |
| # If there are both "instruction" and "input" and "input" is not empty, append it to first message | |
| if human_messages and prompt.strip(): | |
| human_messages[0]['content'] = prompt + '\n\n' + human_messages[0]['content'] | |
| # Pair each human message with corresponding gpt message, ensuring human speaks first | |
| paired_messages = zip(human_messages, gpt_messages) | |
| # Append paired messages to the conversation list | |
| for user_msg, gpt_msg in paired_messages: | |
| conversations.append({'from': role_mapping[user_msg['role']], 'value': user_msg['content']}) | |
| conversations.append({'from': role_mapping[gpt_msg['role']], 'value': gpt_msg['content']}) | |
| # Handle possible remaining unpaired human message | |
| for user_msg in human_messages[len(gpt_messages):]: | |
| conversations.append({'from': role_mapping[user_msg['role']], 'value': user_msg['content']}) | |
| # Handle any unprocessed system message if present | |
| for msg in system_messages[len(conversations):]: | |
| conversations.append({'from': role_mapping[msg['role']], 'value': msg['content']}) | |
| # Resulting data is a dictionary with a single key "conversations" | |
| return {'conversations': conversations} | |