LLMFLEX是一個Python軟件包,允許Python開發人員使用不同的大型語言模型(LLM),並使用簡單的接口進行及時的工程。它有利於免費和本地資源,而不是使用付費API來開發真正的本地和私人AI驅動的解決方案。
它提供了加載LLM模型,嵌入模型和矢量數據庫的類,以使用您自己的及時工程和抹布技術創建LLM供電的應用程序。使用單線命令,您可以加載聊天機器人接口與LLM聊天,也可以將模型作為OpenAI API提供。
強烈建議在安裝軟件包之前創建虛擬環境。另外,請確保在安裝LLMFLEX之前,根據硬件配置安裝了正確的安裝方法,並使用正確的安裝方法安裝了Pytorch和Llama-CPP-Python。請訪問提供各自軟件包的鏈接,以獲取更詳細的安裝指南。
完成上述步驟後,您可以輕鬆地使用pip安裝llmflex。
pip install llmflex
如果您有CUDA設備,也可以安裝Exllamav2,AutoAWQ和AutoGPTQ。請訪問提供各自軟件包的鏈接,以獲取更詳細的安裝指南。
與Langchain不同,您可以創建具有不同溫度,最大新令牌,停止單詞等的多個LLM,而使用相同的基礎模型,而無需使用LlmFactory類加載模型幾次。當您使用不同的LLM任務創建自己的代理(需要不同的配置)時,這可能很有用。
使用LlmFactory創建的所有LLM均兼容Langchain,並且可以無縫集成在您現有的Langchain代碼中。所有LLM類都是一些Langchain LLM類的重新實現,這些類別支持更有效的流和單詞管理,所有這些都具有統一的界面。
支持多種模型格式,並且加載過程都在LlmFactory類中處理,因此僅插件。支持格式:
用於創建LLM供電工具的基類BaseTool 。以Duckduckgo為動力的BrowserTool以示例為例。
提供了Agent類。您可以通過工具和LLM來初始化代理,在給代理一個任務後,代理商將使用給定的工具為您制定魔術。
捆綁的類,用於使用包含嵌入模型的嵌入模型和使用嵌入模型的基於令牌計數的文本分離器。
FaissVectorDatabase類利用嵌入式工具包和Faiss,可以使您可以存儲和搜索文本中的抹布任務。
聊天內存類,用於將聊天存儲器存儲在磁盤上。
BaseChatMemory
內存類無需使用任何嵌入模型或矢量數據庫。
LongShortTermChatMemory
使用基礎的FaissVectorDatabase內存類,以維護長期內存以及最新的內存。
實現了PromptTemplate類,以通過不同來源的模型使用不同的提示格式格式化提示。某些預設已經實現了Llama3 , ChatML , Vicuna等,但是您可以添加自己的及時格式模板。
為本地AI聊天機器人使用提供了簡化的WebApp。 WebApp上支持您自己文檔的功能調用和抹布。您還可以通過提供響應的開始文本來指導LLM的響應。
這就是您可以通過計算機上的任何文本生成模型開始的方式。
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 = "" )加載嵌入模型並使用矢量數據庫:
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" ))實施了一個BrowserTool類作為示例,以使用llmflex構建工具。該工具默認使用DuckDuckgo 。這是您可以使用它的方法:
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' )使用單發反應代理人進行更複雜的工作流程。
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." )如果您只希望GUI開始使用長期和短期內存的LLM模型聊天,請在終端中鍵入此命令:
llmflex interface如果要配置LLM模型,嵌入模型,文本分離器和Reranker,請創建一個配置文件並首先對其進行修改:
# Create a config file for the webapp
llmflex create-app-config修改文件後,運行以下內容:
llmflex interface --config_dir chatbot_config.yaml您將看到簡化的前端,使用它與LLM型號聊天。
現在,您可以上傳文本文件以創建知識庫並與AI助手討論您的文檔。
有關如何配置YAML的更多詳細信息,請閱讀提供的文檔。 
該存儲庫中的./docs目錄中提供了所有類,方法和函數的Python文檔。
該項目是根據MIT許可證的條款獲得許可的。