LLMFLEX est un package Python qui permet aux développeurs Python de travailler avec différents modèles de langage grand (LLM) et de faire une ingénierie rapide avec une interface simple. Il favorise les ressources libres et locales au lieu d'utiliser des API payantes pour développer des solutions alimentées par l'IA véritablement locales et privées.
Il fournit des classes pour charger des modèles LLM, des modèles d'intégration et des bases de données vectorielles pour créer des applications alimentées par LLM avec vos propres techniques d'ingénierie et de chiffon rapides. Avec une commande unique, vous pouvez charger une interface chatbot pour discuter avec le LLM ou servir également une API OpenAI.
La création d'un environnement virtuel avant d'installer le package est fortement recommandée. Assurez-vous également que vous avez installé Pytorch et Llama-Cpp-Python avec la méthode d'installation correcte en fonction de votre configuration matérielle avant d'installer LLMFLEX. Veuillez visiter les liens fournis pour les forfaits respectifs pour des guides d'installation plus détaillés.
Après avoir fait les étapes ci-dessus, vous pouvez facilement installer LLMFLEX avec pip .
pip install llmflex
Vous pouvez également installer EXLLAMAV2, AUTOAWQ et AUTOGPTQ si vous avez des appareils CUDA. Veuillez visiter les liens fournis pour les forfaits respectifs pour des guides d'installation plus détaillés.
Contrairement à Langchain, vous pouvez créer plusieurs LLM avec une température différente, de nouveaux jetons max, des mots d'arrêt, etc. avec le même modèle sous-jacent sans charger le modèle plusieurs fois en utilisant la classe LlmFactory . Cela peut être utile lorsque vous créez votre propre agent avec différentes tâches LLM qui nécessitent différentes configurations.
Tous les LLM créés avec LlmFactory sont compatibles Langchain et peuvent être intégrés de manière transparente dans votre code Langchain existant. Toutes les classes LLM sont des réimplémentations de certaines classes Langchain LLM qui prennent en charge le streaming plus efficace et la gestion des mots d'arrêt, le tout avec une interface unifiée.
Plusieurs formats de modèles sont tous pris en charge, et le processus de chargement est tous géré dans la classe LlmFactory , il est donc juste plug and play. Formats pris en charge:
Un BaseTool de base pour créer des outils à alimentation LLM. Un BrowserTool propulsé par DuckDuckgo est implémenté comme exemple.
Une classe Agent est fournie. Vous pouvez transmettre vos outils et LLM pour initialiser l'agent, après avoir donné une tâche à l'agent, l'agent élaborera la magie pour vous avec les outils donnés.
Classes groupées pour l'utilisation de modèles d'incorporation qui contient le modèle d'incorporation et un séparateur de texte basé sur des jetons à l'aide du modèle d'incorporation.
En utilisant des kits d'outils d'intégration et Faish, une classe FaissVectorDatabase peut vous permettre de stocker et de rechercher des textes pour vos tâches de chiffon.
Classes de mémoire de chat pour stocker la mémoire de chat sur le disque.
BaseChatMemory
Classe de mémoire sans utiliser de modèles d'intégration ou de bases de données vectorielles.
LongShortTermChatMemory
Classe de mémoire utilisant une FaissVectorDatabase sous-jacente pour maintenir la mémoire à long terme avec la mémoire la plus récente.
Une classe PromptTemplate est implémentée pour formater votre invite avec différents formats d'invite pour des modèles de différentes sources. Certains préréglages comme Llama3 , ChatML , Vicuna et plus sont déjà implémentés, mais vous pouvez toujours ajouter votre propre modèle de format rapide.
Un WebApp rationalisé est fourni pour l'utilisation locale de chatbot AI. L'appel de fonction et le chiffon sur vos propres documents sont pris en charge sur le WebApp. Vous pouvez également diriger la réponse du LLM en fournissant le texte de début pour la réponse.
C'est ainsi que vous pouvez commencer par n'importe quel modèle de génération de texte sur HuggingFace avec votre machine.
from llmflex import LlmFactory
# Load the model from Huggingface
model = LlmFactory ( "TheBloke/OpenHermes-2.5-Mistral-7B-GGUF" )
# Create a llm
llm = model ( temperature = 0.7 , max_new_tokens = 512 )
# Use the LLM for your task
prompt = "Q: What is the colour of an apple? A:"
ans = llm . invoke ( prompt , stop = [ 'Q:' ])
print ( ans )
# Or if you prefer to generate the output with token streamming.
for token in llm . stream ( prompt , stop = [ 'Q:' ]):
print ( token , end = "" )Pour charger un modèle d'intégration et utiliser une base de données vectorielle:
from llmflex . Embeddings import HuggingfaceEmbeddingsToolkit
from llmflex . VectorDBs import FaissVectorDatabase
# Loading the embedding model toolkit
embeddings = HuggingfaceEmbeddingsToolkit ( model_id = "thenlper/gte-small" )
# Create a vector database
food = [ "Apple" , "Banana" , "Pork" ]
vectordb = FaissVectorDatabase . from_texts ( embeddings = embeddings , texts = food )
# Do semantic search on the vector database
print ( vectordb . search ( "Beef" )) Une classe BrowserTool est implémentée comme exemple pour créer un outil avec LLMFlex. L'outil utilise DuckDuckGo par défaut. Voici comment vous pouvez l'utiliser:
from llmflex . Tools import BrowserTool
from llmflex . Rankers import FlashrankRanker
# Create a reranker
ranker = FlashrankRanker ()
# Create a broswer tool with the embeddings toolkit created earlier
tool = BrowserTool ( embeddings = embeddings , llm = llm , ranker = ranker )
# Run the tool
tool ( search_query = 'Install python' )Utilisez l'agent React One-Shot pour passer par des workflows plus compliqués.
from llmflex . Agents import Agent
agent = Agent ( llm = llm , tools = [ tool ], prompt_template = model . prompt_template )
agent . run ( "Do some research online to find out the latest trends about Generative AI." )Si vous voulez juste qu'un GUI commence à discuter avec votre modèle LLM avec une mémoire à long terme et à court terme, saisissez cette commande dans le terminal:
llmflex interfaceSi vous souhaitez configurer le modèle LLM, le modèle d'intégration, le séparateur de texte et Reranker, créez un fichier de configuration et modifiez-le d'abord:
# Create a config file for the webapp
llmflex create-app-configAprès avoir modifié le fichier, exécutez ce qui suit:
llmflex interface --config_dir chatbot_config.yamlVous verrez un frontend rationalisé, utilisez-le pour discuter avec le modèle LLM.
Vous pouvez maintenant télécharger vos fichiers texte pour créer des bases de connaissances et parler de vos documents avec votre assistant AI.
Pour plus de détails sur la façon de configurer votre YAML, veuillez lire la documentation fournie. 
La documentation Python pour toutes les classes, méthodes et fonctions est fournie dans le répertoire ./docs dans ce référentiel.
Ce projet est concédé sous licence de la licence du MIT.