Comment avons-nous créé un chatbot d'assistance médicale avec l'IA générative Claude sur la plateforme AWS Bedrock ?

  • 12 Oct 2023

Encore un autre chatbot basé sur LLM

 

Les technologies d'IA générative et les grands modèles de langage (LLMs) deviennent de plus en plus populaires, et de petites et grandes entreprises technologiques lancent régulièrement de nouvelles solutions telles que ChatGPT, Bard et Llama. Les entreprises cherchent des moyens d'utiliser cette technologie pour créer des sources de connaissances internes à l'entreprise et des assistants IA afin d'améliorer la productivité, l'efficacité et l'accès aux connaissances internes des employés.

 

Pour répondre à cette demande, nous avons décidé chez Smile d'expérimenter avec de nombreux outils différents (lire à ce sujet ici), mais nous voulions essayer le nouveau service Amazon Bedrock disponible sur AWS. Nous souhaitions voir s'il était facile de créer des chatbots basés sur l'IA générative sur AWS, et quels pourraient être les avantages de son utilisation.

 

Pour expérimenter cette technologie, nous avons décidé de créer un chatbot d'assistant médical, en utilisant le modèle Claude v2 d'Anthropic hébergé sur le service AWS Bedrock. La famille de modèles de langage de Claude est spécialement conçue pour les conversations, la synthèse, les questions-réponses, l'automatisation des flux de travail et la programmation, et prend en charge plusieurs langues (nous avons essayé en anglais et en français).

 

Le chatbot d'assistant médical peut être utilisé par les patients pour résumer, comprendre et obtenir plus d'informations sur les diagnostics médicaux.

 

Pour les besoins de cette démonstration, les utilisateurs commencent par sélectionner un jeu de données contenant une image radiographique et un diagnostic. Les utilisateurs réels devraient télécharger leur dossier ou se connecter à un service tiers hébergeant ces informations. Le chatbot génère ensuite une réponse dans la langue préférée de l'utilisateur.

 

Les utilisateurs peuvent demander au chatbot de résumer ou de simplifier le diagnostic, ou de fournir davantage d'explications et de clarifications avec des questions de suivi. Comme nous avons utilisé les diagnostics générés par l'IA à partir d'images radiographiques, à partir de recherches menées par le BIR (British Institute of Radiology), les images radiographiques ne sont pas utilisées dans la génération de la réponse. Nous souhaitions simplement interpréter les résultats du personnel médical, et non pas effectuer nous-mêmes le diagnostic. De plus, les patients peuvent également demander au chatbot de traduire le diagnostic dans une autre langue.

 

Avertissement : l'objectif de la démonstration est de fournir des explications aux personnes non médicales et en aucun cas de remplacer le personnel médical.

 

AWS Bedrock

 

Jetons maintenant un regard approfondi sur le nouveau service d'AWS appelé Bedrock. Bedrock est un nouveau service qui simplifie la création d'applications utilisant l'IA générative pour les développeurs. Les développeurs peuvent désormais se concentrer sur la création de leurs applications sans se soucier de l'infrastructure sous-jacente nécessaire à l'exécution et à la maintenance de ces modèles. Il offre un accès à une variété de modèles de base pré-construits (FMs) fournis par des acteurs majeurs, notamment Amazon, Anthropic, Stable AI et AI21 Labs.

 

Voici quelques-uns des avantages de l'utilisation d'AWS Bedrock :

 

  • Accès étendu à une gamme variée de FMs : AWS Bedrock propose une vaste sélection de FMs conçus pour différentes tâches, notamment la résumé de texte, la génération d'images et la génération de code. Cela permet aux clients de choisir le modèle le plus adapté à leurs besoins spécifiques.
  • Convivialité : AWS Bedrock offre une API simple et une expérience serverless qui simplifie le lancement des projets d'IA générative. Les développeurs peuvent facilement interagir avec Bedrock grâce à l'utilisation du SDK ou de l'AWS CLI. Les clients sont libérés de la gestion de l'infrastructure ou de la nécessité d'avoir une expertise préalable en apprentissage automatique.
  • Haute évolutivité : AWS Bedrock a la capacité de s'adapter pour répondre aux besoins des applications les plus gourmandes en ressources. Les clients peuvent facilement ajouter ou supprimer des FMs au besoin, sans se soucier de la gestion de l'infrastructure.
  • Sécurité assurée : Construit sur l'infrastructure sécurisée d'AWS, AWS Bedrock intègre diverses fonctionnalités de sécurité, notamment le chiffrement et le contrôle d'accès. Ces mesures permettent aux clients de protéger efficacement leurs données et leurs applications.

 

AWS a récemment annoncé la disponibilité générale de Bedrock dans deux régions AWS, à savoir N. Virginia et Oregon. Il est à noter que Bedrock sera bientôt accessible dans d'autres régions également. De plus, il est prévu que le modèle Llama 2 de Meta soit bientôt disponible sur la plateforme Bedrock, avec l'introduction de nombreuses autres fonctionnalités.

 

L'interface utilisateur de Bedrock est conçue pour être conviviale et simple. Elle comprend une zone de jeu dédiée qui facilite l'examen des entrées et des sorties produites par différents modèles, tout en permettant le réglage fin des réponses. Cela comprend la possibilité de modifier des paramètres tels que top_k (permettant l'échantillonnage des jetons suivants les plus probables) et la température (offrant un contrôle sur le niveau de randomisation ou d'incertitude dans la prédiction du modèle), facilitant ainsi l'évaluation de différentes requêtes.

 

Architecture Technique

 

Si nous examinons l'architecture de cette démonstration, vous verrez que rien de complètement nouveau ne se cache en coulisses. Nous la maintenons simple et élégante. Jetons-y un regard plus approfondi :

 

  • Le frontend est une application à page unique (SPA) React servie aux utilisateurs sur Amazon CloudFront et Amazon S3. CloudFront aide à distribuer rapidement le contenu aux utilisateurs en utilisant les emplacements périphériques d'AWS.
  • Le backend est hébergé sur Amazon API Gateway et AWS Lambda. La fonction Lambda prend l'entrée de l'utilisateur et les diagnostics choisis à partir de l'application web (via API Gateway) et effectue une demande d'API à AWS Bedrock pour générer une réponse.
  • Amazon Cognito est utilisé pour l'authentification et l'autorisation. Il offre une page de connexion/inscription personnalisable et la possibilité d'autoriser les appels à Bedrock via la fonction Lambda.
  • Amazon Bedrock héberge Claude d'Anthropic, le modèle de base utilisé dans l'application.

 

Nous voulions également rendre l'infrastructure de cette solution réutilisable et automatiser la création et le déploiement de l'application. Pour cela, nous avons utilisé :

 

  • AWS CDK (Cloud Development Kit) permet aux développeurs de définir des ressources d'application cloud (par exemple, des services AWS, des stratégies IAM, des compartiments S3, des fonctions lambda, etc.) en utilisant des langages de programmation populaires. AWS CDK simplifie la fourniture d'infrastructure en permettant aux développeurs d'écrire du code pour définir et créer des ressources cloud. Tous les services que vous voyez sur le diagramme d'architecture ci-dessous sont provisionnés à l'aide d'AWS CDK.
  • Pour automatiser la publication de nouvelles versions de l'application :
  • Le code de l'application est stocké dans AWS CodeCommit.
  • AWS CodeBuild compile le code source, exécute les tests et produit des packages logiciels prêts à être déployés.
  • AWS CodePipeline est utilisé pour automatiser les étapes de construction, de test et de déploiement de l'application.
  • Amazon CloudWatch nous permet de surveiller notre fonction Lambda et d'autres services utilisés.

L'architecture globale du système se trouve ci-dessous :

llm

 

Prompt Engineering

 

Pour obtenir les meilleurs résultats du modèle Claude Foundation, nous avons ajouté des instructions à la requête, ainsi que des informations diagnostiques et l'entrée de l'utilisateur. Les instructions nous ont permis de guider le modèle Claude dans ses objectifs, ses limites, son style et son ton lors de la génération de la réponse pour une entrée utilisateur donnée. Elles ont également fourni un contexte pour la conversation, qui est l'historique de la discussion.

 

Une partie importante de la requête est sa limite de taille. Les modèles ont des limites différentes sur le nombre de jetons d'entrée et de sortie qu'ils peuvent gérer. Par exemple, le modèle Claude v4 a une limite de 100 000 jetons d'entrée et peut générer des textes allant jusqu'à 60 000 mots de long. Cette limite est beaucoup plus élevée que la limite de 8 192 jetons de ChatGPT.

 

Pour obtenir de bonnes réponses du modèle, il est important d'itérer et de peaufiner le modèle de la requête.

 

Ci-dessous, vous pouvez trouver le modèle de requête utilisé dans la démonstration.

Human: You are a helpful medical AI assistant, competent to answer any medical related questions to non medical users. Use the following pieces of medical context, that you can summarize, to answer the question at the end.

But important points :
- If you don't know the answer, just say you don't know. Do NOT try to make up an answer.
- If the question is not related to the context, politely respond that you are tuned to only answer questions that are related to the context.
- If the question includes any greeting or polite word, respond accordingly.
- Before answering, analyze the question to determine the language used.
- Respond in the same language that the question is asked in.
- If you don't understand the question, respond by apologizing and asking for the question to be rephrased.

Context: (example medical diagnostic)
---------
This chest X-ray shows a large volume of free subdiaphragmatic gas. Given the history and examination, it is most likely secondary to perforation, possibly of a peptic ulcer from use of non-steroidal anti-inflammatory drugs. The patient should be made nil by mouth, given adequate analgesia and fluid resuscitated as necessary. An urgent referral to the general surgeons is required. A contrast enhanced CT of the abdomen and pelvis could be considered to identify the site of the perforation.
---------

Question: Could you please summarize the diagnostic? (example user input)
Assistant:

 

Captures d'écrans


Vous trouverez ci-dessous quelques captures d'écran de l'application, montrant son utilisation, les types de questions posées et les réponses générées par le modèle Claude.

 

screen1

screen2


Nous avons également enregistré une vidéo.

 

 

Comment ça s'est passé

 

En tant que personne sans beaucoup d'expérience en IA/ML, j'ai été en mesure de développer une application d'IA générative en 10 jours en utilisant AWS Bedrock. Bedrock facilite la formation, les tests, le déploiement, la mise à l'échelle et la maintenance des modèles de base, ce qui permet d'économiser beaucoup de temps et d'efforts. Sans Bedrock, j'aurais dû travailler avec une équipe de data scientists ou passer beaucoup de temps à trouver un modèle open source et à l'héberger moi-même.

 

AWS Bedrock est encore en développement, mais il a beaucoup de potentiel. AWS investit fortement dans Anthropic, la société qui a développé Claude v2, le modèle de base que nous avons utilisé pour construire mon application. Nous sommes impatients de voir quelles nouvelles fonctionnalités et capacités AWS Bedrock apportera à l'avenir.

 

Chez Smile, nous sommes également intéressés à explorer des moyens d'améliorer la qualité de la génération de texte de mon application en utilisant une source RAG (Retrieval Augmented Generation). RAG est une technique qui utilise un grand modèle de langage (LLM) en conjonction avec un modèle de recherche pour accéder et incorporer des connaissances externes. Cette connaissance externe est généralement une base de données vectorielle qui stocke des documents sous forme d'embeddings. Nous pourrions rédiger une série future de billets de blog sur la manière de déployer différentes sources RAG sur AWS. Stay tuned !

 

Sources

Institut Britannique de Radiologie

Amazon Bedrock

Élargir l'accès à une IA plus sûre avec Amazon


Discover the English version of the article here.