Configurez et déployez facilement un service Web de chatbot entièrement auto-hébergé basé sur des modèles LLM (Large Language Models) open source, tels que Mixtral ou Llama 2, sans avoir besoin de connaissances en apprentissage automatique.
pip
?, ou d'image docker
?LangChain
et llama.cpp
pour effectuer une inférence localement.Pour plus de détails sur l'utilisation de Libre Chat, consultez la documentation sur vemonet.github.io/libre-chat
Avertissement
Ce projet est un travail en cours, utilisez-le avec prudence.
Ces points de contrôle sont des fonctionnalités sur lesquelles nous prévoyons de travailler à l'avenir, n'hésitez pas à nous faire savoir dans les numéros si vous avez des commentaires ou des demandes.
Si vous souhaitez simplement le déployer rapidement à l'aide du modèle pré-entraîné Mixtral-8x7B-Instruct
, vous pouvez utiliser docker :
docker run -it -p 8000:8000 ghcr.io/vemonet/libre-chat:main
Vous pouvez configurer le déploiement à l'aide de variables d'environnement. Pour cela, utiliser un docker compose
et un fichier .env
est plus simple, créez d'abord le fichier docker-compose.yml
:
version : " 3 "
services :
libre-chat :
image : ghcr.io/vemonet/libre-chat:main
volumes :
# ️ Share folders from the current directory to the /data dir in the container
- ./chat.yml:/data/chat.yml
- ./models:/data/models
- ./documents:/data/documents
- ./embeddings:/data/embeddings
- ./vectorstore:/data/vectorstore
ports :
- 8000:8000
Et créez un fichier chat.yml
avec votre configuration dans le même dossier que docker-compose.yml
:
llm :
model_path : ./models/mixtral-8x7b-instruct-v0.1.Q2_K.gguf
model_download : https://huggingface.co/TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF/resolve/main/mixtral-8x7b-instruct-v0.1.Q2_K.gguf
temperature : 0.01 # Config how creative, but also potentially wrong, the model can be. 0 is safe, 1 is adventurous
max_new_tokens : 1024 # Max number of words the LLM can generate
# Always use input for the human input variable with a generic agent
prompt_variables : [input, history]
prompt_template : |
Your are an assistant, please help me
{history}
User: {input}
AI Assistant:
vector :
vector_path : null # Path to the vectorstore to do QA retrieval, e.g. ./vectorstore/db_faiss
# Set to null to deploy a generic conversational agent
vector_download : null
embeddings_path : ./embeddings/all-MiniLM-L6-v2 # Path to embeddings used to generate the vectors, or use directly from HuggingFace: sentence-transformers/all-MiniLM-L6-v2
embeddings_download : https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/v0.2/all-MiniLM-L6-v2.zip
documents_path : ./documents # Path to documents to vectorize
chunk_size : 500 # Maximum size of chunks, in terms of number of characters
chunk_overlap : 50 # Overlap in characters between chunks
chain_type : stuff # Or: map_reduce, reduce, map_rerank. More details: https://docs.langchain.com/docs/components/chains/index_related_chains
search_type : similarity # Or: similarity_score_threshold, mmr. More details: https://python.langchain.com/docs/modules/data_connection/retrievers/vectorstore
return_sources_count : 2 # Number of sources to return when generating an answer
score_threshold : null # If using the similarity_score_threshold search type. Between 0 and 1
info :
title : " Libre Chat "
version : " 0.1.0 "
description : |
Open source and free chatbot powered by [LangChain](https://python.langchain.com) and [llama.cpp](https://github.com/ggerganov/llama.cpp)
examples :
- What is the capital of the Netherlands?
- Which drugs are approved by the FDA to mitigate Alzheimer symptoms?
- How can I create a logger with timestamp using python logging?
favicon : https://raw.github.com/vemonet/libre-chat/main/docs/docs/assets/logo.png
repository_url : https://github.com/vemonet/libre-chat
public_url : https://chat.semanticscience.org
contact :
name : Vincent Emonet
email : [email protected]
license_info :
name : MIT license
url : https://raw.github.com/vemonet/libre-chat/main/LICENSE.txt
Démarrez enfin votre service de chat avec :
docker compose up
Ce package nécessite Python >=3.8, installez-le simplement avec pipx
ou pip
:
pip install libre-chat
Vous pouvez facilement démarrer un nouveau service Web de chat comprenant une interface utilisateur et une API à l'aide de votre terminal :
libre-chat start
Fournissez un fichier de configuration spécifique :
libre-chat start config/chat-vectorstore-qa.yml
Pour la reconstruction du vectorstore :
libre-chat build --vector vectorstore/db_faiss --documents documents
Obtenez un aperçu complet des options disponibles avec :
libre-chat --help
Ou vous pouvez utiliser ce package dans des scripts python :
import logging
import uvicorn
from libre_chat import ChatConf , ChatEndpoint , Llm
logging . basicConfig ( level = logging . getLevelName ( "INFO" ))
conf = ChatConf (
model_path = "./models/mixtral-8x7b-instruct-v0.1.Q2_K.gguf" ,
vector_path = None
)
llm = Llm ( conf = conf )
print ( llm . query ( "What is the capital of the Netherlands?" ))
# Create and deploy a FastAPI app based on your LLM
app = ChatEndpoint ( llm = llm , conf = conf )
uvicorn . run ( app )
Inspiré par :
Icônes de lama créées par Freepik - Flaticon