Le but de cette preuve de concept est d'évaluer ce qui est nécessaire pour créer un chatbot polyvalent, fiable et intuitif permettant aux utilisateurs de s'engager sur des sujets liés à Alkemio. Le projet n'est pas déployable tel quel, mais devrait constituer une contribution précieuse pour montrer les capacités d'IA générative et aider à évaluer ce qui est requis pour intégrer cette fonctionnalité dans la plate-forme.
Les grands modèles linguistiques (LLM) se sont considérablement améliorés au cours de la période récente et ne sont ni omniprésents ni performants. Cela ouvre de nombreuses possibilités pour leur utilisation dans différents domaines. OpenAI est le fournisseur commercial de LLM le plus connu, mais il existe un large choix de modèles LLM, qu'ils soient commerciaux ou open source. Même si cela offre des options, cela crée également un risque de dépendance vis-à-vis du fournisseur.
Les LLM ne sont qu'un des composants requis pour la mise en œuvre pratique des solutions d'IA générative, et de nombreux autres « éléments de base » sont également nécessaires. Langchain est une bibliothèque open source populaire qui fournit ces éléments de base et crée une couche d'abstraction, créant ainsi l'indépendance du fournisseur.
La formation d'un LLM est d'un coût prohibitif pour la plupart des organisations, mais pour la plupart des mises en œuvre pratiques, il est nécessaire d'incorporer des données spécifiques à l'organisation. Une approche courante consiste à ajouter un contexte spécifique à une question utilisateur à l'invite soumise au LLM. Cela pose un défi, car les LLM n'autorisent généralement que des invites d'une taille finie (généralement autour de 4 000 jetons). Il est donc important que les informations contextuelles pertinentes soient fournies et pour cela, les opérations suivantes doivent être effectuées :
Ce projet a été inspiré par de nombreux articles, mais théoriques et pratiques. Une partie importante de la base de code provient du projet Building an AWS Well-Architected Chatbot with LangChain.
Le projet a été implémenté sous la forme d'un micro-service basé sur un conteneur avec un RPC RabbitMQ. Il existe une file d'attente RabbitMQ :
alkemio-virtual-contributor-engine-guidance
- file d'attente pour soumettre les requêtes au microserviceLa charge utile de la requête est constituée de json avec la structure suivante (exemple pour une requête) :
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
Les types d'opérations sont :
ingest
: collecte de données à partir du site Web de la fondation Alkemio (via la source Github) et intégration à l'aide du modèle texte OpenAI Ada, aucune demande d'ajout de données .reset
: réinitialiser l’historique des discussions pour les discussions en cours, nécessite un identifiant utilisateur.query
: poster la question suivante dans une séquence de discussion, voir exempleLa réponse est publiée dans une file d'attente générée automatiquement, exclusive et sans nom.
Il existe un projet d'implémentation pour le langage d'interaction du modèle (cela nécessite une amélioration significative). Si aucun code de langue n'est spécifié, l'anglais sera utilisé. Les choix sont les suivants : 'EN' : 'Anglais', 'US' : 'Anglais', 'UK' : 'Anglais', 'FR' : 'Français', 'DE' : 'Allemand', 'ES' : 'Espagnol'. , 'NL' : 'Néerlandais', 'BG' : 'Bulgare', 'UA' : "Ukrainien"
*Remarque : il existe une implémentation RESTful antérieure (obsolète) disponible sur https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api
La commande suivante peut être utilisée pour créer le conteneur à partir de Docker CLI (l'architecture par défaut est amd64, donc --build-arg ARCHITECTURE=arm64
pour les builds amd64) : docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Le Dockerfile contient des arguments de configuration explicites.
La commande suivante peut être utilisée pour démarrer le conteneur à partir de Docker CLI : docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
où .env
basé sur .azure-template.env
Vous pouvez également utiliser docker-compose up -d
.
avec:
AZURE_OPENAI_API_KEY
: une clé API OpenAI valideOPENAI_API_VERSION
: une version Azure OpenAI valide. Au moment de la rédaction, le dernier est 2023-05-15
AZURE_OPENAI_ENDPOINT
: une URL de base Azure OpenAI valide, par exemple https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: le nom d'hôte RabbitMQRABBITMQ_USER
: l'utilisateur RabbitMQRABBITMQ_PASSWORD
: le mot de passe RabbitMQAI_MODEL_TEMPERATURE
: la temperature
du modèle, utilisez une valeur comprise entre 0 et 1. 1 signifie une réponse plus aléatoire, plus proche de 0 - une réponse plus stricteLLM_DEPLOYMENT_NAME
: le nom du déploiement du modèle AI gpt dans AzureEMBEDDINGS_DEPLOYMENT_NAME
: le nom du déploiement du modèle d'intégration d'IA dans AzureAI_SOURCE_WEBSITE
: l'URL du site Web de la fondation qui contient les données sources (pour référence uniquement)AI_SOURCE_WEBSITE2
: l'URL du site Web d'accueil qui contient les données sources (pour référence uniquement)AI_LOCAL_PATH
: chemin du fichier local pour stocker les donnéesAI_WEBSITE_REPO
: url du dépôt Git contenant les données sources du site de la fondation, basé sur Hugo - sans httpsAI_WEBSITE_REPO2
: url du dépôt Git contenant les données sources du site d'accueil, basé sur Hugo - sans httpsAI_GITHUB_USER
: utilisateur Github utilisé pour le clonage des dépôts de sites WebAI_GITHUB_PAT
: Jeton d'accès personnel pour le clonage des dépôts de sites WebLANGCHAIN_TRACING_V2
: activer le traçage LangchainLANGCHAIN_ENDPOINT
: point de terminaison de traçage Langchain (par exemple "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: Clé API de traçage LangchainLANGCHAIN_PROJECT
: Nom du projet de traçage Langchain (par exemple "virtual-contributor-engine-guidance") Vous pouvez trouver des exemples de valeurs dans .azure-template.env
. Configurez-les et créez un fichier .env
avec les paramètres mis à jour.
Le projet nécessite l'installation de Python & Poetry. Les dépendances de version minimales peuvent être trouvées sur pyproject.toml
. Après avoir installé Python & Poetry :
poetry install
poetry run python virtual_contributor_engine_guidance.py
Le projet nécessite Python 3.11 au minimum et nécessite l'installation de Go et Hugo pour créer une version locale du site Web. Voir la documentation Go et Hugo pour les instructions d'installation (uniquement lors de l'exécution en dehors du conteneur)
Les tâches suivantes restent en suspens :