LLMFlexは、Python開発者が異なる大手言語モデル(LLM)を操作し、単純なインターフェイスを使用してエンジニアリングを促すことができるPythonパッケージです。有料のAPIを使用して、真にローカルおよびプライベートAI搭載のソリューションを開発する代わりに、無料およびローカルリソースを支持します。
LLMモデル、埋め込みモデル、ベクトルデータベースをロードするクラスを提供して、独自の迅速なエンジニアリングとRAGテクニックを備えたLLM電源アプリケーションを作成します。 One-Linerコマンドを使用すると、ChatbotインターフェイスをロードしてLLMとチャットしたり、Openai APIとしてモデルを提供したりできます。
パッケージをインストールする前に仮想環境を作成することを強くお勧めします。また、LLMFlexをインストールする前に、ハードウェアの構成に従って正しいインストール方法を備えたPytorchおよびLlama-CPP-Pythonをインストールしていることを確認してください。より詳細なインストールガイドについては、それぞれのパッケージに提供されているリンクにアクセスしてください。
上記の手順を実行した後、LLMFLEXをpipで簡単にインストールできます。
pip install llmflex
CUDAデバイスをお持ちの場合は、Exllamav2、AutOAWQ、およびAutoGPTQをインストールすることもできます。より詳細なインストールガイドについては、それぞれのパッケージに提供されているリンクにアクセスしてください。
Langchainとは異なり、 LlmFactoryクラスを使用してモデルを数回ロードせずに、同じ基礎モデルを使用して、異なる温度、最大の新しいトークン、停止単語などで複数のLLMを作成できます。これは、異なる構成を必要とするさまざまなLLMタスクを使用して独自のエージェントを作成する場合に役立ちます。
LlmFactoryで作成されたすべてのLLMは、Langchain互換性があり、既存のLangchainコードにシームレスに統合できます。すべてのLLMクラスは、より効率的なストリーミングと停止ワード管理をサポートするいくつかのLangchain LLMクラスの再実装です。
複数のモデル形式がすべてサポートされており、読み込みプロセスはすべてLlmFactoryクラスで処理されるため、プラグアンドプレイだけです。サポートされている形式:
LLM駆動ツールを作成するための基本クラスのBaseTool 。 Duckduckgoを搭載したBrowserToolが例として実装されています。
Agentクラスが提供されます。ツールとLLMを渡してエージェントを初期化することができます。エージェントにタスクを与えた後、エージェントは指定されたツールを使用して魔法をかけます。
埋め込みモデルと埋め込みモデルを使用したトークンカウントベースのテキストスプリッターを含む埋め込みモデルを使用するためのバンドルクラス。
埋め込みツールキットとFAISSを利用して、 FaissVectorDatabaseクラスを使用すると、テキストを保存および検索することができます。
ディスクにチャットメモリを保存するためのチャットメモリクラス。
BaseChatMemory
埋め込みモデルやベクトルデータベースを使用せずにメモリクラス。
LongShortTermChatMemory
メモリクラス基礎となるFaissVectorDatabaseを使用して、最新のメモリとともに長期のメモリを維持します。
PromptTemplateクラスが実装されており、さまざまなソースのモデルのさまざまなプロンプト形式でプロンプトをフォーマットします。 Llama3 、 ChatML 、 Vicunaなどの一部のプリセットはすでに実装されていますが、常に独自のプロンプト形式テンプレートを追加できます。
ローカルAIチャットボットの使用に合わせて、流線のWebAppが提供されています。独自のドキュメントの関数呼び出しとぼろは、WebAppでサポートされています。また、応答の最初のテキストを提供することにより、LLMの応答を誘導することもできます。
これは、マシンを使用してHuggingfaceでテキスト生成モデルから始める方法です。
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' )ワンショットReactエージェントを使用して、より複雑なワークフローを通過します。
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." )長期メモリと短期メモリの両方でLLMモデルとのチャットをGUIにしたい場合は、端末にこのコマンドを入力してください。
llmflex interfaceLLMモデル、埋め込みモデル、テキストスプリッター、およびRerankerを構成する場合は、構成ファイルを作成して最初に変更します。
# Create a config file for the webapp
llmflex create-app-configファイルを変更した後、次のことを実行します。
llmflex interface --config_dir chatbot_config.yamlretrylidのフロントエンドが表示され、LLMモデルとチャットするために使用します。
これで、テキストファイルをアップロードして知識ベースを作成し、AIアシスタントとドキュメントについて話すことができます。
YAMLの構成方法の詳細については、提供されているドキュメントをお読みください。
すべてのクラス、メソッド、および関数のPythonドキュメントは、このリポジトリの./docsディレクトリで提供されています。
このプロジェクトは、MITライセンスの条件に基づいてライセンスされています。