Skip to content

AI Governance

Initialisation

  1. Afin de pouvoir générer un token longue durée donnant les pleins pouvoirs à AI Governance, connectez-vous sur un compte super admin & récupérez votre token JWT dans le cookie access-token situé sur le domaine de l’API
  2. Générer un access token via la requête curl suivante
curl 'https://<API_URL>/v2/user/accessTokens' \
  -X POST \
  -H 'content-type: application/json' \
  -H "Authorization: Bearer <YOUR_JWT>" \
  --data-raw '{"name":"ai-governance","expiresAt":"2027-01-24T11:53:12.116Z"}'
  1. Ouvrir AI Governance
  2. Éditer les secrets, coller l’access token dans le secret adminAccessToken
  3. Copier le workspace id indiqué dans la barre d’adresse
  4. Ajouter la variable d’environnement suivante au service CONSOLE :
WORKSPACE_OPS_MANAGER=https://<API_URL>/v2/workspaces/<WORKSPACE ID>/webhooks/

Si l’installation a été faite par le chart helm prismeai-core, la même valeur peut être passée directement au champs workspace_ops_manager dans les values du service prismeai-console

Rôles

Après le redémarrage de l'API gateway avec la variable WORKSPACE_OPS_MANAGER bien renseignée, plusieurs produits devraient apparaître à la racine du studio : ouvrir l'AI Governance.

Ouvrir la page Utilisateurs & Permissions puis l'onglet Roles :

  • Affiner les permissions des roles existants
  • Changer si nécessaire le rôle par défaut

Pour avoir les pleins privilèges sur la plateforme, vous pouvez vous assigner le rôle PlatformAdmin en revenant sur l'onglet Usagers.

Afin de donner plus de privilèges à un autre usager, vous pouvez aussi lui assigner un de ces rôles via cette même page.

Pour qu'un autre usager ait aussi accès à l'AI Governance, il est nécessaire de lui assigner le rôle PlatformManager dans la colonne Manager.

Thème plateforme

Il est possible de personaliser l'interface de la plateforme en ouvrant Espace utilisateur dans le menu de gauche.

AI Knowledge

Ouvrir le workspace AI Knowledge

Clés d'API

Pour renseigner les credentials des providers externes via la plateforme, accéder aux secrets du workspace via le menu 3 petits points à droite du nom du workspace :
1. Renseigner toutes les API keys nécessaires selon les providers LLM / Embeddings voulus
2. Enregistrer

Si ces credentials doivent plutôt être injectés côté infrastructure par des variables d'environnement (éventuellement issus d'un secret manager) :
1. Ouvrir la configuration du workspace via le menu 3 petits points à droite du nom du workspace, puis sur Éditer le code source.
2. Chercher (par un ctrl+f) toutes les occurences du mot {{secret.}}, et pour chaque occurence :
3. Remplacer secret par config : '{{secret.openaiApiKey}}' devient '{{config.openaiApiKey}}'.

Ainsi, openaiApiKey peut être à présent injecté par une variable d'environnement du service prismeai-runtime : WORKSPACE_CONFIG_ai-knowledge_openaiApiKey
Si la plateforme a été déployée via les modules Terraform & Helm Prisme.ai, toutes ces variables d'environnement sont automatiquement injectées depuis le secret manager, ne vous laissant plus qu'à renseigner les bonnes valeurs dans ces secrets.

Vector Store RAG

Pour le bon fonctionnement du RAG, il est nécessaire de configurer une base vectorielle.
Pour ce faire, ouvrir la configuration du workspace via le menu 3 petits points à droite du nom du workspace, puis sur Éditer le code source, et configurer la clé vectorStore selon la base vectorielle voulue :

    vectorStore:
      provider: redisSearch
      url: '{{secret.redisUrl}}'

Opensearch

    vectorStore:
      provider: openSearch
      url: '{{secret.opensearchUrl}}'
      user: '{{secret.opensearchUser}}'
      password: '{{secret.opensearchPassword}}'

Comme pour les clés d'API et quelque soit la base configurée, les différents credentials peuvent être renseignés dans des secrets directement sur la plateforme ou via des variables d'environnement du service runtime.

Activation des modèles

Ouvrir la configuration brute du workspace via le menu 3 petits points à droite du nom du workspace puis cliquer sur Éditer le code source.

Adapter le champs defaultModels en corrigeant dans la partie de droite les noms des modèles par défaut utilisés par les projets AI Knowledge. Ces noms de modèles doivent être identiques à ceux configurés ci-dessous pour OpenAI, OpenAI Azure, Becrock, ...

Pour activer ou désactiver des modèles d'un provider :

OpenAI

Mettre à jour le champs llm.openai.openai.models

Exemple :

    llm:
      openai:
        ...
        openai:
          api_key: '{{secret.openaiApiKey}}'
          models:
            - gpt-4
            - gpt-4o
            - o1-preview
            - o1-mini

OpenAI Azure

Mettre à jour le champs llm.openai.azure.resources.*.deployments.
Plusieurs ressources peuvent être utilisées en ajoutant plusieurs entrées au tableau llm.openai.azure.resources

Exemple :

llm:
  openai:
    azure:
      resources:
        - resource: "resource name"
          api_key: '{{secret.azureOpenaiApiKey}}'
          api_version: '2023-05-15'
          deployments:
            - gpt-4
            - embedding-ada

Bedrock

Mettre à jour les champs llm.bedrock.*.models et llm.bedrock.*.region.
Plusieurs régions peuvent être utilisés en ajoutant plusieurs entrées au tableau llm.bedrock

Exemple :

    llm:
      ...
      bedrock:
        - credentials:
            aws_access_key_id: '{{secret.awsBedrockAccessKey}}'
            aws_secret_access_key: '{{secret.awsBedrockSecretAccessKey}}'
          models:
            - mistral.mistral-large-2402-v1:0
            - amazon.titan-embed-image-v1
          region: eu-west-3
        - credentials:
            aws_access_key_id: '{{secret.awsBedrockAccessKey}}'
            aws_secret_access_key: '{{secret.awsBedrockSecretAccessKey}}'
          models:
            - amazon.titan-embed-text-v1
          region: us-east-1

Providers OpenAI compatible

Mettre à jour le champs llm.openailike

Exemple :

    llm:
      ...
      openailike:
        - api_key: "{{config.apiKey1}}"
          endpoint: "endpoint 1"
          models:
            - alfred-40b-1123
        - api_key: "{{secret.apiKey2}}"
          endpoint: "endpoont 2"
          provider: lighton
          models:
            - azure/gpt-4o-mini
            - azure/gpt-4o
            - vertex_ai/gemini-1.5
          options:
            excludeParameters:
              - presence_penalty
              - frequency_penalty
              - seed

Optional parameters :

  • provider : Provider name used in analytics metrics & dashboards
  • options.excludParameters allow excluding some openai generic parameters not supported by the given model

Configuration avancée des modèles

Chaque modèle peut être configuré individuellement par l'objet modelsSpecifications :

Exemple :

modelsSpecifications:
  gpt-4:
    maxContext: 8192
    maxResponseTokens: 2000
    subtitle:
      fr: Modèle hebergé aux USA.
      en: Model hosted in USA.
    description:
      fr: Le modèle GPT-4 sur OpenAI. Vous pouvez utiliser des documents C1 et C2.
      en: The GPT-4 model on OpenAI. You can use documents C1 and C2.
    rateLimits:
      requestsPerMinute: 1000
      tokensPerMinute: 100000
    failoverModel: 'gpt-4o'
  text-embedding-ada-002:
    type: embeddings
    maxContext: 2048
    subtitle: {}
    description: {}      

Notes :

  • Tous les modèles LLM (qui n'ont pas de type: embeddings) apparaissaient automatiquement dans le menu de l'AI Store (sauf si désactivé au niveau de l'agent) avec les titres et descriptions configurées
  • maxContext permet de spécifier la taille maximum du contexte pouvant être transmis au modèle en tokens (actuellement comptabilisé par le tokenizer openai, sensiblement différent de mistral notamment)
  • maxResponseTokens configure la taille maximum de la complétion demandée au LLM, peut être surchargé dans les paramètres de chaque agent.

Rate limites

Les rate limits de modèles LLM peuvent actuellement être appliquées à 2 moments dans le traitement d'un message :

  1. Dès la réception d'un message pour les requestsPerMinute de projet ou usager
  2. Après les étapes de RAG et avant l'appel du LLM pour les tokensPerMinute de projet/usager/modèle ou requestsPerMinute de modèle

Les rate limits de modèles d'embedding sont quant à elles appliquées avant la vectorisation d'un document, par projet ou par modèle.

Par modèle

Lorsque modelsSpecifications.*.rateLimits.requestsPerMinute ou modelsSpecifications.*.rateLimits.tokensPerMinute sont définis, une erreur (personnalisable via toasts.i18n.*.rateLimit) est renvoyée à tout usager essayant d'envoyer un message à un modèle dépassant les limites configurées. Ces limites sont propres à chaque modèle et communes à l'ensemble des projets/usagers utilisant les modèles.

Lorsque ces limites sont atteintes et si l'option modelsSpecifications.*.failoverModel est renseignée, tout projet ayant activé son option failover.enabled (désactivé par défaut) basculera automatiquement vers le modèle de failover.

Notes :

  • Les limites tokensPerMinute s'appliquent sur le prompt complet envoyé au LLM, n'incluant pas seulement la question utilisateur mais aussi le prompt système, prompt projet, et le contexte RAG.
  • Le failover et les tokensPerMinute de modèles s'appliquent aussi aux requêtes intermédiaires intervenant pendant la construction d'une réponse (suggestion de question, self query, enhance query, filtrage des sources utilisées ...)

Par projet ou usager

Des limites requestsPerMinute et tokensPerMinute peuvent aussi être appliqués par projet et/ou usager via le champs limits de la configuration du workspace AI Knowledge :

    limits:
      files_count: 20
      llm:
        users:
          requestsPerMinute: 20
          tokensPerMinute: 100000
        projects:
          requestsPerMinute: 300
          tokensPerMinute: 30000
      embeddings:
        projects:
          requestsPerMinute: 200
          tokensPerMinute: 1000000
  • limits.llm.users indique les limites de message / tokens par minute appliquées par utilisateur, quelque soit les projets utilisés
  • limits.llm.projects indique les limites par défaut de message / tokens par minutes pouvant être traités par chaque projet. Ces nombres peuvent être surchargés projet par projet via la page /admin de l'AI Knowledge.
  • limits.files_count indique le nombre maximum de documents pouvant être mis en lignes dans les projets AI Knowledge. Ce nombre peut être surchargé projet par projet via la page /admin de l'AI Knowledge.

Notes :

  • Les limites tokensPerMinute s'appliquent sur le prompt complet envoyé au LLM, n'incluant pas seulement la question utilisateur mais aussi le prompt système, prompt projet, et le contexte RAG.

Recherche Bing

Pour activer la fonctionnalité de recherche internet durant la génération des réponses, renseigner une clé d'api key Bing dans tools.webSearch.apiKey

AI Store

Ouvrir le workspace AI Store

Personalisation

Pour modifier le message d'accueil apparaissant aux nouveaux arrivants sur l'AI Store :

  1. Ouvrir la configuration du workspace via le menu 3 petits points à droite du nom du workspace, puis sur Éditer le code source.
  2. Mettre à jour le contenu html des différentes traductions dans la clé onBoarding

Pour modifier le message d'avertissement "Cet agent peut faire des erreurs ..." en dessous du chat, mettre à jour les traductions dans inputGuidanceMessage

Pour mettre à jour les pages de CGU & Politique de confidentialité, mettre à jour les URLs dans le champs links.
Pour personaliser leur contenu depuis la plateforme, il est possible de créer ces pages dans le workspace AI Governance puis de les rendre publique afin d'insérer leur lien dans links.

AI Insight

Initialisation

  1. Ouvrir le workspace AI Store
  2. Ouvrir la configuration de l'application Conversations Service App et copier son apiKey
  3. Ouvrir le workspace AI Insight
  4. Ouvrir la configuration de l'application Conversations Service App et remplacer l'apiKey par celle de l'AI Store
  5. Enregistrer