? Megabots bietet hochmoderne, produktionsbereite LLM-Apps, die Mega-Easy gemacht haben, damit Sie sie nicht von Grund auf neu bauen müssen? Jetzt einen Bot erstellen?
Die Megabots -Bibliothek kann verwendet werden, um Bots zu erstellen, die:
? Megabots wird von einigen der berühmtesten Werkzeuge zur Produktionsstörung unterstützt. Es verwendet Langchain zum Verwalten von LLM-Ketten, Langchain-Serve, um eine Produktions-Ready-API zu erstellen, Gradio, um eine Benutzeroberfläche zu erstellen. Im Moment verwendet es Openai, um Antworten zu generieren, aber wir planen, andere LLMs in Zukunft zu unterstützen.
Hinweis: Dies ist eine laufende Arbeit. Die API könnte sich ändern.
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" ) Sie können das Bots -Promnpt ändern, um es an Ihre Anforderungen anzupassen. Im qna-over-docs -Typ-Bot müssen Sie 2 Variablen für den context (Knwoledge aus dem Index durchsucht) und die question (die menschliche Frage) übergeben.
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?" ) Mit dem memory können Sie Ihrem bot einfach Speicher hinzufügen. Es akzeptiert eine Zeichenfolge mit dem zu verwendenden Speichertyp. Dies ist standardmäßig einige vernünftige Dafaults. Wenn Sie mehr Konfiguration benötigen, können Sie die memory verwenden und den Speichertyp und die von Ihnen benötigte Konfiguration übergeben.
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. Oder mit der 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?" )) Hinweis: Für den qna-over-docs Bot ist es bei Verwendung des Speichers und der Übergabe Ihrer benutzerdefinierten Eingabeaufforderung wichtig, eine weitere Variable an Ihre benutzerdefinierte Eingabeaufforderung zu übergeben, um den Chat-Verlauf zu erleichtern. Der variable Name ist 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 kann Milvus auch als Backend für seine Suchmaschine verwenden. Sie können ein Beispiel dafür finden, wie es unten zu tun ist.
Um Milvus auszuführen, müssen Sie diesem Handbuch folgen, um eine Docker -Komponierungsdatei herunterzuladen und auszuführen. Der Befehl ist:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pySie können dann Atu als Management -Tool für Milvus installieren
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?" ) Oder verwenden Sie die Fabrikfunktion der vectorstore -Fabrik, um eine weitere Anpassung zu erhalten
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) Sie können die Botendpunkte auch lokal mit Langchain-Serve freilegen. Eine Beispiel -Datei api.py wird im megabots -Ordner bereitgestellt.
Um die API lokal freizulegen, können Sie dies tun
lc-serve deploy local megabots.api Sie sollten dann in der Lage sein, http://localhost:8000/docs zu besuchen, um die API -Dokumentation zu sehen und zu interagieren.
Um Ihre API in der Cloud bereitzustellen, können Sie mit dem in der Ausgabe bereitgestellten Endpunkt mit der API eine Verbindung zur API herstellen.
lc-serve deploy jcloud megabots.api Sie können eine Gradio -Benutzeroberfläche für den Bot mithilfe von create_interface -Funktion enthüllen. Angenommen, Ihre Datei heißt ui.py , leiten Sie gradio qnabot/ui.py um die Benutzeroberfläche lokal auszuführen. Sie sollten dann in der Lage sein, http://127.0.0.1:7860 zu besuchen, um die API -Dokumentation anzuzeigen.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) Die bot -Funktion sollte als Ausgangspunkt für das Erstellen und Anpassen Ihres Bots dienen. Unten finden Sie eine Liste der verfügbaren Argumente in bot .
| Argument | Beschreibung |
|---|---|
| Aufgabe | Die Art des Bots zu erstellen. Verfügbare Optionen: qna-over-docs . Weitere bald |
| Index | Gibt den für den Bot verwendeten Index an. Es kann entweder eine gespeicherte Indexdatei (z. B. index.pkl ) oder ein Dokumentenverzeichnis (z. B. ./index ) sein. Im Fall des Verzeichnisses wird der Index automatisch erstellt. Wenn kein Index angegeben ist, sucht bot nach index.pkl oder ./index |
| Modell | Der Name des Modells für den Bot. Sie können ein anderes Modell angeben, indem Sie seinen Namen wie "text-davinci-003" angeben. Unterstützte Modelle: gpt-3.5-turbo (Standard), text-davinci-003 More Comming Bald. |
| prompt | Eine String -Vorlage für die Eingabeaufforderung, die das Format der Frage und des Kontextes definiert, die an das Modell übergeben wurden. Die Vorlage sollte Platzhaltervariablen wie SO enthalten: context , {question} und im Fall der Verwendung des history . |
| Erinnerung | Die Art des Speichers, der vom Bot verwendet werden soll. Kann eine Zeichenfolge mit dem Typ des Speichers sein oder Sie können memory verwenden. Unterstützte Erinnerungen: conversation-buffer , conversation-buffer-window |
| Vektorstore | Die Vectorstore soll für den Index verwendet werden. Kann eine Zeichenfolge mit dem Namen der Datenbank sein oder Sie können die Fabrikfunktion der vectorstore -Fabrik verwenden. Unterstützte DBS: milvus . |
Großsprachige Modelle (LLMs) sind leistungsstark, können jedoch keine Fragen zu Dokumenten beantworten, die sie nicht gesehen haben. Wenn Sie eine LLM verwenden möchten, um Fragen zu Dokumenten zu beantworten, auf denen nicht geschult wurde, müssen Sie ihm Informationen zu diesen Dokumenten geben. Um dies zu lösen, verwenden wir "Abrufer Augmented Generation".
In einfachen Worten, wenn Sie eine Frage haben, suchen Sie zunächst nach relevanten Dokumenten. Dann geben Sie die Dokumente und die Frage an das Sprachmodell, um eine Antwort zu generieren. Um diese Arbeit zu machen, benötigen Sie Ihre Dokumente in einem durchsuchbaren Format (einen Index). Dieser Vorgang umfasst zwei Hauptschritte: (1) Vorbereitung Ihrer Dokumente für eine einfache Abfrage und (2) mit der Methode zur Erhöhung der Abrufvergrößerung.
qna-over-docs verwendet FAISS, um einen Index von Dokumenten und GPT zu erstellen, um Antworten zu generieren.
sequenzieren
Schauspielerbenutzer
Teilnehmer -API
Teilnehmer LLM
Teilnehmer Vectorstore
Teilnehmereingängergine
Teilnehmer Datalake
Autonumber
Hinweis über API, Datalake: Einnahmephase
Jedes X -Zeit -Schleife
IncestionEngine ->> Datalake: Dokumente laden
Datalake ->> IncestionEngine: Daten zurückgeben
IncestionEngine ->> IncestionEngine: geteilte Dokumente und Erstellen von Einbettungen
IncestionEngine ->> Vectorstore: Speichern von Dokumenten und Einbettungen
Ende
Hinweis über API, Datalake: Generationsphase
Benutzer ->> API: Benutzerfrage empfangen
API ->> VectorStore: Suchdokumente im Index, das für die Frage relevant ist
API ->> API: Erstellen Sie eine Eingabeaufforderung aus der Frage und relevanten Dokumenten
API ->> LLM: Übergeben Sie die Eingabeaufforderung an das Modell
LLM ->> API: Reaktion vom Modell erhalten
API ->> Benutzer: Antwort zurückgeben