O LLMFlex é um pacote Python que permite que os desenvolvedores do Python trabalhem com diferentes modelos de idiomas grandes (LLM) e solicitem engenharia com uma interface simples. Favorece recursos gratuitos e locais em vez de usar APIs pagas para desenvolver soluções realmente locais e privadas de IA.
Ele fornece classes para carregar modelos LLM, modelos de incorporação e bancos de dados de vetores para criar aplicativos alimentados por LLM com suas próprias técnicas rápidas de engenharia e pano. Com um comando de uma linha, você pode carregar uma interface de chatbot para conversar com o LLM ou servir um modelo como API OpenAI também.
Criar um ambiente virtual antes de instalar o pacote é altamente recomendado. Também verifique se você instalou o Pytorch e o LLAMA-CPP-Python com o método de instalação correto de acordo com a configuração de hardware antes de instalar o LLMFlex. Visite os links fornecidos para os respectivos pacotes para obter guias de instalação mais detalhados.
Depois de fazer as etapas acima, você pode instalar facilmente o LLMFlex com pip .
pip install llmflex
Você também pode instalar o ExlLamAV2, AutoAWQ e AutoGPTQ se tiver dispositivos CUDA. Visite os links fornecidos para os respectivos pacotes para obter guias de instalação mais detalhados.
Ao contrário do Langchain, você pode criar vários LLMs com temperatura diferente, max novos tokens, parar palavras etc. com o mesmo modelo subjacente sem carregar o modelo várias vezes usando a classe LlmFactory . Isso pode ser útil quando você cria seu próprio agente com diferentes tarefas LLM, que requer configurações diferentes.
Todos os LLMs criados com LlmFactory são compatíveis com Langchain e podem ser perfeitamente integrados no seu código Langchain existente. Todas as classes LLM são reimplementações de algumas classes Langchain LLM que suportam streaming mais eficiente e interrompem o gerenciamento de palavras, tudo com uma interface unificada.
Vários formatos de modelo são suportados e o processo de carregamento é tratado na classe LlmFactory , por isso é apenas plug and play. Formatos suportados:
Uma classe base BaseTool para criar ferramentas alimentadas por LLM. Um BrowserTool alimentado pelo DuckDuckGo é implementado como exemplo.
Uma classe Agent é fornecida. Você pode passar suas ferramentas e LLM para inicializar o agente, depois de fornecer ao agente uma tarefa, o agente elaborará a mágica para você com as ferramentas fornecidas.
Classes agrupadas para usar modelos de incorporação que contêm o modelo de incorporação e um divisor de texto baseado em contagem de tokens usando o modelo de incorporação.
Utilizando kits de ferramentas de incorporação e FAISS, uma classe FaissVectorDatabase pode permitir que você armazene e pesquise textos para suas tarefas de pano.
Classes de memória de bate -papo para armazenar memória de bate -papo no disco.
BaseChatMemory
Classe de memória sem usar modelos de incorporação ou bancos de dados vetoriais.
LongShortTermChatMemory
Classe de memória usando um FaissVectorDatabase subjacente para manter a memória de longo prazo junto com a memória mais recente.
Uma classe PromptTemplate é implementada para formatar seu prompt com diferentes formatos de prompt para modelos de diferentes fontes. Algumas predefinições como Llama3 , ChatML , Vicuna e muito mais já foram implementadas, mas você pode sempre adicionar seu próprio modelo de formato de prompt.
Um WebApp de streamlit é fornecido para o uso local de chatbot da AI. A chamada de funções e o RAG em seus próprios documentos são suportados no WebApp. Você também pode orientar a resposta do LLM, fornecendo o texto inicial para a resposta.
É assim que você pode começar com qualquer modelo de geração de texto no HuggingFace com sua 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 carregar um modelo de incorporação e usar um banco de dados vetorial:
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" )) Uma classe BrowserTool é implementada como um exemplo para criar uma ferramenta com o LLMFlex. A ferramenta está usando o DuckDuckgo por padrão. Aqui está como você pode usá -lo:
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 o agente de reação de um tiro para passar por fluxos de trabalho mais 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." )Se você deseja apenas uma GUI para começar a conversar com seu modelo LLM com memória de longo e curto prazo, digite este comando no terminal:
llmflex interfaceSe você deseja configurar o modelo LLM, o modelo de incorporação, o divisor de texto e o reerranCer, crie um arquivo de configuração e modifique -o primeiro:
# Create a config file for the webapp
llmflex create-app-configDepois de modificar o arquivo, execute o seguinte:
llmflex interface --config_dir chatbot_config.yamlVocê verá um front -end do streamlit, use -o para conversar com o modelo LLM.
Agora você pode fazer upload de seus arquivos de texto para criar bases de conhecimento e conversar sobre seus documentos com seu assistente de IA.
Para obter mais detalhes sobre como configurar seu YAML, leia a documentação fornecida.
A documentação do Python para todas as classes, métodos e funções é fornecida no diretório ./docs neste repositório.
Este projeto está licenciado nos termos da licença do MIT.