No mundo em rápida evolução do armazenamento e processamento de dados, a combinação de soluções eficientes de armazenamento em nuvem com recursos avançados de IA apresenta uma abordagem transformadora para lidar com grandes volumes de dados. Este artigo demonstra uma implementação prática usando MinIO, Langchain e modelo GPT-3.5 da OpenAI, com foco no resumo de documentos armazenados em buckets MinIO.
MinIO é um armazenamento de objetos de código aberto e de alto desempenho totalmente compatível com a API do Amazon S3. Conhecido por sua escalabilidade, o MinIO é ideal para armazenar dados não estruturados, como fotos, vídeos, arquivos de log, backups e imagens de contêineres. Não se trata apenas de armazenamento; O MinIO também oferece recursos como replicação de dados, gerenciamento do ciclo de vida e alta disponibilidade, tornando-o a melhor escolha para aplicativos modernos nativos da nuvem.
Antes de mergulhar na implementação, certifique-se de ter o Langchain instalado. Instale-o via pip:
pip install --upgrade langchain
Isso encapsulará todas as bibliotecas necessárias que usaremos para nossos carregadores S3 e modelo OpenAI.
Inicialmente, nos concentramos em carregar documentos usando S3DirectoryLoader
e S3FileLoader
da Langchain. Esses carregadores são responsáveis por buscar documentos múltiplos e únicos de diretórios e arquivos especificados em buckets 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()
Exemplo de Python Langchain - Carregador de arquivos 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()
Exemplo de Python Langchain - Carregador de diretório S3
Após carregar os documentos, utilizamos o modelo GPT-3.5 da OpenAI (que está incluído na biblioteca Langchain via ChatOpenAI
) para gerar resumos. Esta etapa ilustra a capacidade do modelo de compreender e condensar o conteúdo, fornecendo insights rápidos de documentos grandes.
Para acessar a API OpenAI, você pode adquirir uma chave de API visitando o
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)
Exemplo Python Langchain - Resumindo Documentos com API OpenAI
Abaixo está o resultado da execução desta demonstração e é o resultado da integração do LangChain com o armazenamento GPT-3.5 e MinIO S3 da OpenAI; a saída foi abreviada para fins demonstrativos:
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.
Resposta da API OpenAI
Este método destaca uma maneira interessante de carregar documentos do armazenamento S3 em um LLM usando a estrutura Langchain para processá-los, enquanto o modelo GPT-3.5 da OpenAI gera um resumo conciso e pontos-chave do MinIO_Quickstart.md
que é obtido no play.min.io
servidor play.min.io
. O uso de IA para analisar e condensar documentação extensa fornece aos usuários uma compreensão rápida e completa de aspectos essenciais como instalação, configuração de servidor, SDKs e outros recursos do MinIO. Ele mostra a capacidade da IA em extrair e apresentar informações críticas de fontes de dados abrangentes.
A integração de MinIO, Langchain e OpenAI oferece um conjunto de ferramentas atraente para gerenciar grandes volumes de dados. Embora os carregadores S3 do Langchain, S3DirectoryLoader e S3FileLoader, desempenhem um papel importante na recuperação de documentos de buckets MinIO, eles servem exclusivamente para carregar dados no Langchain. Esses carregadores não executam ações relacionadas ao upload de dados em buckets. Para tarefas como upload, modificação ou gerenciamento de políticas de bucket, o MinIO Python SDK é a ferramenta apropriada. Este SDK fornece um conjunto abrangente de funcionalidades para interagir com o armazenamento MinIO, incluindo uploads de arquivos, gerenciamento de buckets e muito mais. Para obter informações adicionais, consulte
Embora Langchain simplifique o processo de busca e processamento de dados usando modelos de IA, o trabalho pesado do gerenciamento de dados dentro dos buckets MinIO depende do MinIO Python SDK. Esta é uma distinção importante que deve ser compreendida por desenvolvedores e engenheiros de dados que criam soluções de armazenamento eficientes e integradas à IA. Para uma compreensão completa dos recursos do MinIO e como utilizar seu Python SDK para várias operações de armazenamento, consulte o documento oficial do MinIO
Ao usar o armazenamento de objetos MinIO como repositório de dados primário para processos de IA e ML, você pode simplificar seu pipeline de gerenciamento de dados. MinIO se destaca como uma solução completa para
Para aqueles interessados em se aprofundar na integração do MinIO com Langchain para aprimorar o uso de ferramentas LLM, o artigo “ Desenvolvendo agentes Langchain com MinIO SDK para uso de ferramentas LLM ” oferece uma exploração abrangente do assunto.
Boa sorte em seus esforços de desenvolvimento! Esperamos