? Megabots fournit des applications LLM Ready LLM ultramodernes fabriquées, donc vous n'avez pas à les construire à partir de zéro? Créer un bot maintenant?
La bibliothèque Megabots peut être utilisée pour créer des bots qui:
? Megabots est soutenu par certains des outils les plus célèbres pour la production de l'IA. Il utilise Langchain pour gérer les chaînes LLM, Langchain-Serve pour créer une API Ready Ready, Gradio pour créer une interface utilisateur. Pour le moment, il utilise OpenAI pour générer des réponses, mais nous prévoyons de prendre en charge d'autres LLM à l'avenir.
Remarque: Ceci est un travail en cours. L'API pourrait changer.
pip install megabots from megabots import bot
import os
os . environ [ "OPENAI_API_KEY" ] = "my key"
# Create a bot with one line of code. Automatically loads your data from ./index or index.pkl.
# Keep in mind that you need to have one or another.
qnabot = bot ( "qna-over-docs" )
# Ask a question
answer = qnabot . ask ( "How do I use this bot?" )
# Save the index to save costs (GPT is used to create the index)
qnabot . save_index ( "index.pkl" )
# Load the index from a previous run
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" )
# Or create the index from a directory of documents
qnabot = bot ( "qna-over-docs" , index = "./index" )
# Change the model
qnabot = bot ( "qna-over-docs" , model = "text-davinci-003" ) Vous pouvez modifier les bots Promnpt pour le personnaliser selon vos besoins. Dans le type de bot qna-over-docs vous devrez passer 2 variables pour le context (Knwoledge recherché à partir de l'index) et la question (la question humaine).
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
Answer in the style of Tony Stark.
{context}
Question: {question}
Helpful humorous answer:"""
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , prompt = prompt )
qnabot . ask ( "what was the first roster of the avengers?" ) Vous pouvez facilement ajouter de la mémoire à votre bot à l'aide du paramètre memory . Il accepte une chaîne avec le type de mémoire à utiliser. Cela par défaut certains Dafaults sains d'esprit. Si vous avez besoin de plus de configuration, vous pouvez utiliser la fonction memory et passer le type de mémoire et la configuration dont vous avez besoin.
from megabots import bot
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" ))
# Bot should understand who "he" refers to. Ou en utilisant la fonction d'usine memory
from megabots import bot , memory
mem ( "conversation-buffer-window" , k = 5 )
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = mem )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) Remarque: Pour le bot qna-over-docs , lors de l'utilisation de la mémoire et de la transmission de votre invite personnalisée, il est important de se rappeler de passer une variable supplémentaire à votre invite personnalisée pour faciliter l'historique du chat. Le nom de la variable est history .
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
{history}
Human: {question}
AI:"""
qnabot = bot ( "qna-over-docs" , prompt = prompt , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) Megabots bot peut également utiliser Milvus comme backend pour son moteur de recherche. Vous pouvez trouver un exemple de la façon de le faire ci-dessous.
Afin d'exécuter Milvus, vous devez suivre ce guide pour télécharger un fichier Docker Compose et l'exécuter. La commande est:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pyVous pouvez ensuite installer ATU comme outil de gestion pour Milvus
from megabots import bot
# Attach a vectorstore by passing the name of the database. Default port for milvus is 19530 and default host is localhost
# Point it to your files directory so that it can index the files and add them to the vectorstore
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = "milvus" )
bot . ask ( "what was the first roster of the avengers?" ) Ou utilisez la fonction vectorstore Factory pour plus de personnalisation
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) Vous pouvez également exposer les points de terminaison BOT localement à l'aide de Langchain-Seser. Un exemple de fichier api.py est fourni dans le dossier megabots .
Pour exposer l'API localement, vous pouvez faire
lc-serve deploy local megabots.api Vous devriez alors pouvoir visiter http://localhost:8000/docs pour voir et interagir avec la documentation de l'API.
Pour déployer votre API dans le cloud, vous pouvez faire et vous connecter à l'API en utilisant le point de terminaison fourni dans la sortie.
lc-serve deploy jcloud megabots.api Vous pouvez exposer une interface utilisateur Gradio pour le bot à l'aide de la fonction create_interface . En supposant que votre fichier s'appelle ui.py run gradio qnabot/ui.py pour exécuter l'interface utilisateur localement. Vous devriez alors pouvoir visiter http://127.0.0.1:7860 pour voir la documentation de l'API.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) La fonction bot devrait servir de point de départ pour créer et personnaliser votre bot. Vous trouverez ci-dessous une liste des arguments disponibles dans bot .
| Argument | Description |
|---|---|
| tâche | Le type de bot à créer. Options disponibles: qna-over-docs . Plus à venir bientôt |
| indice | Spécifie l'index à utiliser pour le bot. Il peut être soit un fichier d'index enregistré (par exemple, index.pkl ) ou un répertoire de documents (par exemple, ./index ). Dans le cas du répertoire, l'index sera automatiquement créé. Si aucun index n'est spécifié, bot recherchera index.pkl ou ./index |
| modèle | Le nom du modèle à utiliser pour le bot. Vous pouvez spécifier un modèle différent en fournissant son nom, comme "Text-Davinci-003". Modèles pris en charge: gpt-3.5-turbo (par défaut), text-davinci-003 plus à venir bientôt. |
| rapide | Un modèle de chaîne pour l'invite, qui définit le format de la question et du contexte transmis au modèle. Le modèle doit inclure des variables d'espace réservé comme SO: context , {question} et dans le cas de l'utilisation history de la mémoire. |
| mémoire | Le type de mémoire à utiliser par le bot. Peut être une chaîne avec le type de mémoire ou vous pouvez utiliser la fonction d'usine memory . Souvenirs pris en charge: conversation-buffer , conversation-buffer-window |
| VectorStore | Le VectorStore à utiliser pour l'index. Peut être une chaîne avec le nom de la données ou vous pouvez utiliser la fonction d'usine vectorstore . DBS pris en charge: milvus . |
Les grands modèles de langue (LLM) sont puissants, mais ils ne peuvent pas répondre aux questions sur les documents qu'ils n'ont pas vus. Si vous souhaitez utiliser un LLM pour répondre aux questions sur les documents sur lesquels il n'a pas été formé, vous devez lui donner des informations sur ces documents. Pour résoudre ce problème, nous utilisons la «génération augmentée de récupération».
En termes simples, lorsque vous avez une question, vous recherchez d'abord des documents pertinents. Ensuite, vous donnez les documents et la question au modèle de langue pour générer une réponse. Pour que cela fonctionne, vous avez besoin de vos documents dans un format consultable (un index). Ce processus implique deux étapes principales: (1) la préparation de vos documents pour une requête facile et (2) en utilisant la méthode de génération augmentée de récupération.
qna-over-docs utilise FAISS pour créer un index de documents et GPT pour générer des réponses.
séquenchestre
acteur utilisateur
API participant
participant LLM
Vectorstore participant
ingestion de participant
Datalake des participants
nombre automatique
Remarque sur l'API, Datalake: Phase d'ingestion
boucle à chaque x temps
IngesttionEngine - >> Datalake: Charge Documents
DataLake - >> ingestionEngine: Retour Données
IngestionEngine - >> IngestionEngine: Split Documents et créez des intégres
IngestionEngine - >> VectorStore: Store Documents et intégres
fin
Remarque sur l'API, Datalake: Generation Phase
Utilisateur - >> API: Recevez une question de l'utilisateur
API - >> VECTORSTORE: Documents de recherche dans l'index pertinents pour la question
API - >> API: Construisez une invite à partir de la question et de tout document pertinent
API - >> LLM: Passez l'invite au modèle
LLM - >> API: Obtenez la réponse du modèle
API - >> Utilisateur: Réponse de retour