LLMFLEX es un paquete de Python que permite a los desarrolladores de Python trabajar con diferentes modelos de lenguaje grande (LLM) y hacer una ingeniería rápida con una interfaz simple. Favorece los recursos gratuitos y locales en lugar de utilizar API pagas para desarrollar soluciones verdaderamente locales y privadas con AI.
Proporciona clases para cargar modelos LLM, incrustar modelos y bases de datos vectoriales para crear aplicaciones alimentadas con LLM con sus propias técnicas de ingeniería y RAG. Con un comando de una línea, puede cargar una interfaz de chatbot para chatear con el LLM o servir a un modelo como API de OpenAI también.
Se recomienda crear un entorno virtual antes de instalar el paquete. También asegúrese de haber instalado Pytorch y Llama-CPP-Python con el método de instalación correcto de acuerdo con su configuración de hardware antes de instalar LLMFlex. Visite los enlaces proporcionados para los paquetes respectivos para guías de instalación más detalladas.
Después de haber realizado los pasos anteriores, puede instalar fácilmente LLMFlex con pip .
pip install llmflex
También puede instalar exllamav2, autoawq y autogptq si tiene dispositivos CUDA. Visite los enlaces proporcionados para los paquetes respectivos para guías de instalación más detalladas.
A diferencia de Langchain, puede crear múltiples LLM con diferentes temperaturas, max nuevos tokens, parar palabras, etc. con el mismo modelo subyacente sin cargar el modelo varias veces usando la clase LlmFactory . Esto puede ser útil cuando crea su propio agente con diferentes tareas LLM que requieren diferentes configuraciones.
Todos los LLM creados con LlmFactory son compatibles con Langchain, y pueden integrarse perfectamente en su código Langchain existente. Todas las clases de LLM son reimplementaciones de algunas clases de Langchain LLM que admiten la gestión de palabras más eficiente y detienen, todas con una interfaz unificada.
Todos los formatos de modelo son compatibles, y el proceso de carga se maneja en la clase LlmFactory , por lo que es solo enchufar y reproducir. Formatos compatibles:
Una clase base BaseTool para crear herramientas alimentadas por LLM. Un BrowserTool impulsado por Duckduckgo se implementa como ejemplo.
Se proporciona una clase Agent . Puede pasar sus herramientas y LLM para inicializar al agente, después de darle al agente una tarea, el agente resolverá la magia para usted con las herramientas dadas.
Clases agrupadas para usar modelos de incrustación que contienen el modelo de incrustación y un divisor de texto basado en el conteo de tokens utilizando el modelo de incrustación.
Utilizando los kits de herramientas de incrustación y FAISS, una clase FaissVectorDatabase puede permitirle almacenar y buscar mensajes de texto para sus tareas de trapo.
Clases de memoria de chat para almacenar la memoria de chat en el disco.
BaseChatMemory
Clase de memoria sin usar modelos de incrustación o bases de datos vectoriales.
LongShortTermChatMemory
Clase de memoria utilizando una FaissVectorDatabase subyacente para mantener la memoria a largo plazo junto con la memoria más reciente.
Se implementa una clase PromptTemplate para formatear su solicitud con diferentes formatos de solicitud para modelos de diferentes fuentes. Algunos presets como Llama3 , ChatML , Vicuna y más ya están implementados, pero siempre puede agregar su propia plantilla de formato de inmediato.
Se proporciona una aplicación web aerodinámica para el uso local de chatbot de IA. Las llamadas de funciones y el trapo en sus propios documentos son compatibles con la aplicación web. También puede dirigir la respuesta del LLM proporcionando el texto inicial para la respuesta.
Así es como puede comenzar con cualquier modelo de generación de texto en Huggingface con su máquina.
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 = "" )Para cargar un modelo de incrustación y usar una base de datos vectorial:
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" )) Una clase BrowserTool se implementa como un ejemplo para crear una herramienta con LLMFLEX. La herramienta está usando DuckDuckgo de forma predeterminada. Así es como puedes usarlo:
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' )Use el agente React de un solo disparo para pasar por flujos de trabajo más complicados.
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 solo desea que una GUI comience a chatear con su modelo LLM con memoria a largo y a corto plazo, escriba este comando en el terminal:
llmflex interfaceSi desea configurar el modelo LLM, el modelo de incrustación, el divisor de texto y el reranker, crear un archivo de configuración y modificarlo primero:
# Create a config file for the webapp
llmflex create-app-configDespués de modificar el archivo, ejecute lo siguiente:
llmflex interface --config_dir chatbot_config.yamlVerá un frontend de transmisión, lo usará para chatear con el modelo LLM.
Ahora puede cargar sus archivos de texto para crear bases de conocimiento y hablar sobre sus documentos con su asistente de IA.
Para obtener más detalles sobre cómo configurar su YAML, lea la documentación proporcionada. 
La documentación de Python para todas las clases, métodos y funciones se proporciona en el directorio ./docs en este repositorio.
Este proyecto tiene licencia bajo los términos de la licencia MIT.