Dans le monde en évolution rapide du stockage et du traitement des données, la combinaison de solutions de stockage cloud efficaces avec des capacités avancées d’IA présente une approche transformatrice de la gestion de vastes volumes de données. Cet article présente une implémentation pratique utilisant MinIO, Langchain et le modèle GPT-3.5 d'OpenAI, en se concentrant sur la synthèse des documents stockés dans les compartiments MinIO.
MinIO est un stockage d'objets open source hautes performances entièrement compatible avec l'API Amazon S3. Connu pour son évolutivité, MinIO est idéal pour stocker des données non structurées telles que des photos, des vidéos, des fichiers journaux, des sauvegardes et des images de conteneurs. Il ne s'agit pas seulement de stockage ; MinIO offre également des fonctionnalités telles que la réplication des données, la gestion du cycle de vie et la haute disponibilité, ce qui en fait un choix de premier ordre pour les applications cloud natives modernes.
Avant de vous lancer dans la mise en œuvre, assurez-vous que Langchain est installé. Installez-le via pip :
pip install --upgrade langchain
Cela encapsulera toutes les bibliothèques requises que nous utiliserons pour nos chargeurs S3 et notre modèle OpenAI.
Dans un premier temps, nous nous concentrons sur le chargement de documents à l'aide de S3DirectoryLoader
et S3FileLoader
de Langchain. Ces chargeurs sont chargés de récupérer plusieurs documents uniques à partir de répertoires et de fichiers spécifiés dans les compartiments MinIO.
from langchain_community.document_loaders.s3_file import S3FileLoader # MinIO Configuration for the public testing server endpoint = 'play.min.io:9000' access_key = 'minioadmin' secret_key = 'minioadmin' use_ssl = True # Initialize and load a single document file_loader = S3FileLoader( bucket='web-documentation', key='MinIO_Quickstart.md', endpoint_url=f'http{"s" if use_ssl else ""}://{endpoint}', aws_access_key_id=access_key, aws_secret_access_key=secret_key, use_ssl=use_ssl ) document = file_loader.load()
Exemple Python Langchain - Chargeur de fichiers S3
from langchain_community.document_loaders.s3_directory import S3DirectoryLoader # Initialize and load documents directory_loader = S3DirectoryLoader( bucket='web-documentation', prefix='', endpoint_url=f'http{"s" if use_ssl else ""}://{endpoint}', aws_access_key_id=access_key, aws_secret_access_key=secret_key, use_ssl=use_ssl ) documents = directory_loader.load()
Exemple Python Langchain - Chargeur d'annuaire S3
Après avoir chargé les documents, nous utilisons le modèle GPT-3.5 d'OpenAI (qui est inclus dans la bibliothèque Langchain via ChatOpenAI
) pour générer des résumés. Cette étape illustre la capacité du modèle à comprendre et à condenser le contenu, fournissant ainsi des informations rapides à partir de documents volumineux.
Pour accéder à l'API OpenAI, vous pouvez acquérir une clé API en visitant le
from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableLambda import os # Set your OpenAI API key os.environ['OPENAI_API_KEY'] = 'your-openai-api-key' model = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-1106") prompt = ChatPromptTemplate.from_template( "Summarize the following document '{document_name}':{context}Please provide the summary and key points." ) loaded_documents = [documents, document] # From S3 Loaders flattened_documents = [doc for sublist in loaded_documents for doc in sublist] for loaded_document in flattened_documents: document_text = loaded_document.page_content document_name = getattr(loaded_document, 'name', 'Unknown Document') # Assuming each document has a 'name' attribute chain = ( RunnableLambda(lambda x: {"context": document_text, "document_name": document_name}) | prompt | model | StrOutputParser() ) summary = chain.invoke(None) print("Summary:", summary)
Exemple Python Langchain - Résumer des documents avec l'API OpenAI
Vous trouverez ci-dessous le résultat de l'exécution de cette démo et est le résultat de l'intégration de LangChain avec le stockage GPT-3.5 et MinIO S3 d'OpenAI ; le résultat a été raccourci à des fins de démonstration :
Summary: The document is a quickstart guide for MinIO, a high-performance object storage system that is compatible with Amazon S3. It explains how to run MinIO on bare metal hardware or in containers. For Kubernetes environments, it recommends using the MinIO Kubernetes Operator. The key points are: - MinIO is a high-performance object storage system. - It is released under the GNU Affero General Public License v3.0. - MinIO is API compatible with Amazon S3. - It can be used to build high-performance infrastructure for machine learning, analytics, and application data workloads. - The guide provides quickstart instructions for running MinIO on bare metal hardware or in containers. - For Kubernetes environments, the MinIO Kubernetes Operator is recommended.
Réponse de l'API OpenAI
Cette méthode met en évidence une manière intéressante de charger des documents du stockage S3 dans un LLM en utilisant le framework Langchain pour les traiter, tandis que le modèle GPT-3.5 d'OpenAI génère un résumé concis et les points clés du MinIO_Quickstart.md
qui est extrait du play.min.io
serveur play.min.io
. L'utilisation de l'IA pour analyser et condenser une documentation complète offre aux utilisateurs une compréhension rapide et approfondie des aspects essentiels tels que l'installation, la configuration du serveur, les SDK et autres fonctionnalités MinIO. Il met en valeur la capacité de l’IA à extraire et à présenter des informations critiques à partir de sources de données complètes.
L'intégration de MinIO, Langchain et OpenAI offre un ensemble d'outils convaincant pour gérer de gros volumes de données. Bien que les chargeurs S3 de Langchain, S3DirectoryLoader et S3FileLoader, jouent un rôle important dans la récupération de documents à partir des compartiments MinIO, ils servent uniquement à charger des données dans Langchain. Ces chargeurs n'effectuent pas d'actions liées au téléchargement de données dans des compartiments. Pour des tâches telles que le téléchargement, la modification ou la gestion des politiques de compartiment, le SDK MinIO Python est l'outil approprié. Ce SDK fournit un ensemble complet de fonctionnalités pour interagir avec le stockage MinIO, notamment le téléchargement de fichiers, la gestion des compartiments et bien plus encore. Pour plus d'informations, veuillez consulter
Alors que Langchain rationalise le processus de récupération et de traitement des données à l'aide de modèles d'IA, le gros du travail de gestion des données dans les compartiments MinIO dépend du SDK MinIO Python. Il s'agit d'une distinction importante qui doit être comprise par les développeurs et les ingénieurs de données qui créent des solutions de stockage efficaces et intégrées à l'IA. Pour une compréhension approfondie des capacités de MinIO et comment utiliser son SDK Python pour diverses opérations de stockage, reportez-vous au site officiel de MinIO.
En utilisant le stockage d'objets MinIO comme référentiel de données principal pour les processus d'IA et de ML, vous pouvez simplifier votre pipeline de gestion des données. MinIO excelle en tant que solution unique pour
Pour ceux qui souhaitent approfondir l'intégration de MinIO avec Langchain pour améliorer l'utilisation des outils LLM, l'article « Développement d'agents Langchain avec le SDK MinIO pour l'utilisation des outils LLM » propose une exploration complète du sujet.
Bonne chance dans vos efforts de développement! Nous esperons