How to export multimodal chat annotations and sample export formats.
Export JSON annotations
# Set the export params to include/exclude certain fields.
export_params= {
"attachments": True,
"metadata_fields": True,
"data_row_details": True,
"project_details": True,
"label_details": True,
"performance_details": True,
"interpolated_frames": True
}
# Note: Filters follow AND logic, so typically using one filter is sufficient.
filters= {
"last_activity_at": ["2000-01-01 00:00:00", "2050-01-01 00:00:00"],
"workflow_status": "<wkf-status>"
}
export_task = project.export(params=export_params, filters=filters)
export_task.wait_till_done()
# Return JSON output strings from export task results/errors, one by one:
# Callback used for JSON Converter
def json_stream_handler(output: lb.BufferedJsonConverterOutput):
print(output.json)
if export_task.has_errors():
export_task.get_buffered_stream(
stream_type=lb.StreamType.ERRORS
).start(stream_handler=lambda error: print(error))
if export_task.has_result():
export_json = export_task.get_buffered_stream(
stream_type=lb.StreamType.RESULT
).start(stream_handler=json_stream_handler)
print("file size: ", export_task.get_total_file_size(stream_type=lb.StreamType.RESULT))
print("line count: ", export_task.get_total_lines(stream_type=lb.StreamType.RESULT))
Annotation export formats
Classification - Radio
{
"feature_id": "clws3nkhh00043b6p7qktjffs",
"feature_schema_id": "clws3n1yu055907wlg1uh1i8g",
"name": "Context subject",
"value": "context_subject",
"message_id": "clws2arr200073b6p7ehwkoh4",
"conversational_radio_answer": {
"feature_id": "clws3nkhh00033b6ps99i1d56",
"feature_schema_id": "clws3n1yu055a07wl2axp39nq",
"name": "Car",
"value": "car",
"classifications": []
}
}
Classification - Free-form text
{
"feature_id": "clws3or5q00093b6p00oxtkve",
"feature_schema_id": "clws3n1yv055v07wlbnd57c9h",
"name": "Additional comment",
"value": "additional_comment",
"text_answer": {
"content": "Color: white"
}
}
Classification - Checklist
{
"feature_id": "clpiyav9m00053b6mpe2qk0im",
"feature_schema_id": "clpiya8h507dx072efo9kb97j",
"name": "Evaluations done",
"checklist_answers": [
{
"feature_id": "clpiyav9m00043b6mvhur1p19",
"name": "Usefulness",
"classifications": []
},
{
"feature_id": "clpiyax4d00073b6mqyyt0504",
"name": "Toxicity",
"classifications": []
}
]
}
Message Ranking
{
"feature_id": "clwrt25ar00093b6po9g7fiu3",
"feature_schema_id": "clwkfbcnn01kl07z68er64ffi",
"name": "Rank given prompt",
"annotation_kind": "MessageRanking",
"classifications": [],
"ranked_messages": {
"parent_message_id": "clwrt16zz00033b6p6ud7w233",
"ranked_messages": [
{
"message_id": "clwrt1fw700063b6pe8zpo1xp",
"order": 1,
"model_config_id": "e606593e-def3-4662-9737-3fc4ac412dd3"
},
{
"message_id": "clwrt1fw700073b6p8k3vkh1x",
"order": 2,
"model_config_id": "8fcda464-a0c7-4300-a9fa-c9a5cf82cab2"
}
]
}
}
Message selection
{
"feature_id": "clwrt2dru000b3b6pkj3i5zxk",
"feature_schema_id": "clwknckmp030v07xp6kow09xd",
"name": "Subject relevance",
"annotation_kind": "MessageMultiSelection",
"classifications": [],
"selected_messages": {
"parent_message_id": "clwrt16zz00033b6p6ud7w233",
"messages": [
{
"message_id": "clwrt1fw700063b6pe8zpo1xp",
"model_config_id": "e606593e-def3-4662-9737-3fc4ac412dd3"
}
]
}
}
Message step reasoning
{
"feature_id": "cm3gp5d39000k3b6tpet38ui9",
"feature_schema_id": "cm3ffq1mm04t407we109o1hyi",
"name": "my message step task",
"annotation_kind": "StepReasoning",
"classifications": [],
"steps": {
"parent_message_id": "cm3gp54f500073b6t26gyznra",
"steps": [
{
"step_id": "cm3gp54q6000a3b6t4563k4ba",
"content": "Here's a simple way to make a cup of tea:",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp54q6000b3b6tsuiaudjb",
"content": "1. Boil water: Fill a kettle with water and bring it to a boil.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp54q6000d3b6tozd9neiq",
"content": "2. Add tea: Once the water is boiling, empty your now preheated teacup and add your tea. This can be a tea bag or loose tea leaves in a tea infuser. The amount of tea you add will depend on how strong you like your tea.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp54q6000e3b6t8y4k7grw",
"content": "3. Pour hot water: Pour the boiling water into the cup, over the tea.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp54q6000f3b6tddynpg1y",
"content": "4. Steep: Let the tea steep for a few minutes. The exact time will depend on the type of tea and how strong you like it. A general guide is 3-5 minutes. After the tea has steeped, remove the tea bag or infuser from the cup.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp54q6000h3b6t7mopupfy",
"content": "5. Add extras: If you like, you can now add extras such as milk, sugar, honey, or lemon. ",
"variant_id": 0,
"variant": "correct"
}
],
"root_step_id": "cm3gp54q6000a3b6t4563k4ba"
}
},
{
"feature_id": "cm3gp8byj00103b6t9904n65h",
"feature_schema_id": "cm3ffq1mm04t407we109o1hyi",
"name": "my message step task",
"annotation_kind": "StepReasoning",
"classifications": [],
"steps": {
"parent_message_id": "cm3gp82di000o3b6tr13dwupc",
"steps": [
{
"step_id": "cm3gp82mx000p3b6tlkd0c8a6",
"content": "Sure, here's more detail on step 5:",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp82mx000q3b6tptjgz0ol",
"content": "5. Add extras: ",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp82mx000r3b6t7mqcilx6",
"content": " - Milk: Some people prefer to add a splash of milk to their tea to make it creamier and to soften the flavor. The amount of milk can vary based on personal preference. Some teas, like black teas, often pair well with milk. ",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gp82mx000s3b6tntnvhpfc",
"content": " - Sugar: If you prefer your tea sweet, you can add sugar. Start with a teaspoon and then adjust to taste. You can also use sweeteners like stevia or sucralose if you're trying to avoid sugar.",
"variant_id": 2,
"variant": "corrected",
"alternative_steps": [
{
"content": " - Agave: If you prefer your tea sweet, you can add agave syrup. Start with a teaspoon and then adjust to taste. Agave is a natural sweetener that is sweeter than sugar, so you might need less of it.",
"variant_id": 0,
"variant": "neutral"
},
{
"content": " - Maple Syrup: If you prefer your tea sweet, you can add maple syrup. Start with a teaspoon and then adjust to taste. Maple syrup can add a unique, slightly smoky sweetness to your tea.",
"variant_id": 0,
"variant": "correct"
},
{
"content": " - Dates: If you prefer your tea sweet, you can blend dates and add the paste to your tea. Dates are a natural sweetener and can also add a bit of texture to your tea.",
"variant_id": 1,
"variant": "neutral"
}
],
"rewritten_content": "Sugar: If you prefer sweet tea, add sugar or other sweeteners.",
"justification": "The response provided recommendations that pose health risks we should avoid."
},
{
"step_id": "cm3gpcrij00133b6tz9766jfw",
"content": "- Sugar: Start with a teaspoon of sugar, stir it in and then taste. Add more if needed. Remember, you can always add more sugar but you can't take it away once it's added.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gpcrij00153b6t0woknwgo",
"content": "- Lemon: A slice of lemon or a splash of lemon juice can add a refreshing citrus note to your tea. This is often paired with black tea.",
"variant_id": 0,
"variant": "correct"
},
{
"step_id": "cm3gpcrij00163b6tcetum5w1",
"content": "- Herbs and Spices: Some people like to add herbs and spices to their tea. For example, mint leaves, a cinnamon stick, or a few cardamom pods can add a unique flavor to your tea.",
"variant_id": 0,
"variant": "correct"
}
],
"root_step_id": "cm3gp82mx000p3b6tlkd0c8a6"
}
}
Sample project export
{
"data_row": {
"id": "clwrm93488cpd0734f740r9lr",
"global_key": "clwrm92sb0grg07wncr6dhihw",
"row_data": "{\"type\":\"application/vnd.labelbox.conversational.model-chat-evaluation\",\"version\":2,\"actors\":{\"clwrt16zz00023b6pg6hlhtub\":{\"role\":\"human\",\"metadata\":{\"name\":\"User\"}},\"clwrt17a900043b6py2tepemd\":{\"role\":\"model\",\"metadata\":{\"modelConfigId\":\"e606593e-def3-4662-9737-3fc4ac412dd3\"}},\"clwrt17a900053b6p0xtyv1im\":{\"role\":\"model\",\"metadata\":{\"modelConfigId\":\"8fcda464-a0c7-4300-a9fa-c9a5cf82cab2\"}}},\"messages\":{\"clwrt16zz00033b6p6ud7w233\":{\"actorId\":\"clwrt16zz00023b6pg6hlhtub\",\"content\":[{\"type\":\"text\",\"content\":\"Is there a car in this image?\"},{\"type\":\"fileData\",\"fileUri\":\"https://c7.staticflickr.com/3/2447/3799589580_4b73283f92_o.jpg\",\"mimeType\":\"image/jpeg\"}],\"childMessageIds\":[\"clwrt1fw700063b6pe8zpo1xp\",\"clwrt1fw700073b6p8k3vkh1x\"]},\"clwrt1fw700063b6pe8zpo1xp\":{\"actorId\":\"clwrt17a900043b6py2tepemd\",\"content\":[{\"type\":\"text\",\"content\":\"Yes, there is a car in this image. It appears to be a white hatchback parked in a parking lot.\"}],\"childMessageIds\":[]},\"clwrt1fw700073b6p8k3vkh1x\":{\"actorId\":\"clwrt17a900053b6p0xtyv1im\",\"content\":[{\"type\":\"text\",\"content\":\" Yes, there is a white Volkswagen Golf in the image.\"}],\"childMessageIds\":[]}},\"rootMessageIds\":[\"clwrt16zz00033b6p6ud7w233\"]}",
"details": {
"dataset_id": "clwkf82ul001l0755mhckcmuy",
"dataset_name": "Model evaluation 101",
"created_at": "2024-05-29T09:20:43.342+00:00",
"updated_at": "2024-05-29T12:31:52.027+00:00",
"last_activity_at": "2024-05-29T12:33:21.203+00:00",
"created_by": "[email protected]"
}
},
"media_attributes": {
"asset_type": "conversational",
"mime_type": "application/vnd.labelbox.conversational.model-chat-evaluation",
"labelable_ids": [
"clwrt16zz00033b6p6ud7w233",
"clwrt1fw700063b6pe8zpo1xp",
"clwrt1fw700073b6p8k3vkh1x"
],
"message_count": 3
},
"attachments": [],
"metadata_fields": [],
"projects": {
"clwrm92jc0grc07wncq654q5s": {
"name": "Multi modal chat evalution",
"labels": [
{
"label_kind": "Default",
"version": "1.0.0",
"id": "clwrsyrdp02mr07x5378j3ysr",
"label_details": {
"created_at": "2024-05-29T12:33:21.000+00:00",
"updated_at": "2024-05-29T12:33:21.000+00:00",
"created_by": "[email protected]",
"content_last_updated_at": "2024-05-29T12:33:20.787+00:00",
"reviews": []
},
"performance_details": {
"seconds_to_create": 250,
"seconds_to_review": 0,
"skipped": false
},
"annotations": {
"objects": [
{
"feature_id": "clwrt25ar00093b6po9g7fiu3",
"feature_schema_id": "clwkfbcnn01kl07z68er64ffi",
"name": "Rank given prompt",
"annotation_kind": "MessageRanking",
"classifications": [],
"ranked_messages": {
"parent_message_id": "clwrt16zz00033b6p6ud7w233",
"ranked_messages": [
{
"message_id": "clwrt1fw700063b6pe8zpo1xp",
"order": 1,
"model_config_id": "e606593e-def3-4662-9737-3fc4ac412dd3"
},
{
"message_id": "clwrt1fw700073b6p8k3vkh1x",
"order": 2,
"model_config_id": "8fcda464-a0c7-4300-a9fa-c9a5cf82cab2"
}
]
}
},
{
"feature_id": "clwrt2dru000b3b6pkj3i5zxk",
"feature_schema_id": "clwknckmp030v07xp6kow09xd",
"name": "Subject relevance",
"annotation_kind": "MessageMultiSelection",
"classifications": [],
"selected_messages": {
"parent_message_id": "clwrt16zz00033b6p6ud7w233",
"messages": [
{
"message_id": "clwrt1fw700063b6pe8zpo1xp",
"model_config_id": "e606593e-def3-4662-9737-3fc4ac412dd3"
}
]
}
}
],
"classifications": [],
"relationships": []
}
}
],
"project_details": {
"ontology_id": "clwkn6leb034b07waeolfb7tl",
"task_id": "0c392f64-bc65-44e6-8848-ae5a12000328",
"task_name": "Initial review task",
"batch_id": "c2267a60-1d9c-11ef-9edf-ed6f8eede535",
"batch_name": "batch_clwrm92jc0grc07wncq654q5s_clwrm9eph006d0750b3s5b2cr",
"workflow_status": "IN_REVIEW",
"priority": 5,
"consensus_expected_label_count": 2,
"workflow_history": [
{
"action": "Move",
"created_at": "2024-05-29T12:33:21.160+00:00",
"created_by": "[email protected]",
"previous_task_name": "Initial labeling task",
"previous_task_id": "ebf41e2b-e231-0e43-adee-92252c1858dd",
"next_task_name": "Initial review task",
"next_task_id": "0c392f64-bc65-44e6-8848-ae5a12000328"
},
{
"action": "Move",
"created_at": "2024-05-29T12:33:21.151+00:00",
"created_by": "[email protected]",
"next_task_name": "Initial labeling task",
"next_task_id": "ebf41e2b-e231-0e43-adee-92252c1858dd"
}
]
},
"project_model_configs": {
"models": {
"5d9647e7-aafe-4275-944d-c2e9b122105a": {
"name": "Google Gemini Pro Vision",
"created_at": "2023-12-13T21:51:42.657+00:00"
},
"036aeb03-b0b4-442e-a6e1-161382bc1228": {
"name": "OpenAI GPT-4o",
"created_at": "2024-05-23T23:56:03.078+00:00"
}
},
"model_configs": {
"e606593e-def3-4662-9737-3fc4ac412dd3": {
"name": "GPT_4o_multi_modal",
"model_id": "036aeb03-b0b4-442e-a6e1-161382bc1228",
"inference_params": {
"top_p": 1,
"detail": "high",
"temperature": 0,
"use_text_only": false,
"max_new_tokens": 1024,
"use_image_only": false,
"use_attachments": false
}
},
"8fcda464-a0c7-4300-a9fa-c9a5cf82cab2": {
"name": "Gemini_pro_vison_multi_modal",
"model_id": "5d9647e7-aafe-4275-944d-c2e9b122105a",
"inference_params": {
"use_attachments": false
}
}
},
"project_model_configs": [
{
"id": "clwrsxr1y009i07v93w2h45qm",
"model_id": "036aeb03-b0b4-442e-a6e1-161382bc1228",
"model_config_id": "e606593e-def3-4662-9737-3fc4ac412dd3"
},
{
"id": "clwrsyext00ar07v5czpo7w2a",
"model_id": "5d9647e7-aafe-4275-944d-c2e9b122105a",
"model_config_id": "8fcda464-a0c7-4300-a9fa-c9a5cf82cab2"
}
]
},
"project_tags": []
}
}