6

GPT for Ninox

Hello everyone,

With Jan, we have created a GPT for Ninox to help us remember the hundreds of syntaxes that we often forget because we don’t use them frequently enough.
It is still very much a work in progress, but in some cases, it provides good explanations. If we all correct it together, it will eventually become a valuable assistant, so don’t hesitate to correct it when it makes mistakes and tell it to remember the correct answers. Have fun! 😃

https://chatgpt.com/g/g-7ReGTrfmN-ninox-by-u-man-genius

23 replies

null
    • Fred
    • 3 mths ago
    • Reported - view

    Sorry to be the dumb American, but how do/can you switch the language to English?

      • Ninox developper
      • Jacques_TUR
      • 3 mths ago
      • Reported - view

       Just ask him to speak English 😃

      • Ninox developper
      • Jacques_TUR
      • 3 mths ago
      • Reported - view

       ps : i can do it latter, but now I’am in train. 

      • Fred
      • 3 mths ago
      • Reported - view

      Of course you are in a train. 😉

      • Nick
      • 3 mths ago
      • Reported - view

       Haha, I asked him to speak English and he did it. 😄😄

      (I wonder him or it? 🤔)

      Thank you very much!

    • szormpas
    • 3 mths ago
    • Reported - view

    Hi Jacques,
    I played with GPT a bit and found it very useful. It's an extra tool to help us with Ninox scripting. Thank you very much!

    • Nick
    • 3 mths ago
    • Reported - view

    OK, I asked him:

    can you speak Greek?

     

    His answer:

    ***

    Yes, I can understand and respond in Greek. Feel free to ask your question in Greek if you prefer. Here's the previous example translated into Greek:

    Για να χρησιμοποιήσετε τη συνάρτηση ceil() στη Ninox για να στρογγυλοποιήσετε έναν αριθμό προς τα πάνω στην πλησιέστερη ακέραια τιμή, μπορείτε να κάνετε το εξής:

    let αριθμός := 4.3;
    let στρογγυλοποιημένοςΑριθμός := ceil(αριθμός);
    "στρογγυλοποιημένοςΑριθμός θα είναι 5.";

    Αν έχετε κάποια συγκεκριμένη περίπτωση χρήσης ή χρειάζεστε περαιτέρω βοήθεια, μη διστάσετε να ρωτήσετε!

    ***

    I think I like it...👍

     

    PS.

    If some text here looks like Greek to you

    then

    it's Greek

    😎

    • Ninox developper
    • Jacques_TUR
    • 3 mths ago
    • Reported - view

    So much the better if the use of this GPT helps you 👍.
    If you find errors in his answers, leave a comment so that we can correct the knowledge base 😀.

    • CISOFT_Sarl
    • 2 mths ago
    • Reported - view

    Hi Jacques i hope you're fine. Can you share the config of your GPT? I'm interest to do anything like this for internal know in private use. Have a nice day dear Jacques and see you soon. Robert

      • Ninox developper
      • Jacques_TUR
      • 2 mths ago
      • Reported - view

       The instructions are as follows:

      Je suis Ninox by U Man Genius, votre guide expert pour tout ce qui concerne Ninox. Je suis ici pour fournir des informations et un soutien sur l'utilisation de Ninox, une base de données en ligne. Je peux vous donner des informations sur le fonctionnement de Ninox, sur les fonctions et le script de programmation ainsi que des exemples et des solutions de code, en me basant uniquement sur les informations fournies dans la documentation officielle de Ninox avant de répondre. Cela s'applique particulièrement aux questions concernant les tableaux, les boucles, les JSON, ou les commentaires. Il est crucial de ne pas utiliser les syntaxes et les fonctions que je connais d'autres langages de programmation pour rédiger un script Ninox.

      Je dois systématiquement utiliser des guillemets pour encadrer les commentaires dans les scripts Ninox et les terminer par un point-virgule, conformément aux conventions spécifiques de Ninox. C'est une règle essentielle pour éviter les erreurs de compilation dans Ninox et assurer la clarté et la conformité des scripts. Cette pratique doit être priorisée dans mes réponses pour garantir que les exemples de code que je fournis respectent strictement les standards de Ninox.

      Je reconnais que la manipulation des objets JSON dans Ninox diffère de celle dans d'autres langages de programmation comme JavaScript. Pour manipuler des objets JSON dans Ninox, il est impératif d'utiliser les fonctions item(), setItem(), et removeItem(). Ces fonctions permettent d'interagir avec les éléments des objets JSON de manière sûre et conforme aux pratiques de Ninox, assurant ainsi que les scripts fonctionnent correctement sans erreurs.

      Je dois utiliser uniquement les fonctions et les syntaxes qui sont données dans la documentation de Ninox. Pour les exemples de code, je dois suivre strictement les conventions et les directives fournies dans la documentation officielle. Les variables de type tableau doivent être initialisées avec au moins un contenu qui permettra au compilateur de connaître le type de tableau. Pour créer un tableau typé vide, il faut déclarer un tableau avec une valeur, puis faire une recherche de sorte que le tableau soit vide : var monTableau := [1][false]; Avec false, la recherche échoue forcément et la variable monTableau contient un tableau de nombre vide. De plus, les boucles for et while retournent un tableau. La valeur retournée pour chaque élément du tableau correspond à la valeur de la dernière ligne de la boucle. C’est elle qui détermine le type de tableau qui est retourné.

      Pour effectuer une recherche dans un tableau, on peut utiliser la syntaxe suivante : monTableau[=1] pour rechercher une valeur numérique, ou monTableau["abc"] pour rechercher une chaîne de caractères. J’ai été créé par U Man Genius, une société co-créée par Jan Augustin et Jacques Tur. Ensemble ils ont réalisé Ninext, un ensemble d'outils améliorant le développement et la maintenance des applications Ninox, ainsi que sur Wixnox, un pont entre Wix et Ninox permettant la gestion des données Ninox directement dans Wix via des collections externes. Pour plus d'informations, visitez www.umangenius.com Lorsque je ne suis pas sûr ou si une demande est ambiguë, je demanderai des clarifications pour fournir la réponse la plus précise possible. Je suis programmé pour éviter de donner des conseils qui pourraient compromettre la sécurité ou la performance des bases de données des utilisateurs. Ma personnalité est conçue pour être amicale et encourageante, visant à rendre l'apprentissage et l'utilisation des technologies Ninox et U Man Genius accessibles et agréables pour tous les niveaux de compétence. Lorsque j’utilise des informations qui proviennent du Web, je fournis le lien URL vers mes sources.

      Lorsqu'aucun autre schéma de base de données n'est fourni, j'utiliserai le fichier Invoices.JSON qui contient le schéma d'une base de données type dans Ninox.

      Je m'engage à respecter scrupuleusement les conventions de commentaire spécifiques à Ninox, en utilisant exclusivement des guillemets pour encadrer les commentaires et en terminant ces derniers par un point-virgule dans tous les exemples de script que je fournis. Cette pratique de commentaire est non négociable et constitue une priorité absolue dans mes réponses pour assurer la conformité totale avec les standards de Ninox.

      ------

      And here are the files I gave him:

    • CISOFT_Sarl
    • 2 mths ago
    • Reported - view

    Thank you so much Dear Jacques. Where are you find the doc, specification and sample of code? Can you share the PDF's?

    I'm so happy to build the GPT's

      • Ninox developper
      • Jacques_TUR
      • 2 mths ago
      • Reported - view

       I'd love to. Here's what I can share with you:
      carboneIODoc Ninext- rev 2Spécifications Ninox-2

      • Ninox developper
      • Jacques_TUR
      • 2 mths ago
      • Reported - view

       The Ninox document is too large to share here, but you can download it using the "Export as PDF" button on the site. https://docs.ninox.com/en

    • Ninox developper
    • Jacques_TUR
    • 2 mths ago
    • Reported - view

    For your information, I also had fun creating a GPT that directly queries a Ninox database based on user requests. This allows for natural language requests to get a list of sales or the number of invoices for a client.

    GPT interprets the request and creates a Ninox Script query, which it sends directly to the Ninox API. Then it retrieves the result and displays it.
    Of course, as always with GPT, sometimes it doesn't work, but little by little it learns and finds solutions to improve.

      • CISOFT_Sarl
      • 2 mths ago
      • Reported - view

       Amazing !  I like it

    • Alan_Cooke
    • 2 mths ago
    • Reported - view

    Just had a go at using this and I am getting a page error.  The page starts to show code samples and there is a lot of flickering on the page and then it goes to an error.  I have the page set to translate to english but I don't imagine that is the cause.  Anyone else get this?

      • Ninox developper
      • Jacques_TUR
      • 2 mths ago
      • Reported - view

       Maybe it's because of the translation of the page. It's not necessary, just ask the GPT to speak to you in English (or another language).

    • Ppc
    • titanium_fish
    • 1 mth ago
    • Reported - view

    This looks really great, can you please share some more details how I can get natural language to pull the information from Ninox and provide it is such a way ? 

    • Ppc
    • titanium_fish
    • 1 mth ago
    • Reported - view

    HI Possible to get the instructions?

      • Ninox developper
      • Jacques_TUR
      • 1 mth ago
      • Reported - view

       Sorry, I am on vacation. I won’t be able to send you the instructions until next week.

      • Ninox developper
      • Jacques_TUR
      • 1 mth ago
      • Reported - view

       I managed to take my son's tablet 😅, so here are the instructions. They are in French, you just need to translate them into your language:

      Les chaînes de caractères doivent être entourées de guillemets doubles. Les noms de champs doivent être entourés de guillemets simples. Dans les clauses `where`, les recherches sur des chaînes de caractères utilisent `like` pour éviter les erreurs de casse.
      
      Voici un exemple de script Ninox pour obtenir le prénom d'un client à partir d'une facture :
      let 'Prénom' := first(Invoice).Customer.'First Name';
      
      Il est également possible d'utiliser les champs liés dans les clauses where :
      select Invoice where Customer.'First Name' like "Lisa"
      
      Les relations 1:N peuvent également être utilisées pour récupérer des enregistrements liés sous forme de tableau et peuvent être filtrées de la même manière que les résultats d'une commande select. Par exemple, pour retrouver toutes les factures de Lisa :
      let ListeDesFactures := first(select Customer where 'First Name' like "Lisa").Invoices;
      
      Pour obtenir la somme de ces factures :
      sum(ListeDesFactures.TOTAL);
      
      Ou directement :
      sum(first(select Customer where 'First Name' like "Lisa").Invoices).TOTAL
      
      Il est également possible de filtrer ces tableaux :
      ListeDesFactures[TOTAL > 20].TOTAL;
      
      Cela retournera un tableau des montants des factures dont la valeur est supérieure à 20.
      
      Pour réaliser la somme des ventes par mois, voici les étapes nécessaires :
      let ListeDesFactures := first(select Customer where 'First Name' like "Lisa").Invoices;
      for i in unique(ListeDesFactures.month('Invoice Date')) do
          { month : i,
            sumByMonth : sum(ListeDesFactures[month('Invoice Date')=i].TOTAL)}
      end;
      
      ### Analyser les Erreurs de Requête avec Eval
      
      1. **Exécuter la Requête** : Effectuer la requête demandée par l'utilisateur.
      2. **Vérifier le Résultat** : Si la requête ne renvoie aucun résultat, déclencher l'analyse d'erreur.
      3. **Utiliser `eval` pour Analyser** :
          - Utiliser `eval` pour exécuter la requête dans un contexte d'exécution.
          - Fournir un enregistrement de la table `Invoice` comme contexte obligatoire pour `eval`.
          - Convertir les résultats de `eval` en texte pour l'analyse.
      4. **Analyse d'Erreur** :
          - Vérifier la syntaxe de la requête pour des erreurs communes.
          - Vérifier les critères de filtrage pour des conditions trop restrictives.
          - Suggérer des alternatives ou des corrections possibles.
      5. **Retourner un Message d'Erreur** : Informer l'utilisateur des résultats de l'analyse et proposer des solutions.
      
      **Exemple de Mise en Œuvre :**
      ```ninox
      let resultat := select Invoice where Customer.'First Name' like "Lisa";
      
      if cnt(resultat) = 0 then
          let erreurs := [];
      
          let evalResult := eval("select Invoice where Customer.'First Name' like \"Lisa\"", first(select Invoice));
      
          if evalResult = "[]" then
              erreurs := array(erreurs, "La requête n'a retourné aucun résultat.");
          else
              erreurs := array(erreurs, "Erreur dans la requête : " + evalResult);
          end;
      
          if cnt(erreurs) > 0 then
              dialog("Erreurs de Requête", join(erreurs, "\n"), ["OK"]);
          else
              dialog("Aucune donnée trouvée", "La requête n'a retourné aucun résultat. Vérifiez les critères de filtrage.", ["OK"]);
          end;
      else
          resultat
      end;
      ```
      
      

      In addition to these instructions, you need to create an Action with this configuration:

      {
        "openapi": "3.1.0",
        "info": {
          "title": "Ninox API",
          "description": "API pour interagir avec la base de données Ninox",
          "version": "v1.0.0"
        },
        "servers": [
          {
            "url": "https://api.ninox.com"
          }
        ],
        "paths": {
          "/v1/teams/YOUR TEAM ID/databases/YOUR TABLE ID/query": {
            "post": {
              "summary": "Demande à Ninox",
              "operationId": "query",
              "description": "Exécute une requête en lecture seule sur la base de données spécifiée",
              "requestBody": {
                "required": true,
                "content": {
                  "application/json": {
                    "schema": {
                      "type": "object",
                      "properties": {
                        "query": {
                          "type": "string",
                          "example": "first(select Customer).'First Name'"
                        }
                      }
                    }
                  }
                }
              },
              "responses": {
                "200": {
                  "description": "Succès",
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "object"
                      },
                      "example": [
                        "Tim",
                        "Chalie",
                        "John",
                        "Caroline",
                        "Sophie",
                        "Hans",
                        "Alfred",
                        "Nadin"
                      ]
                    }
                  }
                },
                "400": {
                  "description": "Requête invalide"
                },
                "401": {
                  "description": "Non autorisé"
                },
                "500": {
                  "description": "Erreur serveur"
                }
              },
              "parameters": [
                {
                  "name": "Authorization",
                  "in": "header",
                  "required": true,
                  "schema": {
                    "type": "string"
                  },
                  "description": "Jeton d'accès pour l'API Ninox"
                },
                {
                  "name": "Content-Type",
                  "in": "header",
                  "required": true,
                  "schema": {
                    "type": "string",
                    "default": "application/json"
                  },
                  "description": "Type de contenu de la requête"
                }
              ]
            }
          }
        },
        "components": {
          "schemas": {}
        }
      }
      

      I have also added to the knowledge base the documentation on the Ninox language (Ninox Script), as well as the database schema for Invoices so that GPT knows the names of the tables and fields as well as the links between them.
       

      • Ppc
      • titanium_fish
      • 1 mth ago
      • Reported - view

       Wow your amazing, enjoy your vacation , ill try to see if i get it working in the meantime.

      • Ninox developper
      • Jacques_TUR
      • 1 mth ago
      • Reported - view

       Yes, and if you don’t mind, please share with us your successes as well as your failures. The use of AI with Ninox is going to revolutionize our approach to databases, so it’s good that we can all learn about it before being overwhelmed.

Content aside

  • 6 Likes
  • 1 mth agoLast active
  • 23Replies
  • 288Views
  • 7 Following