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许可证的条款获得许可的。