ChatGPT en entreprise

Introduction

Dans cet article, nous allons explorer l’intégration d’OpenAI dans un contexte entreprise. Nous allons examiner des exemples de code tirés de la documentation d’Azure ainsi que des usages que j’ai pu adopter en entreprise pour illustrer des cas d’utilisation pertinents.

Si vous êtes intéressé par l’utilisation d’OpenAI dans votre entreprise, cet article est pour vous.

Ces exemples couvrent l’intégration d’OpenAI dans l’infrastructure dans un SI d’entreprise, l’intégration dans un site web, l’ingestion de données depuis des fichiers Markdown ou PDF, et la connexion à une base de données Google Sheets.

ChatGPT et Azure

Azure propose de nombreuses documentations sur l’utilisation d’OpenAI. Un article intéressant à lire est celui du blog Azure AI Services, qui présente l’intégration de ChatGPT et d’Azure –> blog Azure AI Services

Protection de la DATA

Lorsque l’on utilise des services de traitement de langage naturel comme ChatGPT ou OpenAI, une question importante se pose : où sont stockées nos données et comment sont-elles protégées ? Heureusement, Azure offre des mesures de protection et de confidentialité des données.

OpenAI garantit la protection et la confidentialité des données en les stockant de manière sécurisée dans votre abonnement Azure.

La politique de confidentialité d’Azure s’engage à ne pas utiliser vos données pour des publicités ni les partager avec des tiers sans votre consentement. Les mesures de confidentialité prises par Microsoft et OpenAI incluent la conformité GDPR et la certification ISO.

Pour en savoir plus sur la protection de la confidentialité des données, vous pouvez consulter les pages

Installation dans Azure

Sur Azure, OpenAI est un service PaaS (Platform as a Service) comme les autres. Il peut être créé depuis le portail Azure ou en utilisant Terraform.

Portail Azure

  1. Connectez-vous au portail Azure.

  2. Cliquez sur Créer une ressource dans le menu de gauche.

  3. Recherchez “OpenAI” dans la barre de recherche du Marketplace et sélectionnez-le.

  4. Cliquez sur Créer pour déployer une nouvelle instance du service OpenAI.

  5. Remplissez les informations requises (nom de la ressource, groupe de ressources, région, plan tarifaire, etc.) et cliquez sur Revoir + créer, puis sur Créer.

Terraform

Voici un exemple de code Terraform pour créer OpenAI en private endPoint

–> documentation officielle

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "this" {
  name     = "RAVINDRA-RG"
  location = "West Europe"
}

module "openai" {
  source              = "../.."
  resource_group_name = azurerm_resource_group.this.name
  location            = azurerm_resource_group.this.location
  private_endpoint = {
    "pe_endpoint" = {
      private_dns_entry_enabled       = true
      dns_zone_virtual_network_link   = "dns_zone_link"
      is_manual_connection            = false
      name                            = "RAVINDRA_PE_ONE"
      private_service_connection_name = "RAVINDRA_PE_ONE_CONNECTION"
      subnet_name                     = "subnet0"
      vnet_name                       = module.vnet.virtual_network_name
      vnet_rg_name                    = azurerm_resource_group.this.name
    }
  }
  deployment = {
    "text-embedding-ada-002" = {
      name          = "RAVINDRA_TEXT_EMBEDDING_ADA_002"
      model_format  = "OpenAI"
      model_name    = "text-embedding-ada-002"
      model_version = "2"
      scale_type    = "Standard"
    }
  }
  depends_on = [
    azurerm_resource_group.this,
    module.vnet
  ]
}

module "vnet" {
  source  = "Azure/subnets/azurerm"
  version = "1.0.0"

  resource_group_name = azurerm_resource_group.this.name
  subnets = {
    subnet0 = {
      address_prefixes  = ["10.52.0.0/16"]
      service_endpoints = ["Microsoft.CognitiveServices"]
    }
  }
  virtual_network_address_space = ["10.52.0.0/16"]
  virtual_network_location      = "westeurope"
  virtual_network_name          = "RAVINDRA_VNET"
}

Assurez-vous de remplacer “../..” dans source par le chemin approprié vers le module Terraform OpenAI dans votre configuration.

Chat Playground

Une fois installer, Azure nous met a disposition un outil appelé Chat Playground qui facilite la création et l’expérimentation d’applications de chat basées sur l’IA. Le Chat Playground est une interface graphique qui permet aux développeurs de tester rapidement les interactions avec les modèles OpenAI, d’ajuster les paramètres et de peaufiner les réponses avant de les intégrer dans leurs applications.

Le Chat Playground est particulièrement utile pour les développeurs qui souhaitent créer des chatbots ou des agents conversationnels, car il simule une conversation en temps réel avec l’IA et permet de visualiser les réponses du modèle en fonction des différentes entrées utilisateur.

Ajouter une source de données

Votre source de données est utilisée pour aider à ancrer le modèle avec des données spécifiques. Sélectionnez un index Azure Cognitive Search existant, un conteneur Azure Storage, ou téléchargez des fichiers locaux comme source à partir de laquelle nous construirons les données d’ancrage. Vos données sont stockées en toute sécurité dans votre abonnement Azure.

OpenAI peut ingérer divers formats de données (Markdown, PDF, documents, etc.). L’outil Chat Playground permet de tester rapidement son fonctionnement et vous assiste également dans la création et la gestion de vos modèles OpenAI.

Déployer sur une webApp


Exemples de code

Pour aller plus loin et commencer à imaginer l’intégration d’OpenAI dans un écosystème d’application, voici quelques exemples de code.

API OpenAI et Azure Functions

Le code suivant utilise la bibliothèque Python openai pour interagir avec l’API OpenAI et Azure Functions pour déployer une fonction qui génère du texte avec OpenAI. (source)

sequenceDiagram participant Utilisateur participant Azure Functions participant API OpenAI Utilisateur->>Azure Functions: Envoyer une requête Azure Functions->>API OpenAI: Générer du texte API OpenAI->>Azure Functions: Retourner le texte généré Azure Functions->>Utilisateur: Retourner le texte généré
  1. Pour commencer installer la bibliothèque openai en ajoutant une dépendance dans votre fichier requirements.txt

  2. Créez un fichier function.json pour définir les déclencheurs et les liaisons de votre fonction Azure :

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}
  1. Créez un fichier init.py pour définir la logique de votre fonction Azure en utilisant la bibliothèque openai :
import logging
import openai
import azure.functions as func
import json

openai.api_key = "votre_clé_api_openai"

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    try:
        req_body = req.get_json()
        prompt = req_body.get('prompt')
    except ValueError:
        return func.HttpResponse(
             "Veuillez envoyer une requête JSON valide avec un champ 'prompt'.",
             status_code=400
        )

    if prompt:
        response = openai.Completion.create(
            engine="davinci-codex",
            prompt=prompt,
            max_tokens=100,
            n=1,
            stop=None,
            temperature=0.5
        )

        return func.HttpResponse(json.dumps(response.choices[0].text))
    else:
        return func.HttpResponse(
             "Veuillez inclure un champ 'prompt' dans votre requête JSON.",
             status_code=400
        )

N’oubliez pas de remplacer “votre_clé_api_openai” par votre clé API OpenAI. Pour trouver votre KEY et votre ENDPOINT :

a. Accédez à la page de la ressource OpenAI déployée et cliquez sur Clés et Point de terminaison ( ou KEY and Endpoint en anglais) dans le menu de gauche.

b. Trouvez la clé API (Key1 ou Key2)

Maintenant, vous avez une fonction Azure qui génère du texte avec OpenAI lorsque vous envoyez une requête HTTP POST avec un champ prompt dans le corps JSON.

Soit en Python

import requests

url = "https://your-azure-function-url"
headers = {"Content-Type": "application/json"}
data = {"prompt": "Quelles sont les meilleures pratiques pour la gestion de projet ?"}

response = requests.post(url, headers=headers, json=data)

print(response.text)

ou tout simplement en BASH

curl -X POST "https://your-azure-function-url" -H "Content-Type: application/json" -d '{"prompt": "Quelles sont les meilleures pratiques pour la gestion de projet ?"}'

Avant de conclure

Il est important de noter quelques points d’attention lors de l’intégration d’OpenAI et d’Azure. Tout d’abord, le coût peut être un facteur important, car le nombre de tokens traités affecte le coût de l’utilisation de l’API OpenAI. Il est donc essentiel de surveiller et de mettre en place des limites pour éviter des dépenses imprévues.

Ensuite, bien que le moteur GPT-3.5 soit puissant, le moteur GPT-4 est encore plus révolutionnaire et pertinent. Il est donc recommandé de surveiller les mises à jour et les améliorations apportées par OpenAI.

Enfin, il est crucial de prendre les résultats générés par OpenAI avec précaution et de mettre en place des garde-fous pour éviter les effets secondaires indésirables. Les utilisateurs doivent être conscients que les résultats peuvent parfois être imprécis ou ne pas correspondre exactement aux attentes.

Conclusion

L’intégration d’OpenAI et d’Azure offre de nombreuses possibilités pour créer des applications et des services intelligents. Cependant, il est important de tenir compte des points d’attention mentionnés pour garantir une utilisation efficace et responsable de ces technologies. En exploitant la puissance d’OpenAI et d’Azure tout en étant conscient des défis potentiels, votre entreprise peut se positionner à la pointe de la technologie et ouvrir la porte à un avenir riche en innovations et en réussites.

Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome