#Concours

0 Abonnés · 64 Publications

La balise Concours regroupe les publications liées à tout concours de codage qui se déroule sur la communauté des développeurs d'InterSystems.

Annonce Irène Mykhailova · Déc 25, 2023

Salut les développeurs,

Nous avons des nouvelles passionnantes ! Le nouveau concours de programmation en ligne InterSystems dédié à tout ce qui touche à la santé débutera très prochainement !

🏆 Concours InterSystems FHIR et interopérabilité de la santé numérique 🏆

Durée : 15 janvier - 4 février 2024

Prix : 14 000 $

 

0
0 63
Article Iryna Mykhailova · Sept 25, 2023 6m read

FHIR a transformé le secteur des soins de santé en fournissant un modèle de données normalisé pour la création d'applications de soins de santé et en favorisant l'échange de données entre les différents systèmes de soins de santé. La norme FHIR est basée sur des approches modernes axées sur les API, ce qui la rend plus accessible aux développeurs mobiles et web. Cependant, l'interaction avec les API FHIR peut encore s'avérer difficile, en particulier lorsqu'il s'agit de requêter des données à l'aide du langage naturel.

Nous présentons l'application Chaîne OpenAPI et IA - FHIR une solution qui permet aux utilisateurs d'interagir avec les API FHIR à l'aide de requêtes en langage naturel. Conçue avec OpenAI, LangChain et Streamlit, cette application simplifie le processus d'interrogation des API FHIR et le rend plus facile à utiliser.

 

Quelles sont les spécifications OpenAPI de FHIR ?

Les spécifications OpenAPI (anciennement connues sous le nom de "Swagger" et faisant actuellement partie de l'" Initiative OpenAPI " (https://www.openapis.org/)) sont devenues un outil essentiel dans le monde du développement logiciel, permettant aux développeurs de concevoir, de documenter et d'interagir avec les API de manière plus efficace. Les spécifications OpenAPI définissent un format normalisé, lisible par une machine, pour décrire les API RESTful, offrant ainsi un moyen clair et cohérent de comprendre leurs capacités et de les utiliser de manière efficace.

Dans le domaine des soins de santé, FHIR s'est imposé comme une norme de premier plan pour l'échange de données et l'interopérabilité. Pour améliorer les capacités d'interopérabilité de FHIR, HL7 a officiellement documenté les spécifications OpenAPI de FHIR, qui permettent aux développeurs d'intégrer de manière transparente les ressources et les opérations FHIR dans leurs solutions logicielles.

 

Avantages des spécifications OpenAPI de FHIR :

  1. Description normalisée de l'API : Les spécifications OpenAPI fournissent une description complète et normalisée des ressources, des opérations et des interactions FHIR. Les développeurs peuvent facilement comprendre la structure et les capacités des API basées sur FHIR, ce qui facilite la création d'intégrations et l'interaction avec les systèmes de santé.
  2. Promotion de l'interopérabilité : La collaboration entre les développeurs est encouragée, ce qui favorise l'adoption des normes et des meilleures pratiques FHIR. Les spécifications fournissent un langage et un cadre communs pour discuter des intégrations et des implémentations basées sur FHIR, ce qui favorise la collaboration entre les développeurs.
  3. Documentation et tests améliorés : Documentation interactive et séries de tests pour une meilleure compréhension et une meilleure validation. Les développeurs peuvent créer une documentation détaillée sur les API, ce qui permet aux autres développeurs de comprendre et d'utiliser plus facilement les API basées sur FHIR. Les séries de tests basées sur les spécifications permettent d'effectuer des tests complets et de valider les intégrations d'API, garantissant ainsi la fiabilité et la précision des échanges de données de santé.
  4. Expérience améliorée pour les développeurs : Génération automatique de bibliothèques client et de SDK pour une intégration transparente. Cela simplifie le processus d'intégration et réduit le temps et les efforts nécessaires pour incorporer la fonctionnalité FHIR dans leurs applications.

 

Comment les chaînes FHIR, OpenAI et OpenAPI fonctionnent-elles ensemble ?

L'application Chaîne OpenAPI et IA - FHIR s'appuie sur LangChain pour charger et analyser les spécifications OpenAPI (Chaîne OpenAPI). Ensuite, sur la base de ces spécifications, la chaîne d'invites fournies par OpenAI vise à comprendre les requêtes en langage naturel et à les convertir en demandes d'API FHIR appropriées. Les utilisateurs peuvent poser des questions en langage naturel et l'application interagira avec l'API FHIR choisie pour récupérer les informations pertinentes.

Par exemple, un utilisateur peut demander : "Quelle est la dernière mesure de la tension artérielle du patient John Doe (ID 111) ?" L'application traduira alors cette requête en une demande d'API FHIR, récupérera les données requises et les présentera à l'utilisateur dans un format facilement compréhensible.

 

Avantages de l'application Chaîne OpenAPI et IA - FHIR

  1. Interactions faciles à utiliser : L'application permet aux utilisateurs d'interagir avec les API FHIR à l'aide de requêtes en langage naturel, ce qui facilite l'accès et l'analyse des données de santé pour les utilisateurs non techniques.
  2. Amélioration de l'efficacité : L'application rationalise le processus d'interrogation des API FHIR, réduisant ainsi le temps et les efforts nécessaires pour obtenir des informations pertinentes. Elle permet également de réduire le nombre de clics (temps passé) pour trouver une information particulière à partir de l'application.
  3. Personnalisable : Les normes FHIR simplifient la récupération de données cohérentes à partir de n'importe quel serveur FHIR, ce qui permet une personnalisation aisée. Il peut être configuré sans effort pour s'intégrer de manière transparente à n'importe quelle API FHIR, offrant ainsi une solution flexible et adaptable aux diverses exigences en matière de données de santé.

 

Premiers pas avec l'application Chaîne OpenAPI et IA - FHIR

Pour commencer à utiliser l'application Chaîne OpenAPI et IA - FHIR, suivez les étapes suivantes :

  1. Obtenez une clé API d'OpenAI auprès de la Plate-forme OpenAI.
  2. Obtenez un point de terminaison API du serveur FHIR. Vous pouvez utiliser votre propre exemple de serveur FHIR (accès non authentifié nécessaire) ou créer un exemple de serveur temporaire en suivant les instructions données dans la Plate-forme d'apprentissage de FHIR pour InterSystems IRIS.
  3. Essayez l'application en ligne ou ou configurez-la localement en suivant les instructions fournies.

Grâce à l'intégration de capacités d'IA et de traitement du langage naturel, l'application haîne OpenAPI et IA - FHIR offre un moyen plus intuitif pour interagir avec les API FHIR, rendant les données de santé plus accessibles et plus faciles à analyser pour les utilisateurs de tous niveaux techniques.

Votez pour notre application dans le cadre du concours Grand Prix si vous la trouvez pertinente !

Si vous pensez à des applications qui pourraient utiliser cette implémentation, n'hésitez pas à les partager dans le fil de discussion.

0
0 73
Annonce Irène Mykhailova · Mai 30, 2023

Salut les développeurs,

Le concours annuel pour les développeurs d'InterSystems IRIS approche !

Nous sommes ravis de vous inviter tous à participer au concours Grand Prix pour la création de solutions open source à l'aide de la plate-forme de données InterSystems IRIS !

🏆 Concours de programmation Grand Prix InterSystems 2023 🏆

La durée: 12 juin - 9 juillet, 2023

Le prix: $26,000


0
0 73
Article Guillaume Rongier · Avr 7, 2023 9m read

Suite à la partie précédente, il est temps de tirer parti de l'instruction de VALIDATION DU MODÈLE IntegratedML, qui fournit des informations permettant de surveiller vos modèles ML. Vous pouvez la voir en action ici

Le code présenté ici est dérivé d'exemples fournis par le modèle InterSystems IntegratedML ou la documentation IRIS, documentation

Remarque: Le code présenté ici n'a qu'une valeur explicative. Si vous souhaitez l'essayer, j'ai développé une application modèle - iris-integratedml-monitor-example, qui participe au concours IA d'InterSystems IRIS (InterSystems IRIS AI Contest). S'il vous plaît, après avoir lu cet article, vous pouvez le consulter et, si vous l'aimez, votez pour moi! :)

Contenu

Partie I:

Partie II:

Surveillance des performances du ML

Pour surveiller votre modèle ML, vous aurez besoin d'au moins deux fonctions :

  1. Fournisseur de mesures de performance
  2. Service de surveillance et de notification

Heureusement, IRIS nous fournit ces deux caractéristiques nécessaires.

Obtenir des mesures de performance des modèles ML

Comme nous l'avons vu dans la partie précédente, IntegratedML fournit l'instruction VALIDER LE MODÈLE pour calculer les paramètres de performance suivants :

  • Exactitude : la qualité de votre modèle (des valeurs proches de 1 signifient des taux élevés de réponses correctes).
  • Précision : dans quelle mesure votre modèle traite les faux positifs (des valeurs proches de 1 signifient un taux élevé de non faux positifs).
  • Rappel : dans quelle mesure votre modèle traite les faux négatifs (des valeurs proches de 1 signifient un taux élevé de non faux négatifs).
  • Mesure F : une autre façon de mesurer la précision, utilisée lorsque la précision n'est pas satisfaisante (des valeurs proches de 1 signifient un taux élevé de réponses correctes).

Remarque: ces définitions ne sont pas formelles, elles sont même assez superficielles ! Je vous encourage à prendre le temps de les interpréter.

Ce qui est intéressant, c'est qu'à chaque fois que vous appelez VALIDER LE MODÈLE (VALIDATE MODEL), IntegrateML enregistre sa mesure de performance, et nous pouvons tirer parti de cette fonctionnalité pour la surveiller.

Moteur de surveillance

InterSystems IRIS fournit le framework du Moniteur de Système pour traiter les tâches de surveillance. Il vous permet également de définir des règles personnalisées afin de déclencher des notifications basées sur des prédicats appliqués à ces mesures.

Par défaut, un ensemble de mesures est fourni pour le disque, la mémoire, les processus, le réseau, etc. En outre, le Moniteur de Système vous permet également d'étendre les moniteurs pour couvrir une infinité de possibilités. De tels moniteurs personnalisés sont appelés une application de moniteur (Application Monitor) dans la terminologie de moniteur de système (System Monitor).

Vous pouvez obtenir plus d'informations sur le Moniteur de Système ici.

La mise en place de l'ensemble

Jusqu'à présent, nous avons un moyen d'obtenir les valeurs des métriques de performance de chaque validation du modèle et, un outil qui pourrait déclencher des alertes basées sur des règles personnalisées appliquées à des sources de métriques personnalisées... Bien, il est temps de les combiner.

Tout d'abord, nous devons créer une classe de moniteur d'application personnalisée, en étendant la classe %Monitor.Abstract et en implémentant les méthodes Initialize et GetSample.

Class MyMetric.IntegratedMLModelsValidation Extends %Monitor.Adaptor
{

/// Initialiser la liste des métriques de validation des modèles.
Method Initialize() As %Status
{
    Return $$$OK
}

/// Obtenir un échantillon métrique de routine.
/// Un code de retour de $$$OK indique qu'il y a une nouvelle instance d'échantillon.
/// Tout autre code de retour indique qu'il n'y a pas d'échantillon.
Method GetSample() As %Status
{
    Return $$$OK
}

}

Les moniteurs système émettent des appels réguliers aux classes de moniteurs afin d'obtenir un ensemble de mesures appelées échantillons. Ces échantillons peuvent être simplement surveillés ou utilisés pour vérifier si des règles d'alerte doivent être levées. Vous définissez la structure de ces échantillons en définissant des propriétés standard non internes dans la classe monitior. Il est important de souligner ici que vous devez spécifier, dans le paramètre INDEX, l'une de ces propriétés comme clé primaire de chaque échantillon - sinon une erreur de clé dupliquée sera générée.

Class MyMetric.IntegratedMLModelsValidation1 Extends %Monitor.Adaptor
{

Parameter INDEX = "ModelTrainedName";

/// Nom de la définition du modèle
Property ModelName As %Monitor.String;

/// Nom du modèle formé en cours de validation
Property ModelTrainedName As %Monitor.String;

/// Erreur de validation (le cas échéant)
Property StatusCode As %Monitor.String;

/// Précision
Property ModelMetricPrecision As %Monitor.Numeric;

/// Rappel
Property ModelMetricRecall As %Monitor.Numeric;

/// Mesure F
Property ModelMetricFMeasure As %Monitor.Numeric;

/// Exactitude
Property ModelMetricAccuracy As %Monitor.Numeric;

...

}

La méthode Initialize est appelée une fois pour chaque appel de moniteur et la méthode GetSample est appelée jusqu'à ce qu'elle renvoie 0.

Ainsi, nous pourrions mettre en place un SQL sur l'historique de validation d'IntegrateML pour fournir des informations de métriques au moniteur, en implémentant les méthodes Initialize et GetSample :

/// Initialiser la liste des métriques de validation des modèles.
Method Initialize() As %Status
{
	// Obtenir la dernière validation pour chaque modèle validé par l'instruction VALIDATION DU MODÈLE
	Set sql =
	"SELECT MODEL_NAME, TRAINED_MODEL_NAME, STATUS_CODE, %DLIST(pair) AS METRICS_LIST FROM ("_
		"SELECT m.*, $LISTBUILD(m.METRIC_NAME, m.METRIC_VALUE) pair, r.STATUS_CODE "_
		"FROM INFORMATION_SCHEMA.ML_VALIDATION_RUNS r "_
		"JOIN INFORMATION_SCHEMA.ML_VALIDATION_METRICS m "_
		"ON m.MODEL_NAME = r.MODEL_NAME "_
			"AND m.TRAINED_MODEL_NAME = r.TRAINED_MODEL_NAME "_
			"AND m.VALIDATION_RUN_NAME = r.VALIDATION_RUN_NAME "_
		"GROUP BY m.MODEL_NAME, m.METRIC_NAME "_
		"HAVING r.COMPLETED_TIMESTAMP = MAX(r.COMPLETED_TIMESTAMP)"_
	") "_
	"GROUP BY MODEL_NAME"
    Set stmt = ##class(%SQL.Statement).%New()
    $$$THROWONERROR(status, stmt.%Prepare(sql))
    Set ..Rspec = stmt.%Execute()
    Return $$$OK
}

/// Obtenir un échantillon métrique de routine.
/// Un code de retour de $$$OK indique qu'il y a une nouvelle instance d'échantillon.
/// Tout autre code de retour indique qu'il n'y a pas d'échantillon.
Method GetSample() As %Status
{
    Set stat = ..Rspec.%Next(.sc)
    $$$THROWONERROR(sc, sc)

    // Quitter si nous avons fait tous les jeux de données
    If 'stat {
        Quit 0
    }

    // remplir cette instance
    Set ..ModelName = ..Rspec.%Get("MODEL_NAME")
    Set ..ModelTrainedName = ..Rspec.%Get("TRAINED_MODEL_NAME")_" ["_$zdt($zts,3)_"]"
    Set ..StatusCode = ..Rspec.%Get("STATUS_CODE")
    Set metricsList = ..Rspec.%Get("METRICS_LIST")
    Set len = $LL(metricsList)
    For iMetric = 1:1:len {
	    Set metric = $LG(metricsList, iMetric)
	    Set metricName = $LG(metric, 1)
	    Set metricValue = $LG(metric, 2)
	    Set:(metricName = "PRECISION") ..ModelMetricPrecision = metricValue
	    Set:(metricName = "RECALL") ..ModelMetricRecall = metricValue
	    Set:(metricName = "F-MEASURE") ..ModelMetricFMeasure = metricValue
	    Set:(metricName = "ACCURACY") ..ModelMetricAccuracy = metricValue
    }

    // quitter avec une valeur de retour indiquant que les données de l'échantillon sont prêtes
    Return $$$OK
}

Après avoir compilé la classe de moniteur, vous devez redémarrer le moniteur de système System Monitor afin que le système comprenne qu'un nouveau moniteur a été créé et qu'il est prêt à être utilisé. Pour ce faire, vous pouvez utiliser la routine ^%SYSMONMGR ou la classe %SYS.Monitor.

Un cas d'utilisation simple

Jusqu'à présent, nous disposons des outils nécessaires pour collecter, surveiller et émettre des alertes sur les mesures de performance du ML. Il est maintenant temps de définir une règle d'alerte personnalisée et de simuler un scénario dans lequel un modèle ML déployé commence à affecter négativement vos performances.

Tout d'abord, nous devons configurer une alerte par courriel et sa règle de déclenchement. Cela peut être fait à l'aide de la routine ^%SYSMONMGR. Cependant, afin de rendre les choses plus faciles, j'ai créé une méthode d'installation qui définit toute la configuration de l'e-mail et de la règle d'alerte. Vous devez remplacer les valeurs entre <&gt ; par les paramètres de votre serveur de messagerie et de votre compte.

ClassMethod NotificationSetup()
{
	// Régler les paramètres de l'e-mail
	Set sender = "<your e-mail address>"
	Set password = "<your e-mail password>"
	Set server = "<SMTP server>"
	Set port = "<SMTP server port>"
	Set sslConfig = "default"
	Set useTLS = 1
	Set recipients = $LB("<comma-separated receivers for alerts>")
	Do ##class(%Monitor.Manager).AppEmailSender(sender)
	Do ##class(%Monitor.Manager).AppSmtpServer(server, port, sslConfig, useTLS)
	Do ##class(%Monitor.Manager).AppSmtpUserName(sender)
	Do ##class(%Monitor.Manager).AppSmtpPassword(password)
	Do ##class(%Monitor.Manager).AppRecipients(recipients)

	// La messagerie électronique comme méthode de notification par défaut
	Do ##class(%Monitor.Manager).AppNotify(1)

	// Activer les notifications par messagerie électronique
	Do ##class(%Monitor.Manager).AppEnableEmail(1)

	Set name  = "perf-model-appointments-prediction"
	Set appname = $namespace
	Set action = 1
	Set nmethod = ""
	Set nclass = ""
	Set mclass = "MyMetric.IntegratedMLModelsValidation"
	Set prop = "ModelMetricAccuracy"
	Set expr = "%1 < .8"
	Set once = 0
	Set evalmethod = ""
	// Créer une alerte
	Set st = ##class(%Monitor.Alert).Create(name, appname, action, nmethod, nclass, mclass, prop, expr, once, evalmethod)
	$$$THROWONERROR(st, st)

	// Relancer le moniteur
	Do ##class(MyMetric.Install).RestartMonitor()
}

Dans la méthode précédente, une alerte sera émise si le moniteur obtient des valeurs de précision inférieures à 90 %.

Maintenant que notre règle d'alerte est configurée, créons, formons et validons un modèle de prédiction show/no-show avec les 500 premiers enregistrements et validons-le avec les 600 premiers enregistrements.

Remarque : Le paramètre seed sert uniquement à garantir la reproductibilité (c.-à-d. pas de valeurs aléatoires) et doit normalement être évité en production.

-- Création du modèle
CREATE MODEL AppointmentsPredection PREDICTING (Show) FROM MedicalAppointments USING {\"seed\": 3}
-- Formation à l'aide des 500 premiers enregistrements du jeu de données
TRAIN MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID <= 500 USING {\"seed\": 3}
-- Affichage des informations sur le modèle
SELECT * FROM INFORMATION_SCHEMA.ML_TRAINED_MODELS
|   | NOM_DU_MODÈLE             | NOM_DU_MODÈLE_FORMÉ      | FOURNISSEUR | HORODATAGE_FORMÉ       | TYPE_DU_MODÈLE     | INFOS_MODÈLE                                        |
|---|------------------------|-------------------------|----------|-------------------------|----------------|---------------------------------------------------|
| 0 | AppointmentsPredection | AppointmentsPredection2 | AutoML   | 2020-07-12 04:46:00.615 | classification | ModelType:Logistic Regression, Package:sklearn... |

Notez que IntegrateML, en utilisant AutoML comme fournisseur (colonne FOURNISSEUR), déduit du jeu de données fourni, un modèle de classification (colonne TYPE_DU_MODÈLE), avec l'algorithme de régression logistique, à partir de la bibliothèque scikit-learn (colonne INFOS_MODÈLE). Il est important de souligner ici la règle "Garbage In, Garbage Out" ("à données inexactes, résultats erronés") - c'est-à-dire que la qualité du modèle est directement liée à la qualité des données.

Poursuivons maintenant avec la validation du modèle.

-- CCalculer les performances du modèle en utilisant les 600 premiers enregistrements (500 de l'ensemble formé + 100 pour le test).
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID < 600 USING {\"seed\": 3}
-- Afficher les mesures de validation
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS WHERE MODEL_NAME = '%s'
| NOM_MÉTRIQUE              | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-------------|-----------|--------|
| AppointmentsPredection21 | 0.9      | 0.94        | 0.98      | 0.91   |

Le modèle peut être utilisé pour effectuer des prédictions à l'aide de l'instruction PREDICT :

SELECT PREDICT(AppointmentsPredection) As Predicted, Show FROM MedicalAppointments  WHERE ID <= 500
|     | Prédit    | Affiché|
|-----|-----------|-------|
| 0   | 0         | Faux |
| 1   | 0         | Faux |
| 2   | 0         | Faux |
| 3   | 0         | Faux |
| 4   | 0         | Faux |
| ... | ...       | ...   |
| 495 | 1         | Vrai  |
| 496 | 0         | Vrai  |
| 497 | 1         | Vrai  |
| 498 | 1         | Vrai  |
| 499 | 1         | Vrai  |

Ensuite, simulons l'ajout de 200 nouveaux enregistrements (pour un total de 800 enregistrements) au modèle de manière à ce que sa précision soit ramenée à 87 %.

-- Calculer les performances du modèle en utilisant les 800 premiers enregistrements.
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments WHERE ID < **800** USING {\"seed\": 3}
-- Afficher les mesures de validation
SELECT * FROM INFORMATION_SCHEMA.ML_VALIDATION_METRICS WHERE MODEL_NAME = '%s'
| NOM_MÉTRIQUE              | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-----------|-----------|--------|
| AppointmentsPredection21 | 0.9      | 0.94      | 0.98      | 0.91   |
| AppointmentsPredection22 | 0.87     | 0.93      | 0.98      | 0.88   |

Comme nous avons mis en place une règle pour envoyer une notification par messagerie électronique si la précision est inférieure à 90%, le moniteur de système System Monitor comprend qu'il est temps de déclencher une telle alerte vers le(s) compte(s) de messagerie électronique concerné(s).

Dans le corps du message, vous pouvez trouver des informations sur l'alerte, telles que son nom, le moniteur d'application et ses valeurs métriques qui ont déclenché l'alerte.

Ainsi, une telle situation sera notifiée aux personnes qui pourront prendre des mesures pour y remédier. Par exemple, une action pourrait consister simplement à réentraîner le modèle, mais dans certains cas, une approche plus élaborée peut s'avérer nécessaire.

Il est certainement possible d'approfondir les mesures de surveillance et de créer de meilleures alertes. Par exemple, imaginez que vous ayez plusieurs modèles ML en cours d'exécution et que différentes personnes soient responsables de chacun d'entre eux. Vous pourriez utiliser la métrique du nom du modèle et définir des règles d'alerte spécifiques, pour des destinataires d'e-mails spécifiques.

Le moniteur System Monitor vous permet également de déclencher une ClassMethod au lieu d'envoyer un courriel. Ainsi, vous pouvez exécuter une logique complexe lorsqu'une alerte est déclenchée, comme entraîner automatiquement le modèle, par exemple.

Notez que, comme System Monitor exécutera régulièrement les méthodes "Initialize" et "GetSample", ces méthodes doivent être soigneusement conçues afin de ne pas demander trop de ressources au système.

Travaux futurs

Comme le souligne Benjamin De BoeIRIS introduit une nouvelle façon de personnaliser votre tâche de surveillance - l' outil SAM. Ma première impression a été très positive, SAM est intégré avec les technologies de surveillance des standards du marché comme Grafana et Prometheus. Alors, pourquoi ne pas aller de l'avant et tester comment améliorer ce travail avec de telles nouvelles fonctionnalités ? Mais il s'agit là d'une matière pour un futur travail.... :)

Voilà, c'est fait ! J'espère que cela pourra vous être utile d'une manière ou d'une autre. A bientôt !

0
0 60
Article Guillaume Rongier · Avr 5, 2023 6m read

Il y a quelques mois, j'ai lu cet article intéressant de la MIT Technology Review, qui explique comment la pandémie de COVID-19 pose des défis aux équipes informatiques du monde entier en ce qui concerne leurs systèmes d'apprentissage automatique (ML).

Cet article m'a incité à réfléchir à la manière de traiter les problèmes de performance après le déploiement d'un modèle de ML.

J'ai simulé un simple scénario de problème de performance dans une application modèle de la technologie Open Exchange - iris-integratedml-monitor-example, qui participe au concours IA d'InterSystems IRIS (InterSystems IRIS AI Contest). S'il vous plaît, après avoir lu cet article, vous pouvez le consulter et, si vous l'aimez, votez pour moi! :)

Contenu

Partie I:

Partie II:

Les systèmes IRIS IntegratedML et ML

Avant de parler de COVID-19 et de son impact sur les systèmes ML dans le monde entier, parlons rapidement d'InterSystems IRIS IntegratedML.

En automatisant des tâches telles que la sélection des caractéristiques et en s'intégrant au langage de manipulation de données SQL standard, IntegratedML pourrait nous aider à développer et à déployer une solution de ML.

Par exemple, après avoir manipulé et analysé correctement des données provenant de rendez-vous médicaux, vous pouvez configurer un modèle de ML pour prédire la présence ou l'absence des patients à l'aide de ces instructions SQL :

CREATE MODEL AppointmentsPredection PREDICTING (Show) FROM MedicalAppointments
TRAIN MODEL AppointmentsPredection FROM MedicalAppointments
VALIDATE MODEL AppointmentsPredection FROM MedicalAppointments

Le fournisseur AutoML choisira l'ensemble de caractéristiques et l'algorithme ML le plus performant. Dans ce cas, le fournisseur AutoML a sélectionné le modèle de régression logistique utilisant la bibliothèque scikit-learn, obtenant ainsi une exactitude de 90 %.

|   | NOM_DU_MODÈLE             | NOM_DU_MODÈLE_FORMÉ      | FOURNISSEUR | HORODATAGE_FORMÉ       | TYPE_DU_MODÈLE     | INFOS_MODÈLE                                        |
|---|------------------------|-------------------------|----------|-------------------------|----------------|---------------------------------------------------|
| 0 | AppointmentsPredection | AppointmentsPredection2 | AutoML   | 2020-07-12 04:46:00.615 | classification | ModelType:Logistic Regression, Package:sklearn... |
| NOM_MÉTRIQUE              | Exactitude | Mesure F | Précision | Rappel |
|--------------------------|----------|-----------|-----------|--------|
| AppointmentsPredection21 | 0.9      | 0.94      | 0.98      | 0.91   |

Une fois que votre modèle de ML est déjà intégré à SQL, vous pouvez l'intégrer de manière transparente à votre système de réservation existant afin d'améliorer ses performances, en utilisant des estimations sur les patients qui seront présents et ceux qui ne le seront pas :

SELECT PREDICT(AppointmentsPredection) As Predicted FROM MedicalAppointments WHERE ID = ?

Vous pouvez en savoir plus sur IntegrateML ici. Si vous souhaitez obtenir un peu plus de détails sur ce modèle de prédiction simple, vous pouvez vous référer à.

Toutefois, comme les modèles d'IA/ML sont conçus pour s'adapter au comportement de la société, directement ou non, ils seront probablement très affectés lorsque ce comportement changera rapidement. Récemment, nous avons (malheureusement) pu expérimenter un tel scénario en raison de la pandémie de COVID-19.

Entre les anciennes et les nouvelles normalités

Comme l'explique l'article de MIT Technology Review, la pandémie de COVID-19 a modifié remarquablement et rapidement le comportement de la société. J'ai effectué des recherches dans Google Trends pour des termes cités dans l'article, tels que masque N95, papier toilette et désinfectant pour les mains, afin de confirmer l'augmentation de leur popularité, à mesure que la pandémie se propageait dans le monde :

Tel que cité dans l'article :

"Mais ils [les changements apportés par COVID-19] ont également affecté l'intelligence artificielle, causant des problèmes aux algorithmes qui fonctionnent dans les coulisses de la gestion des stocks, de la détection des fraudes, du marketing, et bien d'autres choses encore. Les modèles d'apprentissage automatique formés sur la base du comportement humain normal découvrent aujourd'hui que la normalité elle-même a changé, et certains d'entre eux ne fonctionnent plus comme ils le devraient."

En d'autres termes, entre l'"ancienne normalité" et la "nouvelle normalité", nous vivons une "nouvelle anormalité".
Une autre citation intéressante, également tirée de l'article :

"Les modèles d'apprentissage automatique sont conçus pour s'adapter aux changements. Mais la plupart d'entre eux sont également fragiles ; ils donnent de mauvais résultats lorsque les données d'entrée diffèrent trop de celles sur lesquelles ils ont été formés. (...) L'IA est un moteur vivant, qui respire."

Cet article présente ensuite des exemples de modèles d'IA/ML dont les performances commencent soudainement à être affectées négativement, ou qui doivent être modifiés de toute urgence. Quelques exemples :

  • Les entreprises de vente au détail qui se sont retrouvées en rupture de stock après avoir passé des commandes en masse pour des produits inadaptés ;
  • Des conseils biaisés de la part de services de recommandation d'investissements basés sur l'analyse du sentiment des messages médiatiques, en raison de leur contenu pessimiste ;
  • Générateurs automatiques de phrases pour les conseils qui commencent à générer un contenu inadapté, en raison d'un nouveau contexte ;
  • Amazon a modifié son système de recommandation des vendeurs pour choisir ceux qui effectuent leurs propres livraisons, afin d'éviter que la logistique de ses entrepôts ne soit trop sollicitée.

Nous devons donc surveiller nos modèles d'IA/ML afin de garantir leur fiabilité et de continuer à aider nos clients.

Jusqu'à présent, j'espère vous avoir montré que la création, la formation et le déploiement de votre modèle de ML ne sont pas tout - vous devez en assurer le suivi. Dans le prochain article, je vous montrerai comment utiliser le framework %Monitor.Abstract d'IRIS pour surveiller les performances de votre système de ML et définir des alertes basées sur les métriques du moniteur.

En attendant, j'aimerais savoir si vous avez été confronté à l'un ou l'autre des problèmes soulevés par ces périodes de pandémie, et comment vous y faites face dans la section des commentaires !

Restez à l'écoute (et en sécurité 😊)!

0
0 53
Annonce Irène Mykhailova · Mars 14, 2023

Salut la Communauté !

Vous vivez une problématique récurrente en santé et vous imaginez une solution ? InterSystems soutient le Hacking Health Camp, le plus grand hackathon santé au monde. Rejoignez-nous pour transformer votre idée en prototype en 50h et gagnez le prix InterSystems :

👉 Le Challenge InterSystems pour la meilleure utilisation des technologies InterSystems 👈

1
0 86
Annonce Irène Mykhailova · Mars 24, 2023

Salut les développeurs,

Nous aimerions vous inviter à participer à notre prochain concours dédié à la création des solutions d'IA/ML qui utilisent Cloud SQL pour travailler avec les données :

🏆 Concours InterSystems IRIS Cloud SQL et IntegratedML 🏆

Durée: du 3 avril au 23 avril 2023

Prix: $13,500!

0
0 98
Article Lorenzo Scalese · Mars 3, 2023 9m read

Bonjour à la communauté,

Dans la première partie, nous avons décrit tous les packages, les bibliothèques utilisées et les services REST.  J'aimerais maintenant détailler un peu plus les services convertisseur et validateur.  Par défaut, OpenAPI-Suite envoie une requête HTTP  converter.swagger.io si a spécification est de version inférieure à 3.0 et une autre requête HTTP à validator.swagger.io pour simplifier la structure de la spécification.  

Bien que l'utilisation d'utilitaires en ligne soit pratique, dans certains cas, nous pourrions préférer avoir notre propre instance du convertisseur et du validateur.  Par exemple, si OpenAPI-Suite est mis à disposition sur un serveur dans une organisation pour les développeurs ObjectScript, il peut être préférable d'éviter les requêtes vers les services externes (confidentialité, éviter les limites de taux de demande,...).  Ceux-ci sont disponibles en images Docker, il suffit d'exécuter : 

docker run -d -p 8085:8080 --name swagger-converter swaggerapi/swagger-converter:latest
docker run -d -p 8086:8080 --name swagger-validator-v2 swaggerapi/swagger-validator-v2:latest
0
0 60
Article Guillaume Rongier · Mars 1, 2023 4m read

Bonjour à tous, 

Nous voici de nouveau réunis. Nouvelle année, nouveau concours, nouveau projet, vieilles raisons.

Triple barre oblique "Triple Slash" est dans la place" !

1999, c'était l'année où j'ai appris à coder, mon premier "IF", mon premier "Bonjour le monde"

Je me souviens encore de mon professeur expliquant à tout le monde dans cette classe le simple "while" et comment nous pouvons déterminer si une condition spécifique a été atteinte @Renato Banzai vous en souvenez vous ? Le professeur Barbosa, quel homme unique.   

Depuis lors, j'aime l'idée de coder, de transformer des idées en projets, en quelque chose d'utile. Mais nous savons tous que pour créer quelque chose, nous devons nous assurer que cela fonctionne ; nous ne nous contentons pas de créer mais nous testons si cela fonctionne et si cela continue à fonctionner si nous ajoutons quelque chose de nouveau.

Et pour être honnête avec chacun d'entre vous, créer des tests, c'est ennuyeux. Du moins pour moi, mais si vous aimez le faire, je n'ai rien contre vous.

En utilisant une mauvaise analogie, je peux dire que la création de méthodes d'essai est comme le nettoyage de votre maison ou le repassage de vos vêtements. C'est ennuyeux, mais c'est nécessaire si vous voulez quelque chose de mieux.  

En gardant cela à l'esprit, pourquoi ne pas créer un moyen meilleur et plus facile pour les tests ? 

Ainsi, inspirés par le style elixir style and in et par cette idée d' InterSystems Ideas (Merci @Evgeny Shvarov)! Nous avons essayé d'améliorer le processus de test et de le transformer à nouveau en une tâche agréable.

Nous simplifions le %UnitTest et pour vous montrer comment utiliser TripleSlash pour créer vos tests unitaires, utilisons un exemple simple.

Disons que vous avez la classe et la méthode suivantes, pour lesquelles vous souhaitez écrire un test unitaire :

Class dc.sample.ObjectScript
{
ClassMethod TheAnswerForEverything() As%Integer
{

   Set a = 42Write"Bonjour le monde !",!

   Write"C'est InterSystems IRIS avec la version ",$zv,!

   Write"L'heure actuelle est : "_$zdt($h,2)

   Return a

}
}

Comme vous pouvez le constater, la méthode TheAnswerForEverything() ne fait que retranscrire le nombre 42. Indiquons donc dans la documentation de la méthode comment TripleSlash doit créer un test unitaire pour cette méthode :

/// Une méthode simple à des fins de tests./// /// /// Ecrivez ##class(dc.sample.ObjectScript).Test()/// 42/// ClassMethod TheAnswerForEverything() As%Integer
{
    ...
}

Les tests unitaires doivent être entourés de la balise <exemple></exemple>. Vous pouvez ajouter tout type de documentation, mais tous les tests doivent être contenus dans une telle balise.

Maintenant, démarrez une session de terminal IRIS, allez dans l'espace de noms IRISAPP créez une instance de la classe Core en passant le nom de la classe (ou son nom de paquet pour toutes ses classes) et exécutez ensuite la méthode Execute() :

USER>ZN"IRISAPP"
IRISAPP>Do##class(iris.tripleSlash.Core).%New("dc.sample.ObjectScript").Execute()

TripleSlash interprétera ceci comme "Étant donné le résultat de la méthode Test(), affirme qu'il est égal à 42". Ainsi, une nouvelle classe sera créée dans le test unitaire :

Class iris.tripleSlash.tst.ObjectScript Extends%UnitTest.TestCase
{

Method TestTheAnswerForEverything()
{
    Do$$$AssertEquals(##class(dc.sample.ObjectScript).TheAnswerForEverything(), 42)
}

}

Ajoutons maintenant une nouvelle méthode pour tester les autres moyens permettant d'indiquer à TripleSlash comment écrire vos tests unitaires.

Class dc.sample.ObjectScript
{

ClassMethod GuessTheNumber(pNumber As%Integer) As%Status
{
    Set st = $$$OKSet theAnswerForEveryThing = 42Try {
        Throw:(pNumber '= theAnswerForEveryThing) ##class(%Exception.StatusException).%New("Sorry, wrong number...")
    } Catch(e) {
        Set st = e.AsStatus()
    }

    Return st

}

}

Comme vous pouvez le constater, la méthode GuessTheNumber() attend un nombre, renvoie $$$OK uniquement si le nombre 42 est transmis ou une erreur pour toute autre valeur. Il faut donc indiquer dans la documentation de la méthode comment TripleSlash doit créer un test unitaire pour cette méthode :

/// Une autre méthode simple à des fins de test./// /// /// Exécutez ##class(dc.sample.ObjectScript).GuessTheNumber(42)/// $$$OK/// Do ##class(dc.sample.ObjectScript).GuessTheNumber(23)/// $$$NotOK/// ClassMethod GuessTheNumber(pNumber As%Integer) As%Status
{
    ...
}

Exécutez à nouveau la méthode Execute() et vous verrez une nouvelle méthode de test dans la classe de test unitaire iris.tripleSlash.tst.ObjectScript:

Class iris.tripleSlash.tst.ObjectScript Extends%UnitTest.TestCase
{

La méthode TestGuessTheNumber()
{

    Do$$$AssertStatusOK(##class(dc.sample.ObjectScript).GuessTheNumber(42))
    Do$$$AssertStatusNotOK(##class(dc.sample.ObjectScript).GuessTheNumber(23))
}

}

Actuellement, les assertions suivantes sont disponibles : $$$AssertStatusOK, $$$AssertStatusNotOK et $$$AssertEquals

TripleSlash nous permet de générer des tests à partir d'exemples de code trouvés dans les descriptions de méthodes. Il vous permet de faire d'une pierre deux coups, en améliorant la documentation de vos classes et en créant l'automatisation des tests. 

Remerciements

Une fois encore, nous vous remercions pour tout le soutien de la communauté dans chacune des applications que nous créons.

Si vous avez trouvé notre application intéressante et avez apporté votre contribution, veuillez voter pour iris-tripleslash et nous aider dans cette aventure !laugh

0
0 71
Annonce Irène Mykhailova · Jan 17, 2023

Salut les développeurs,

Nous aimerions vous inviter à participer à notre prochain concours dédié à la création d'outils utiles pour faciliter la vie de vos collègues développeurs :

🏆 Concours d'outils de développement InterSystems 🏆

Soumettez une application qui aide à développer plus rapidement, contribue à un code plus qualitatif et aide au test, au déploiement, au support ou à la surveillance de votre solution avec InterSystems IRIS.

Durée: du 23 janvier au 12 février 202

Prix: $13,500!

 

0
0 291
Annonce Irène Mykhailova · Nov 1, 2022

Salut la communauté !

Nous aimerions vous inviter à participer à notre prochain concours pour partager vos connaissances de FHIR :

🏆 Concours InterSystems IRIS for Health : FHIR pour la santé des femmes 🏆

Soumettez une application qui utilise InterSystems FHIR ou InterSystems Healthcare Interoperability !

Durée: 14 novembre - 4 décembre 2022

Prix: $13,500!

>> Téléchargez votre application ici <<

0
0 66
Annonce Irène Mykhailova · Sept 26, 2022

Bonjour à la communauté !

Nous sommes ravis d'annoncer un nouveau type de concours : le concours de l'idée la plus brillante ! Bienvenue : 

💡 InterSystems Idea-A-Thon 💡

Proposez une idée liée aux produits et services d'InterSystems entre le 26 septembre et le 16 octobre et recevez un prix garanti.

En outre, les employés d'InterSystems aussi bien que les Membres de la Communauté peuvent participer !

>> Envoyez vos idées ici <<

InterSystems Ide-A-Thon est organisé via le portail de feedback sur les idées d'InterSystems où vous pouvez soumettre des demandes d'amélioration de produits et des idées liées à nos services (Documentation, Communauté Dev, Global Masters, etc.) et voter pour celles qui vous plaisent.

Dans le cadre de ce concours, nous invitons chacun à partager ses idées sur ce portail et à voter pour les autres. 

Pour participer au concours, il suffit de soumettre une idée sur le portail des Idées d'InterSystems.

**Les idées acceptées devraient : **

  • être créées pendant la durée du Ide-A-Thon par un utilisateur inscrit sur le portail des Idées d'InterSystems  (vous pouvez vous connecter via InterSystems SSO);
  • ne pas faire partie d'autres idées déjà existantes - seules les nouvelles idées sont autorisées ;
  • ne pas décrire la fonctionnalité existante des produits ou services d'InterSystems ;
  • comporter, outre un titre, une explication détaillée et claire de l'essence des idées ;
  • être affiché en anglais ;
  • être acceptées comme significatives par les experts.
  • Toutes les idées éligibles auront un statut spécial "Idea-A-Thon" sur le portail des idées d'InterSystems et pourront être facilement trouvées à l'adresse Idea-A-Thon Ideas.

    Qui peut participer ?

    Nous invitons TOUT LE MONDE à participer à notre Idea-A-Thon. Tant les employés d'InterSystems que les membres de la communauté sont invités à participer et à soumettre leurs idées.. 

    Les prix

    1. Prix pour les participants – des prix pour tous ceux qui postent une idée éligible :

    🎁 T-Shirt à la marque InterSystems

    2. Prix de l'expert – le gagnant sera sélectionné par l'équipe d'experts d'InterSystems, et recevra :

    🎁 Ensemble d'enceintes Bluetooth® LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex

    3. Prix de la communauté – l'idée ayant reçu le plus de votes sera récompensée :

    🎁 Ensemble d'enceintes Bluetooth® LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex

    _Remarque importante : les employés d'InterSystems ne peuvent obtenir que le prix de participation. Les prix d'expert et de la Communauté ne peuvent être remportés que par des membres de la Communauté n'appartenant pas à InterSystems. _

    Période du concours

    📝  Du 26 septembre au 16 octobre : Publication des idées et période de vote.

    Publier une ou plusieurs idées pendant cette période. Les membres inscrits sur le portail des idées peuvent voter pour les idées publiées - ces votes sont comptabilisés pour le prix de la communauté.

    Remarque : Plus tôt vous publiez votre idée où vos idées, plus vous aurez de temps pour recueillir des votes.

    Alors !

    Publiez votre/vos idée(s) sur le portail des idée d'InterSystems InterSystems Ideas, gagnez des prix et restez à l'affût des mises à jour du statut de votre idée !

    Bonne chance !👍


    Remarque importante : Tous les prix sont soumis à la disponibilité et aux options d'expédition. Il se peut que certains articles ne puissent pas être expédiés dans certains pays. Les prix ne peuvent être livrés aux résidents de Crimée, de Russie, de Biélorussie, d'Iran, de Corée du Nord, de Syrie ou d'autres pays frappés d'embargo par les États-Unis. Nous vous informerons si un prix n'est pas disponible et vous proposerons un remplacement éventuel.

    0
    0 68
    Annonce Irène Mykhailova · Sept 22, 2022

    Salut la communauté,

    Nous apprécions grandement tous vos commentaires sur le concours d'interopérabilité !

    Veuillez répondre à une courte enquête et répondre à quelques questions pour nous aider à améliorer nos concours.

    👉 Sondage rapide : Enquête sur le concours d'interopérabilité 2022

    11 Best Questions to Ask in a Restaurant Survey (and how to ask them)

    N'hésitez pas à partager également vos pensées dans les commentaires de cet article !

    0
    0 55
    Annonce Irène Mykhailova · Sept 21, 2022

    Salut la communauté,

    Rencontrons-nous lors de la rencontre en ligne avec les gagnants du concours d'interopérabilité InterSystems – une excellente occasion d'avoir une discussion avec l'équipe d'experts InterSystems ainsi qu'avec nos participants.

    Démo des gagnants incluse !

    Date et heure : jeudi 22 septembre, 09h00 HAE 

    >> Inscrivez-vous ici <<

    0
    0 61
    Annonce Irène Mykhailova · Août 18, 2022

    Salut les développeurs !

    Vous voulez montrer vos compétences en interopérabilité ? Participez à notre prochain concours passionnant :

    🏆 Concours d'interopérabilité InterSystems : Construire des solutions durables 🏆

    Durée : 29 août - 18 septembre

    Plus de prix : $13,500 – la distribution des prix a changé !

    0
    0 78
    Annonce Irène Mykhailova · Août 5, 2022

    Salut,

    Vous avez des idées pour améliorer encore le concours d'articles techniques ?

    Nous voulons entendre parler de vous tous : à la fois de nos participants et de ceux qui n'ont pas pu participer ! Veuillez répondre à quelques questions pour nous aider à améliorer notre concours d'écriture :

    👉 Sondage d'une minute : Sondage du concours d'articles techniques InterSystems #3


    0
    0 51
    Annonce Robert Bira · Juin 19, 2022

    Bonjour et bienvenue au prochain concours de rédaction d'articles techniques d'InterSystems !

    🐍 Concours d'articles techniques d'InterSystems : Édition Python 🐍

    Rédigez un article sur n'importe quel sujet lié à l'utilisation de Python avec les technologies InterSystems du 20 juin au 20 juillet.

    🎁 Des prix pour tous : Un pack de prix spéciaux pour chaque auteur qui participe au concours !

    🏆 Premiers prix : AirPods Max; Apple Watch SE; Apple HomePod mini / Apple Pencil 

    Prix

    1. Tout le monde est gagnant au concours d'articles techniques d'InterSystems ! Tous les utilisateurs qui rédigent un article pendant la période du concours recevront des prix spéciaux :

    🎁 Apple AirTag estampillé InterSystems

    🎁 Rubik's cube 3x3 estampillé InterSystems

    2. Prix des experts - les articles seront jugés par des experts d'InterSystems :

    🥇 1ère place : Apple AirPods Max

    🥈 2e place : Apple Watch SE

    🥉 3e place : Apple HomePod mini / Apple Pencil 

    Alternativement, tout gagnant peut choisir un prix d'un niveau inférieur au sien.

    3. Prix de la communauté des développeurs - article ayant reçu le plus de mentions J'aime. Le gagnant aura la possibilité de choisir l'un des prix suivants :

    🎁 Apple Pencil 

    🎁 Apple HomePod mini

    _Remarque : _

    1. L'auteur ne peut être récompensé qu'une seule fois par catégorie (au total, l'auteur gagnera 2 prix : un pour les experts et un pour la communauté).
    2. En cas d'égalité, le nombre de votes des experts pour les articles à égalité sera considéré comme un critère pour les départager.  

    Qui peut participer ?

    Tout membre de la communauté des développeurs, à l'exception des employés d'InterSystems. Créez un compte !

    Période du concours

    📝  20 juin - 20 juillet: Publicationdes articleset période de vote. 

    Publiez un ou plusieurs articles pendant cette période. Les membres de la CD peuvent voter pour les articles publiés grâce aux mentions J'aime dans le cadre du prix de la communauté.

    Remarque : Plus tôt vous publiez vos articles, plus vous avez de temps pour recueillir les votes des experts et de la communauté.

    Quelles sont les conditions ? 

    ❗️ Tout article rédigé pendant la période du concours et répondant aux conditions ci-dessous sera automatiquement inscrit au concours :

    • L'article doit être lié à l'utilisation de Python avec les technologies InterSystems (Python embarqué ou API Python).
    • L'article doit être en anglais.  
    • L'article doit être 100 % nouveau (il peut s'agir de la continuation d'un article existant).  
    • L'article ne peut pas être une traduction d'un article déjà publié dans d'autres communautés.  
    • L'article doit contenir la ou les balises de la CD : balises Python ou Embedded Python (en fonction de votre sujet).
    • Taille d'article : 750 mots (les liens et le code ne sont pas comptabilisés dans la limite de mots).  
    • Un même auteur peut soumettre plusieurs articles. 
    • Différents auteurs peuvent soumettre des articles sur le même sujet.

    🎯 [NOUVEAU] BONUS SUPPLÉMENTAIRES

    Cette fois, nous avons décidé d'ajouter des bonus supplémentaires qui vous aideront à gagner le prix ! Souhaitons la bienvenue au : 

    <td>
      Nominal 
    </td>
    
    <td>
      Détails
    </td>
    
    <td>
      5 
    </td>
    
    <td>
      Si votre article porte sur un sujet figurant dans la liste des thèmes proposés (énumérés ci-dessous), vous recevrez un bonus de 5 votes d'experts (vs 1ère place sélectionnée par un expert = 3 votes). 
    </td>
    
    <td>
      3 
    </td>
    
    <td>
      Format de la présentation du contenu de l'article : en plus de la publication de l'article, réalisez une vidéo explicative.
    </td>
    
    <td>
      1
    </td>
    
    <td>
      Article avec la discussion la plus utile, selon les experts d'InterSystems. Seul 1 article recevra ce bonus.
    </td>
    
    <td>
      1
    </td>
    
    <td>
      Publiez une traduction de votre article sur l'une des communautés régionales. Remarque : 1 seul vote par article.
    </td>
    
    <td>
      3
    </td>
    
    <td>
      Si vous n'avez pas participé aux concours précédents, votre article recevra 3 votes d'experts.
    </td>
    
    Bonus
    Bonus du sujet
    Bonus de la vidéo
    Bonus de la discussion
    Bonus de la traduction
    Bonus pour les nouveaux membres

     

    Sujets proposés

    Voici une liste de sujets proposés qui donneront à votre article un bonus supplémentaire pour le sujet :

    <td>
      Sujet
    </td>
    
    <td>
      Détails
    </td>
    
    <td>
      Bibliothèques Python utiles pour les plateformes de données InterSystems
    </td>
    
    <td>
      Décrivez les bibliothèques que vous avez utilisées pour produire des applications sur les plateformes InterSystems.
    </td>
    
    <td>
      Python embarqué depuis l'interopérabilité
    </td>
    
    <td>
      Explorez comment Python embarqué peut être exploité à partir d'une production d'interopérabilité.
    </td>
    
    <td>
      Python embarqué : Traduire au moyen de constructions de langage
    </td>
    
    <td>
      Bien que nous visions une intégration transparente de Python embarqué, il existe des conseils et astuces permettant de faciliter les choses. Utilisation des traits de soulignement, des dictionnaires, des listes, et autres. Quelles sont les meilleures façons d'appeler des fonctionnalités Python à partir d'ObjectScript ?
    </td>
    
    <td>
      Exemples de PEX pour Python  
    </td>
    
    <td>
      Décrivez une approche basée sur Python pour exploiter la puissance d'InterSystems IRIS. Des modèles de données en Python natif.  
    </td>
    
    <td>
      Exemples d'API native pour Python
    </td>
    
    <td>
      Décrivez les bibliothèques que vous avez utilisées pour produire des applications sur les plateformes InterSystems.
    </td>
    
    #
    1
    2
    3
    4
    5

    Remarque : Différents auteurs peuvent soumettre des articles sur le même sujet.

    ➡️ Rejoignez le Discord d'InterSystems pour discuter des règles, des sujets et des bonus.

    Alors,

    Il est temps de montrer vos talents d'écrivain ! Bonne chance  ✨


    Remarque importante : les prix ne peuvent être remis aux résidents de Crimée, de Russie, de Biélorussie, d'Iran, de Corée du Nord, de Syrie ou d'autres pays sous embargo américain.

    0
    0 73