Dies ist ein RiveScript-Interpreter für die Programmiersprache Python. RiveScript ist eine Skriptsprache für Chatterbots, die es einfach macht, Trigger-/Antwortpaare zum Aufbau der Intelligenz eines Bots zu schreiben.
Historisch gesehen unterstützte diese Bibliothek sowohl Python 2 als auch Python 3, bis zu dem Tag, an dem Python 2 am 1. Januar 2020 den End-of-Life-Status erreichte.
Die endgültige Version mit Python-2-Unterstützung ist v1.14.9 , die Sie weiterhin über PyPI installieren können, wenn Sie eine Python2-Umgebung unterstützen müssen. Künftig zielen RiveScript-Versionen auf moderne, unterstützte Versionen der Python 3-Sprache ab. Heute bedeutet dies Python 3.6 und neuer.
# Python2 letzte unterstützte Version von RiveScript ist 1.14.9pip install rivescript==1.14.9
Die Moduldokumentation ist unter http://rivescript.readthedocs.org/ verfügbar.
Schauen Sie sich auch das RiveScript-Community-Wiki an, um gängige Designmuster sowie Tipps und Tricks für RiveScript zu finden.
Dieses Modul ist auf PyPI verfügbar und kann über pip installiert werden:
pip install rivescript
Um die Installation manuell durchzuführen, laden Sie das Git-Repository herunter oder klonen Sie es und führen Sie python setup.py install
aus
Im Verzeichnis „eg/“ dieses Projekts auf GitHub sind Beispiele verfügbar, die zeigen, wie man auf unterschiedliche Weise mit einem RiveScript-Bot interagiert – etwa über die Twilio-SMS-API – sowie andere Codeausschnitte und nützliche Tricks.
Das rivescript
Modul kann als eigenständiges Python-Skript ausgeführt oder in anderen Python-Code eingebunden werden. Bei direkter Ausführung wird eine interaktive Chat-Sitzung gestartet:
python rivescript ./eg/brain
Falls die Ausführung von RiveScript als Skript unpraktisch ist (z. B. wenn es als Systemmodul installiert ist), können Sie das Skript shell.py
als Alias verwenden:
python shell.py eg/brain
Bei Verwendung als Bibliothek lautet die Zusammenfassung wie folgt:
from rivescript import RiveScriptbot = RiveScript()bot.load_directory("./eg/brain")bot.sort_replies()while True:msg = raw_input('You> ')if msg == '/quit':quit()reply = bot.reply("localuser", msg)print 'Bot>', antworten
Die Skripte example.py
und example3.py
bieten einfache Beispiele für die Verwendung von RiveScript als Bibliothek für Python 2 bzw. 3.
RiveScript unterstützt Unicode, ist jedoch standardmäßig nicht aktiviert. Aktivieren Sie es, indem Sie im Konstruktor einen True
Wert für die Option utf8
übergeben oder das Argument --utf8
für den eigenständigen interaktiven Modus verwenden.
Im UTF-8-Modus bleiben die meisten Zeichen in der Nachricht eines Benutzers erhalten, mit Ausnahme bestimmter Metazeichen wie Backslashes und gängiger Satzzeichen wie /[.,!?;:]/
.
Wenn Sie den Interpunktions-Regexp überschreiben möchten, können Sie einen neuen bereitstellen, indem Sie nach der Initialisierung das Attribut unicode_punctuation
des Bot-Objekts zuweisen. Beispiel:
import rebot = RiveScript(utf8=True)bot.unicode_punctuation = re.compile(r'[.,!?;:]')
Unabhängig davon, ob der UTF-8-Modus aktiviert ist, werden alle an den Bot übermittelten Eingabenachrichten (falls erforderlich) in den unicode
Datentyp von Python konvertiert. Es ist zwar eine gute Praxis, sicherzustellen, dass Sie dem Bot Unicode-Strings zur Verfügung stellen, aber die Bibliothek ist für Sie da, wenn Sie es vergessen.
Wenn das rivescript
-Paket eigenständig ausgeführt wird, unterstützt es den „JSON-Modus“, bei dem Sie mit dem Bot über JSON kommunizieren. Dies ist nützlich für Programme von Drittanbietern, die RiveScript verwenden möchten, aber keinen Interpreter in ihrer Muttersprache haben.
Führen Sie es einfach wie folgt aus: python rivescript --json /path/to/brain
Drucken Sie eine JSON-codierte Datenstruktur in die Standardeingabe. Das Format sollte so aussehen:
{ "username": "localuser", "message": "Hallo Bot!", "vars": { "name": "Aiden" } }
Nachdem Sie dies gesendet haben, können Sie ein EOF
Signal senden und der Bot antwortet mit einer JSON-Antwort und wird dann beendet. Oder Sie können die Sitzung offen halten, indem Sie nach Ihrer Eingabe die Zeichenfolge __END__
in einer eigenen Zeile senden. Der Bot wird dasselbe tun, wenn er antwortet, sodass Sie dieselbe Pipe für mehrere Interaktionen wiederverwenden können.
Die Antwort des Bots wird wie folgt formatiert:
{ "status": "ok", "reply": "Hallo, Mensch!", "vars": { "name": "Aiden" } }
Der status
lautet ok
bei Erfolg oder „ error
, wenn ein Fehler aufgetreten ist. Die reply
ist die Antwort des Bots (oder eine Fehlermeldung bei Fehler).
Noah Petherbridge
Arash Saidi
Danilo Bargen
FujiMakoto
Hung Tu Dinh
Julien Syx
Pablo
Peixuan (Shawn) Ding
The MIT License (MIT) Copyright (c) 2020 Noah Petherbridge Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Die offizielle RiveScript-Website, http://www.rivescript.com/