Dies ist ein Telegramm -Chat -Bot (AI -Assistent), der die GPT -Sprachmodelle von OpenAI verwendet.
Bemerkenswerte Merkmale:
Lesen Sie weiter für eine detaillierte Funktionsbeschreibung oder springen Sie zum Setup.
Der Bot fungiert als Ihr persönlicher Assistent:
? Erklären Sie Apache Kafka einem Dreijährigen
? Apache Kafka ist wie ein Big Mailbox, das unterschiedliche Spielzeuge (Computer) hilft, Nachrichten aneinander zu senden. Wenn ein Spielzeug etwas zu sagen hat, wird eine Nachricht in die Mailbox gebracht, und andere Spielsachen können diese Nachricht herausnehmen und lesen. Auf diese Weise können sie schnell reden und Dinge teilen!
Damit anderen Benutzern den Bot verwenden können, listen Sie sie in der Konfiguration telegram.usernames auf.
Der Bot hat eine schreckliche Erinnerung. Erwarten Sie also nicht, dass er standardmäßig an einen Chat -Kontext erinnert. Sie können jedoch mit einer Follow-up-Frage ( Ctrl/Cmd + ↑ ) antworten. Verwenden Sie alternativ ein Plus -Zeichen, um zu verfolgen:
? Gestern schienen alle meine Probleme so weit weg zu sein
? Es hört sich so an, als würden Sie "gestern" von The Beatles zitieren. Es ist ein klassisches Lied über Sehnsucht und Nostalgie.
? + Wer hat es geschrieben?
? "Gestern" wurde von Paul McCartney von The Beatles geschrieben.
Verfügbare Befehle:
/retry - Wiederholen Sie die letzte Frage, um die letzte Frage zu beantworten/help - Hilfe zeigen Sie Hilfe/version - Bot -Info anzeigenBearbeiten Sie sie einfach, um die letzte Frage umformulieren oder hinzuzufügen. Der Bot beantwortet dann die aktualisierte Frage.
Um eine Antwort vom Bot in einer Gruppe zu erhalten, erwähnen Sie sie in einer Antwort auf eine Frage:
? Ich habe vergessen, wer Ramsy im Game of Thrones gespielt hat?
? ↳ @pokitokibot Hilfe? Ramsay Bolton in Game of Thrones wurde von Iwan Rheon gespielt.
Oder stellen Sie eine Frage direkt:
? @pokitokibot Wer hat Ramsy im Game of Thrones gespielt?
? Iwan Rheon spielte Ramsay Bolton in Game of Thrones.
Um den Bot auf Gruppenmitglieder zu antworten, listen Sie die Gruppen -ID in der Konfiguration telegram.chat_ids auf. Andernfalls ignoriert der Bot Fragen von Gruppenmitgliedern, es sei denn, sie sind im telegram.usernames aufgeführt.
Wenn Sie die Gruppen -ID nicht kennen, führen Sie den Befehl /version Bot in einer Gruppe aus, um sie zu finden:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
Wenn Sie "Vanilla" Chatgpt nach externen Ressourcen fragen, wird es entweder halluzinieren oder zugeben, dass es keinen Zugriff auf Remote -Inhalte hat:
? Was ist der Inhalt von https://sqlime.org/Employees.sql? Machen Sie keine Annahmen.
? Als KI -Sprachmodell kann ich im Internet nicht auf externe URLs zugreifen.
Der Bot löst das Problem, indem er den Remote -Inhalt abruft und an das Modell füttert:
? Name 1 Hauptmerkmal der Go 1.23 Release https://tip.golang.org/doc/go1.23 Seien Sie kurz!
? Ein Hauptmerkmal von GO 1.23 ist die Einbeziehung des Experiments "Range-Over-Func" als Standardsprachenfunktion, das die "Range" -Klausel in "For-Range" -Sloops ermöglicht, um Iteratorfunktionen zu akzeptieren.
Derzeit unterstützt nur Textinhalte (Artikel, Code, Daten), nicht PDFs, Bilder oder Audio.
Wenn Sie nicht möchten, dass der Bot auf die URL zugreift, zitieren Sie sie:
? Exakter Inhalt von "https://antonz.org/robots.txt"
? Ich kann nicht direkt auf externe Websites zugreifen. Sie können den Inhalt einer Robots.txt -Datei überprüfen, indem Sie die URL in Ihrem Browser besuchen.
Verwenden Sie kurze Befehle, um Zeit zu sparen und den Bot zu bitten, mit Ihren Fragen etwas Spezifisches zu tun. Bitten Sie es beispielsweise, Ihr Schreiben mit einem !proofread Korrekturlesenbefehl zu korrigieren:
? ! Korrekturlesen Ich kann Java Programmz schreiben
? Überarbeiteter Text: "Ich kann Java -Programme schreiben."
Änderungen vorgenommen:
- Entfernt "hat" für grammatikalische Korrektheit; "Can" benötigt nicht "hat".
- Korrigierte "Java" auf "Java", um eine ordnungsgemäße Kapitalisierung zu erhalten, da es sich um ein ordnungsgemäßes Substantiv handelt.
- "Programmz" in "Programme" geändert, um die richtige Rechtschreibung und Klarheit zu korrekt.
Es gibt mehrere eingebaute Abkürzungen:
bugfix behebt Ihren Code.proofread behebt Ihr Schreiben.translate übersetzt Ihren Text ins Englische.summarize gibt eine Zwei -Absatz -Zusammenfassung eines Textes. Sie können Ihre eigenen Verknüpfungen hinzufügen. Einzelheiten siehe config.example.yml .
Um eine benutzerdefinierte Eingabeaufforderung für den aktuellen Chat festzulegen, verwenden Sie den Eingabeaufforderung /prompt :
? /Aufforderung, du bist ein böses Genie. Antworte mit einem bösen Lachen.
Um zur Standardeingabeaufforderung zurückzukehren, verwenden Sie /prompt reset .
Der /prompt Eingangungseingang in Gruppen -Chats steht Administratoren nur zur Verfügung - Benutzer, die in der Eigenschaft telegram.admins aufgeführt sind.
Verwenden Sie den Befehl /imagine um ein Bild mit dem Dall-E 3-Modell von OpenAI zu generieren:
? /Stellen Sie sich die Morgendämmerung einer neuen Ära vor
? (schönes Bild)
der Morgendämmerung einer neuen Ära
Die Standardbildgröße beträgt 1024 × 1024 px. Andere unterstützte Größen sind 1792 × 1024 und 1024 × 1792:
/Stellen Sie sich eine faule Katze an einem sonnigen Tag 1792 × 1024 vor
Die Bildgenerierung ist ziemlich teuer. Standardmäßig ist es nur für Benutzer aktiviert, die in telegram.usernames aufgeführt sind, nicht für Gruppenmitglieder. Sie können dies mit der imagine.enabled Config -Eigenschaft ändern.
Der Komfort, mit einem Bot zu arbeiten, besteht aus kleinen Details. Hier sind einige Situationen, in denen Sie Zeit und Mühe sparen können.
Angenommen, Sie haben eine Nachricht von einem Kollegen erhalten oder einen Beitrag auf einem Kanal gelesen und möchten eine Frage stellen. Leiten Sie die Nachricht einfach an den Bot weiter und beantworten Sie die klärende Frage, die sie stellt.
Um eine Frage zu einem Dokument zu stellen, senden Sie es als Datei und schreiben Sie die Frage in die Bildunterschrift. Der Bot liest den Dateiinhalt und beantwortet. Derzeit unterstützt nur Textinhalte (Klartext, Code, Daten), nicht PDFs, Bilder oder Audio. Das Senden mehrerer Dateien wird ebenfalls nicht unterstützt.
Manchmal überschreitet die Antwort der KI die durch Telegramm festgelegte maximale Nachrichtenlänge. In diesem Fall scheitert der Bot Sie nicht mit Nachrichten. Stattdessen wird die Antwort als angehängte Markdown -Datei gesendet.
Bearbeiten Sie sie ( ↑ Verknüpfung), um die letzte Frage umformulieren oder hinzuzufügen. Der Bot wird dies bemerken und auf die geklärte Frage antworten.
Verwenden Sie den Befehl /version , um detaillierte Informationen zum aktuellen Chat, Bot und KI -Modell zu drucken:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 129
- usernames: 6 users
- admins: 1 users
- chat IDs: []
- access to messages: True
AI information:
- model: gpt-3.5-turbo
- history depth: 3
- imagine: True
- shortcuts: bugfix, proofread, summarize, translate
Verwenden Sie den Befehl /config , um fast jede Einstellung im laufenden Fliegen zu ändern, ohne den Bot neu zu starten.
telegram.usernames und telegram.chat_ids ).openai.model ), Eingabeaufforderung ( openai.prompt ) und Params ( openai.params ) an.imagine.enabled ).shortcuts ) hinzufügen oder ändern. Um eine bestimmte Konfigurationseigenschaft anzuzeigen, geben Sie ihren Namen nach /config ein:
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
Um eine bestimmte Konfigurationseigenschaft zu ändern, setzen Sie ihren Namen und Wert nach /config ein:
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
Bei der Arbeit mit Listeneigenschaften wie telegram.usernames können Sie einzelne Elemente hinzufügen oder entfernen, anstatt die gesamte Liste neu zu definieren:
/config telegram.usernames +cindy
/config telegram.usernames -bob
Der Befehl /config ist nur für Administratoren verfügbar - Benutzer, die in der Eigenschaft telegram.admins aufgeführt sind.
Erhitzte Diskussionen mit dem Bot in großen Gruppen können zu einer hohen Verwendung der OpenAI -API führen. Um zu vermeiden, dass Sie Ihr gesamtes Budget ausgeben, setzen Sie Nachrichtenlimits für Gruppen mit der conversation.message_limit fest. Message_Limit Config -Eigenschaft.
Sie können die Anzahl der Nachrichten von einem Benutzer über einen bestimmten Zeitraum einschränken. Zum Beispiel:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day Holen Sie sich Ihren OpenAI -API -Schlüssel
Holen Sie sich Ihr Telegramm -Bot -Token von @BotFather
Klonen Sie das Repo auf den Server:
git clone https://github.com/nalgeon/pokitoki.git Kopieren Sie config.example.yml in config.yml und geben Sie dort Ihre Token an. Fügen Sie sich in das telegram.usernames -Eigenschaft hinzu, ansonsten steht der Bot allen zur Verfügung.
Starten Sie den Bot:
docker compose up --build --detachUm den Bot zu stoppen:
docker compose stopSo aktualisieren Sie den Bot auf eine neue Version:
docker compose stop
git pull
docker compose up --build --detach Verwenden Sie für ältere Docker-Verteilungen docker-compose anstelle von docker compose .
Bereiten Sie die Umgebung vor:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
Bereiten Sie das Konfigurations- und Datenverzeichnis vor:
cp config.example.yml config.yml
mkdir ./data
Setzen Sie Token und andere Einstellungen in config.yml .
Tests ausführen:
python -m unittest discover
Starten Sie den Bot:
python -m bot.bot
Für neue Funktionen und Verbesserungen eröffnen Sie bitte zunächst ein Problem, um zu diskutieren, was Sie ändern möchten.
Stellen Sie sicher, dass Sie nach Bedarf Tests hinzufügen oder aktualisieren.
Verwenden Sie Schwarz für die Codeformatierung und konventionelle Commits für Commit -Nachrichten.
Für die Feature -Historie siehe Veröffentlichungen.
Ursprünglich basierend auf chatgpt_telegram_bot, obwohl die Projekte ziemlich viel abweicht.