ChatGPT make structured data array of object work

Hello, I’m pretty new to make and have an issue making the Transform Text to Structured data work. For some of my modules it work just fine, but sometimes it just return one object and not an array. What am I doing wrong?

I’ve made a minimum reproductible scenario where it does not work with the text i’m currently working with :

{
    "name": "Integration OpenAI (ChatGPT, Whisper, DALL-E)",
    "flow": [
        {
            "id": 1,
            "module": "openai-gpt-3:transformTextToStructuredData",
            "version": 1,
            "parameters": {
                "__IMTCONN__": 10079897
            },
            "mapper": {
                "model": "gpt-4.1",
                "rawText": "Bien sûr, voici pour chaque poste 3 propositions de quiz avec des niveaux d’exigence progressifs (1 = débutant, 2 = intermédiaire, 3 = expert) sans reprendre le nom du poste dans le titre du quiz.  \\nCela pourra t'aider à structurer des parcours différenciés, à la fois ludiques et adaptés à la progression de l’apprenant.\\n\\n---\\n\\n### P_002 — Prétraitement et détachage  \\n1. **Reconnaître les types de taches courantes** *(Niveau 1)*  \\n2. **Choix des détachants selon la nature du linge** *(Niveau 2)*  \\n3. **Approche experte des mélanges et techniques de détachage** *(Niveau 3)*  \\n\\n---\\n\\n### P_003 — Chargement et utilisation des machines à laver  \\n1. **Sélection des programmes simples de lavage** *(Niveau 1)*  \\n2. **Optimisation du chargement et réglages avancés** *(Niveau 2)*  \\n3. **Gestion des incidents et entretien machine** *(Niveau 3)*  \\n\\n---\\n\\n### P_004 — Transfert et répartition du linge propre  \\n1. **Identifier les emplacements et les contenants adéquats** *(Niveau 1)*  \\n2. **Organisation logistique et gestion des flux** *(Niveau 2)*  \\n3. **Pilotage de la traçabilité et gestion des priorités** *(Niveau 3)*  \\n\\n---\\n\\n### P_005 — Séchage — Utilisation des sèche-linges ou calandres  \\n1. **Reconnaître les consignes de sécurité** *(Niveau 1)*  \\n2. **Adapter les réglages aux différents textiles** *(Niveau 2)*  \\n3. **Dépannage de premier niveau et optimisation énergétique** *(Niveau 3)*  \\n\\n---\\n\\n### P_006 — Repassage manuel et pliage  \\n1. **Gestes de base pour un linge sans plis** *(Niveau 1)*  \\n2. **Maîtrise des formes et des textiles spécifiques** *(Niveau 2)*  \\n3. **Gestion d’un poste complexe, rapidité et qualité premium** *(Niveau 3)*  \\n\\n---\\n\\n### P_007 — Contrôle qualité  \\n1. **Vérification élémentaire de la propreté et de l’état du linge** *(Niveau 1)*  \\n2. **Identification des défauts et des solutions à apporter** *(Niveau 2)*  \\n3. **Audit qualité : critères avancés et gestion des anomalies** *(Niveau 3)*  \\n\\n---\\n\\n### P_008 — Emballage et préparation des commandes  \\n1. **Reconnaître les types d’emballages et d’étiquetages** *(Niveau 1)*  \\n2. **Respect des consignes clients et conditionnements spéciaux** *(Niveau 2)*  \\n3. **Organisation d’une zone de préparation à haute productivité** *(Niveau 3)*  \\n\\n---\\n\\n### P_009 — Expédition et livraison  \\n1. **Suivi des bons de livraison et préparation de base** *(Niveau 1)*  \\n2. **Gestion des plannings et des rappels de conformité** *(Niveau 2)*  \\n3. **Anticipation des imprévus et gestion de la relation client** *(Niveau 3)*  \\n\\n---\\n\\nDis-moi si tu souhaites détailler le contenu de chaque quiz ou des exemples de questions pour certains postes ou niveaux !",
                "prompt": "Extrait les quiz",
                "parameters": [
                    {
                        "name": "quizs",
                        "description": "ensemble des 15 quiz",
                        "type": "arrayObject",
                        "isRequired": true,
                        "definitionName": "quiz"
                    }
                ],
                "objectDefinitions": [
                    {
                        "name": "quiz",
                        "description": "quiz",
                        "properties": [
                            {
                                "name": "Name",
                                "description": "Nom du quiz",
                                "type": "string",
                                "isRequired": true
                            },
                            {
                                "name": "level",
                                "description": "niveau du quiz (1, 2 ou 3)",
                                "type": "number",
                                "isRequired": true
                            },
                            {
                                "name": "poste",
                                "description": "Poste dans lequel ce trouve ce quiz",
                                "type": "string",
                                "isRequired": true
                            }
                        ]
                    }
                ]
            },
            "metadata": {
                "designer": {
                    "x": -275,
                    "y": -38
                },
                "restore": {
                    "parameters": {
                        "__IMTCONN__": {
                            "label": "My OpenAI connection",
                            "data": {
                                "scoped": "true",
                                "connection": "openai-gpt-3"
                            }
                        }
                    },
                    "expect": {
                        "model": {
                            "mode": "chose",
                            "label": "gpt-4.1 (system)"
                        },
                        "parameters": {
                            "mode": "chose",
                            "items": [
                                {
                                    "type": {
                                        "mode": "chose",
                                        "label": "Array (objects)"
                                    },
                                    "isRequired": {
                                        "mode": "chose"
                                    }
                                }
                            ]
                        },
                        "objectDefinitions": {
                            "mode": "chose",
                            "items": [
                                {
                                    "properties": {
                                        "mode": "chose",
                                        "items": [
                                            {
                                                "type": {
                                                    "mode": "chose",
                                                    "label": "Text"
                                                },
                                                "isRequired": {
                                                    "mode": "chose"
                                                }
                                            },
                                            {
                                                "type": {
                                                    "mode": "chose",
                                                    "label": "Number"
                                                },
                                                "isRequired": {
                                                    "mode": "chose"
                                                }
                                            },
                                            {
                                                "type": {
                                                    "mode": "chose",
                                                    "label": "Text"
                                                },
                                                "isRequired": {
                                                    "mode": "chose"
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "__IMTCONN__",
                        "type": "account:openai-gpt-3",
                        "label": "Connection",
                        "required": true
                    }
                ],
                "expect": [
                    {
                        "name": "model",
                        "type": "select",
                        "label": "Model",
                        "required": true
                    },
                    {
                        "name": "rawText",
                        "type": "text",
                        "label": "Text to Parse",
                        "required": true
                    },
                    {
                        "name": "prompt",
                        "type": "text",
                        "label": "Prompt",
                        "required": true
                    },
                    {
                        "name": "parameters",
                        "type": "array",
                        "label": "Structured Data Definition",
                        "required": true,
                        "spec": {
                            "spec": [],
                            "type": "collection",
                            "label": "Data Definition",
                            "name": "value"
                        }
                    },
                    {
                        "name": "objectDefinitions",
                        "type": "array",
                        "label": "Object Definitions",
                        "spec": {
                            "spec": [
                                {
                                    "name": "name",
                                    "type": "text",
                                    "label": "Object Name",
                                    "required": true
                                },
                                {
                                    "name": "description",
                                    "type": "text",
                                    "label": "Description",
                                    "required": true
                                },
                                {
                                    "name": "properties",
                                    "spec": {
                                        "spec": [],
                                        "type": "collection",
                                        "label": "Property"
                                    },
                                    "type": "array",
                                    "label": "Properties",
                                    "labels": {
                                        "add": "Add property"
                                    },
                                    "required": true
                                }
                            ],
                            "type": "collection",
                            "label": "Object Definition",
                            "name": "value"
                        }
                    }
                ],
                "interface": [
                    {
                        "name": "quizs",
                        "type": "arrayObject"
                    }
                ]
            }
        }
    ],
    "metadata": {
        "instant": false,
        "version": 1,
        "scenario": {
            "roundtrips": 1,
            "maxErrors": 3,
            "autoCommit": true,
            "autoCommitTriggerLast": true,
            "sequential": false,
            "slots": null,
            "confidential": false,
            "dataloss": false,
            "dlq": false,
            "freshVariables": false
        },
        "designer": {
            "orphans": []
        },
        "zone": "eu2.make.com",
        "notes": []
    }
}

sorry, can’t find where to attach file to a topic.

Here is my bundle input :

[
    {
        "model": "gpt-4.1",
        "prompt": "Extrait les quiz",
        "rawText": "Bien sûr, voici pour chaque poste 3 propositions de quiz avec des niveaux d’exigence progressifs (1 = débutant, 2 = intermédiaire, 3 = expert) sans reprendre le nom du poste dans le titre du quiz.  \\nCela pourra t'aider à structurer des parcours différenciés, à la fois ludiques et adaptés à la progression de l’apprenant.\\n\\n---\\n\\n### P_002 — Prétraitement et détachage  \\n1. **Reconnaître les types de taches courantes** *(Niveau 1)*  \\n2. **Choix des détachants selon la nature du linge** *(Niveau 2)*  \\n3. **Approche experte des mélanges et techniques de détachage** *(Niveau 3)*  \\n\\n---\\n\\n### P_003 — Chargement et utilisation des machines à laver  \\n1. **Sélection des programmes simples de lavage** *(Niveau 1)*  \\n2. **Optimisation du chargement et réglages avancés** *(Niveau 2)*  \\n3. **Gestion des incidents et entretien machine** *(Niveau 3)*  \\n\\n---\\n\\n### P_004 — Transfert et répartition du linge propre  \\n1. **Identifier les emplacements et les contenants adéquats** *(Niveau 1)*  \\n2. **Organisation logistique et gestion des flux** *(Niveau 2)*  \\n3. **Pilotage de la traçabilité et gestion des priorités** *(Niveau 3)*  \\n\\n---\\n\\n### P_005 — Séchage — Utilisation des sèche-linges ou calandres  \\n1. **Reconnaître les consignes de sécurité** *(Niveau 1)*  \\n2. **Adapter les réglages aux différents textiles** *(Niveau 2)*  \\n3. **Dépannage de premier niveau et optimisation énergétique** *(Niveau 3)*  \\n\\n---\\n\\n### P_006 — Repassage manuel et pliage  \\n1. **Gestes de base pour un linge sans plis** *(Niveau 1)*  \\n2. **Maîtrise des formes et des textiles spécifiques** *(Niveau 2)*  \\n3. **Gestion d’un poste complexe, rapidité et qualité premium** *(Niveau 3)*  \\n\\n---\\n\\n### P_007 — Contrôle qualité  \\n1. **Vérification élémentaire de la propreté et de l’état du linge** *(Niveau 1)*  \\n2. **Identification des défauts et des solutions à apporter** *(Niveau 2)*  \\n3. **Audit qualité : critères avancés et gestion des anomalies** *(Niveau 3)*  \\n\\n---\\n\\n### P_008 — Emballage et préparation des commandes  \\n1. **Reconnaître les types d’emballages et d’étiquetages** *(Niveau 1)*  \\n2. **Respect des consignes clients et conditionnements spéciaux** *(Niveau 2)*  \\n3. **Organisation d’une zone de préparation à haute productivité** *(Niveau 3)*  \\n\\n---\\n\\n### P_009 — Expédition et livraison  \\n1. **Suivi des bons de livraison et préparation de base** *(Niveau 1)*  \\n2. **Gestion des plannings et des rappels de conformité** *(Niveau 2)*  \\n3. **Anticipation des imprévus et gestion de la relation client** *(Niveau 3)*  \\n\\n---\\n\\nDis-moi si tu souhaites détailler le contenu de chaque quiz ou des exemples de questions pour certains postes ou niveaux !",
        "parameters": [
            {
                "name": "quizs",
                "type": "arrayObject",
                "isRequired": true,
                "description": "ensemble des 15 quiz",
                "definitionName": "quiz"
            }
        ],
        "objectDefinitions": [
            {
                "name": "quiz",
                "properties": [
                    {
                        "name": "Name",
                        "type": "string",
                        "isRequired": true,
                        "description": "Nom du quiz"
                    },
                    {
                        "name": "level",
                        "type": "number",
                        "isRequired": true,
                        "description": "niveau du quiz (1, 2 ou 3)"
                    }
                ],
                "description": "quiz"
            }
        ]
    }
]

And here is the output where my problem lies :

[
    {
        "quizs": {
            "Name": "Reconnaître les types de taches courantes",
            "level": 1
        }
    }
]
1 Like

heyy @Pierre_Bertinet Welcome to the community!

Can you please share screenshot of your scenario and GPT module configuration.

At first glance looks like you can solve this by utilizing JSON response option. Read more here : I want to parse out JSON - #3 by Prem_Patel

Let me know if you have any other questions!

Best,
@Prem_Patel

Hello @Prem_Patel , thank you for the responses. Here are the screenshots you asked for.

I would like to avoid using json because in the I would love my finale scenario to be used by non-tech people. What I have difficulty wrapping my head arround is the fact that this same module sometimes work and return an array (not in this exact configuration through).

If it’s not possible and I have to use JSON, what’s the best path forward?



1 Like

In this case just make sure you are using detailed description for objects and arrays.

After reviewing your post on JSON usage, I guess, the most robust way of handling that is using json. Thank you for your answers. I still does not get why the previous method does not work.

1 Like