LLMFLEX는 파이썬 개발자가 다양한 대형 언어 모델 (LLM)으로 작업하고 간단한 인터페이스로 프롬프트 엔지니어링을 수행 할 수있는 파이썬 패키지입니다. 유료 API를 사용하여 진정한 지역 및 개인 AI 기반 솔루션을 개발하는 대신 무료 및 현지 자원을 선호합니다.
LLM 모델, 임베딩 모델 및 벡터 데이터베이스를로드하여 고유 한 프롬프트 엔지니어링 및 RAG 기술로 LLM 전원 응용 프로그램을 생성하는 클래스를 제공합니다. One-Liner 명령을 사용하면 챗봇 인터페이스를로드하여 LLM과 채팅하거나 OpenAI API로 모델을 제공 할 수 있습니다.
패키지를 설치하기 전에 가상 환경 생성을 적극 권장합니다. 또한 LLMFLEX를 설치하기 전에 하드웨어 구성에 따라 올바른 설치 방법으로 Pytorch 및 Llama-CPP-Python을 설치했는지 확인하십시오. 자세한 설치 안내서는 해당 패키지에 제공된 링크를 방문하십시오.
위의 단계를 수행 한 후에는 pip 로 LLMFLEX를 쉽게 설치할 수 있습니다.
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 클래스를 사용하면 RAG 작업에 대한 텍스트를 저장하고 검색 할 수 있습니다.
디스크에 채팅 메모리 저장을위한 채팅 메모리 클래스.
BaseChatMemory
임베딩 모델 또는 벡터 데이터베이스를 사용하지 않고 메모리 클래스.
LongShortTermChatMemory
가장 최근의 메모리와 함께 장기 메모리를 유지하기 위해 기본 FaissVectorDatabase 를 사용하는 메모리 클래스.
PromptTemplate 클래스가 구현되어 다른 소스의 모델에 대한 다른 프롬프트 형식으로 프롬프트를 형식화합니다. Llama3 , ChatML , Vicuna 등과 같은 일부 사전 설정은 이미 구현되었지만 자체 프롬프트 형식 템플릿을 추가 할 수 있습니다.
로컬 AI 챗봇 사용에 대해 간단한 웹 앱이 제공됩니다. 자신의 문서의 기능 호출 및 래그는 웹 앱에서 지원됩니다. 응답의 시작 텍스트를 제공하여 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 interfaceLLM 모델, 임베딩 모델, 텍스트 스플리터 및 재 ranker를 구성하려면 구성 파일을 작성하고 먼저 수정하려면 다음을 수정하십시오.
# Create a config file for the webapp
llmflex create-app-config파일 수정 후 다음을 실행하십시오.
llmflex interface --config_dir chatbot_config.yaml간단한 프론트 엔드가 표시되어 LLM 모델과 채팅하는 데 사용하십시오.
이제 텍스트 파일을 업로드하여 지식 기반을 만들고 AI 어시스턴트와 문서에 대해 이야기 할 수 있습니다.
YAML을 구성하는 방법에 대한 자세한 내용은 제공된 문서를 읽으십시오. 
모든 클래스, 메소드 및 기능에 대한 Python 문서는이 저장소의 ./docs 디렉토리에 제공됩니다.
이 프로젝트는 MIT 라이센스의 조건에 따라 라이센스가 부여됩니다.