Issue with JSON parsing and cleanup

Hi I’m working with chatgpt asking it to send me a JSON answer with various keys and values, trying to get a very precize output.

Most of the time, the below code allows me to parse the JSON properly, but too often (20-30%) it doesn’t send me an understandable format.

I would like to
1 - know if there is any other solution to properly or automaticaly parse the JSON from chatgpt (random output even if prompt is clear) like on other softwares (make, pabbly, zapier…)
2 - know there is anyway to improve my code or if any has one with 95+% success at least
3 - any other idea or solutions

Thanks.

export const code = async (inputs) => {
    let jsonText = inputs.textjson;
    console.log(jsonText);

    // Nettoyer la syntaxe avant et après les crochets d'entrée et de sortie
    jsonText = jsonText.trim(); // Supprime les espaces au début et à la fin
    jsonText = jsonText.replace(/^[^\[\{]+|[^\]\}]+$/g, ''); // Supprime les caractères non JSON au début et à la fin

    // Remplacer les caractères problématiques
    jsonText = jsonText.replace(/\\n/g, ''); // Supprime les retours à la ligne échappés
    jsonText = jsonText.replace(/\\r/g, ''); // Supprime les retours chariot échappés
    jsonText = jsonText.replace(/\s+/g, ' '); // Remplace les espaces multiples par un seul espace
    jsonText = jsonText.replace(/\\"/g, '"'); // Remplace les guillemets échappés par des guillemets normaux

    // Ajouter des crochets si le texte n'en a pas
    if (!jsonText.startsWith('[')) {
        jsonText = '[' + jsonText;
    }
    if (!jsonText.endsWith(']')) {
        jsonText = jsonText + ']';
    }

    try {
        // Parse le texte JSON
        const jsonArray = JSON.parse(jsonText);

        // Initialiser un objet vide pour contenir les données consolidées
        const consolidatedObject = {};

        // Itérer à travers chaque objet dans le tableau et combiner les clés et valeurs
        jsonArray.forEach(item => {
            Object.keys(item).forEach(key => {
                consolidatedObject[key] = item[key];
            });
        });

        // Retourner le tableau avec un seul objet consolidé
        return [consolidatedObject];
    } catch (error) {
        console.error("Erreur lors du parsing du JSON :", error);
        throw new Error("Le texte JSON fourni est mal formé.");
    }
};

We’re working on supporting structured data extraction so you won’t need to parse the responses yourself … will be out soon :rocket:

Thanks @anasbarg

Do you have an ETA on this ?

Just a suggestion from something I start doing here and get no more problems with OpenAI.

If you create an Assistant in OpenAI Playground, now it’s possible to choose Response Format as json_object.

The only thing you need to do is specify in the assistant prompt you want a json output.

From that I start to get zero problems with OpenAI response.

@Nadir_de_Source it’s out now in the “Text AI” piece.