Kaufen Sie mir bitte einen Kaffee, um dieses Projekt zu unterstützen.
Soupy ist ein Chatbot für Discord, der Bilder mit einem lokalen Bildgenerator (Fluss) und/oder mit Dall-e generieren kann. Für das Chat verwendet es eine Kombination aus Jsons, Chatgpt und einer lokalen Suchmaschine, um mit seinen Benutzern Gespräche zu führen. Es wird die Chat -Nachrichten Ihres Benutzers indexiert und diese Nachrichten verwendet, um Profile von Benutzern zu erstellen. Es wird auch jeden Kanal auf Ihrem Server, auf den er Zugriff hat, indexiert.
Es gibt mehrere Versionen von Suppen.
Suppy benötigt den OpenAI -API -Zugang zu den Chatgpt -Modellen. Daher verwendet die Chat -Portion von Suppy echtes Geld . Auch die Dall-E 3-Bildgenerierung. Sie können die Dall-E 3-Generation überspringen und nur lokal Fluss verwenden.
Das erste Setup, wobei der Kanalverlauf Ihres Servers heruntergeladen und indiziert wird, und alle Benutzer auf Ihrem Server haben Profile, die von ihnen über die API von ChatGPT Geld kosten. Eines Tages werde ich auch lokale LLMs unterstützen, aber noch nicht.
Um Flux zum Laufen zu bringen, schlage ich dringend vor, dass Sie mit dem offiziellen Flux -Repository hier beginnen. Aber sobald Sie Flux Up-and-Running haben, können Sie soupy-gradio.py verwenden, das in diesem Repository enthalten ist.
!flux (lokales Bildmodell),! !generate (dall-e 3),! !analyze (CHATGPT) und !transform (CHATGPT), um eine Reihe cooler Aktionen auszuführen.BEHAVIOUR im .env . Aber seien Sie vorsichtig damit, wie Sie es ändern. Der Wortlaut ist wichtig, um Suppen auf dem Track zu halten. Stellen Sie vor dem Einrichten von Suppen sicher, dass Sie Folgendes in Ihrem System installiert haben:
Beginnen Sie mit dem Klonen des Suppy -Repositorys in Ihre lokale Maschine:
git clone https://github.com/sneezeparty/soupy.git
cd soupy
Es wird empfohlen, eine virtuelle Umgebung zu verwenden, um Abhängigkeiten zu verwalten.
python -m venv soupy
Aktivieren Sie die virtuelle Umgebung:
Auf macOS und Linux:
source soupy/bin/activate
Unter Windows:
soupyScriptsactivate
Installieren Sie die erforderlichen Python -Pakete mit pip :
pip install -r requirements.txt
Erstellen Sie eine .env -Datei im Stammverzeichnis des Projekts und füllen Sie sie mit den erforderlichen Umgebungsvariablen ein:
DISCORD_TOKEN=your_discord_bot_token
OPENAI_API_KEY=your_openai_api_key
CHANNEL_IDS=00,11
MAX_TOKENS=2500
MAX_TOKENS_RANDOM=75
MODEL_CHAT=gpt-4o-mini
UPDATE_INTERVAL_MINUTES=61
TRANSFORM="You give detailed and accurate descriptions, be specific in whatever ways you can, such as but not limited to colors, species, poses, orientations, objects, and contexts."
BEHAVIOUR="You are Soupy Dafoe, a sarcastic and witty Discord chatbot. You recall past interactions and conversations to inform your responses. Your replies are concise, straightforward, and infused with a bit of sarcasm, much like Jules from "Pulp Fiction." You are not overly positive and avoid asking questions unless necessary. Prioritize the most recent five messages when formulating your responses, especially if not directly mentioned. If the latest message is brief, focus your reply accordingly and consider ignoring extensive chat history. Integrate the user's profile information subtly to tailor your responses without making it the main focus. Be conversational, stay in the moment, and avoid being too random or wordy. Remember, you're kind of a jerk, but in a human-like way."
Bitte beachten Sie, dass Soupy Zugriff auf alle Kanäle hat, auf die er zugreifen kann. Es wird jedoch auf alle Nachrichten in den oben angegebenen Kanälen reagieren . Andernfalls reagiert es nur zufällig oder wenn @Tagged.
Suchen Sie im Skript nach "/absolut/verzeichnis/von/your/script/" und ersetzen Sie dies durch das absolute Verzeichnis des Speicherorts Ihres Skripts.
Apache Solr wird zum Indizieren und Durchsuchen von Nachrichten und Benutzerprofilen verwendet. Befolgen Sie diese Schritte, um Solr für Suppen zu installieren und zu konfigurieren.
Laden Sie Solr herunter : Besuchen Sie die Apache Solr -Website und laden Sie die neueste stabile Version herunter. Sie können auch einige Paketmanager verwenden - sehen Sie sich die Informationen Ihrer Distribose an.
Das Paket extrahieren
Installieren Sie Solr als Dienst : Befolgen Sie die Dokumentation zu den genauen Schritten für diesen Vorgang. Es ist jedoch nicht schwer. Sie können es tun.
Überprüfen Sie die Installation :
Öffnen Sie Ihren Browser und navigieren Sie zu http://localhost:8983/solr um auf die SOLR -Administratorschnittstelle zuzugreifen.
Suppen benötigt einen einzelnen Solr -Kern mit bestimmten Feldern, um Benutzerprofile effektiv zu indizieren.
bin/solr create -c soupy
Fügen Sie die erforderlichen Felder zum soupy -Kern hinzu, um Benutzerprofile zu speichern.
Zugriff auf Solr Admin -Schnittstelle :
Navigieren Sie zu http://localhost:8983/solr und wählen Sie den soupy .
Felder definieren :
curl -X POST -H 'Content-type:application/json'
http://localhost:8983/solr/soupy/schema
-d '{
"add-field": {
"name": "id",
"type": "string",
"indexed": true,
"stored": true,
"required": true,
"multiValued": false
}
}'
oder dieser
curl -X POST -H "Content-Type: application/json"
"http://localhost:8983/solr/soupy/schema"
-d '{
"add-field":{
"name":"user_problems",
"type":"text_general",
"indexed":true,
"stored":true
}
}'
Fügen Sie die erforderlichen Felder zum soupy -Kern hinzu, um Benutzerprofile und Kanalinformationen zu speichern.
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="username" type="string" indexed="true" stored="true"/>
<field name="nicknames" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="join_date" type="date" indexed="true" stored="true"/>
<field name="political_party" type="string" indexed="true" stored="true"/>
<field name="user_job_career" type="text_general" indexed="true" stored="true"/>
<field name="user_family_friends" type="text_general" indexed="true" stored="true"/>
<field name="user_activities" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_games" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_movies" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_music" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_television" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_life" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_food" type="text_general" indexed="true" stored="true"/>
<field name="general_opinions" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_politics" type="text_general" indexed="true" stored="true"/>
<field name="personality_traits" type="text_general" indexed="true" stored="true"/>
<field name="hobbies" type="text_general" indexed="true" stored="true"/>
<field name="user_interests" type="text_general" indexed="true" stored="true"/>
<field name="user_problems" type="text_general" indexed="true" stored="true"/>
<field name="tech_interests" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_technology" type="text_general" indexed="true" stored="true"/>
<field name="sports_interests" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_sports" type="text_general" indexed="true" stored="true"/>
<field name="book_preferences" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_books" type="text_general" indexed="true" stored="true"/>
<field name="art_interests" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_art" type="text_general" indexed="true" stored="true"/>
<field name="health_concerns" type="text_general" indexed="true" stored="true"/>
<field name="health_habits" type="text_general" indexed="true" stored="true"/>
<field name="science_interests" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_science" type="text_general" indexed="true" stored="true"/>
<field name="travel_preferences" type="text_general" indexed="true" stored="true"/>
<field name="travel_experiences" type="text_general" indexed="true" stored="true"/>
<field name="food_preferences" type="text_general" indexed="true" stored="true"/>
<field name="opinions_about_food" type="text_general" indexed="true" stored="true"/>
<field name="last_updated" type="date" indexed="true" stored="true"/>
<field name="channel_id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="username" type="string" indexed="true" stored="true"/>
<field name="content" type="text_general" indexed="true" stored="true"/>
<field name="timestamp" type="pdate" indexed="true" stored="true"/>
Änderungen begehen :
Beachten Sie nach dem Hinzufügen aller Felder die Änderungen, um sie effektiv zu machen.
Nach Abschluss der Installations- und Konfigurationsschritte können Sie den Bot mit den folgenden Befehlen starten. Der erste Lauf dauert eine Weile, abhängig von der Aktivität auf Ihrem Server und der Anzahl der Benutzer. Es könnte Minuten oder Stunden dauern. Die Terminalausgabe zeigt Ihnen, was es vorhat.
python soupy-solr.py
ODER
python soupy-flux.py
UND
python gradio-soupy.py
Stellen Sie sicher, dass Sie sich in der virtuellen Umgebung und im richtigen Verzeichnis befinden, in dem sich soupy befindet.
gradio-soupy.py ist das Gradio-basierte Back-End für Flux. Sie können über einen Browser auch darauf zugreifen.
!fluxGenerieren Sie ein Bild mit dem Flussmodell mit Unterstützung verschiedener Modifikatoren und interaktiven Schaltflächen zur weiteren Anpassung.
Und mit dem Modifikator für den Lebensverfahren oder mit der Schaltfläche "Umschreiben" zum Beispiel:
Modifikatoren :
--wide : generiert ein breites Bild (1920x1024).--tall was erzeugt ein großes Bild (1024x1920).--small : Erzeugt ein kleines Bild (512x512).--fancy : erläutert die Aufforderung, kreativer und detaillierter zu sein. Dies verwendet Chatgpts über API.--seed <number> : Verwenden Sie einen bestimmten Samen für die Bilderzeugung.Verwendung :
!flux A mystical forest with glowing plants --tall
Nach dem Erstellen eines Bildes mit dem !flux -Befehl bietet Soupy interaktive Schaltflächen für die weitere Anpassung:
Remix : Generiert ein neues Bild basierend auf der vorhandenen Eingabeaufforderung mit einem neuen Zufallssamen.Rewrite : erläutert die Aufforderung zur Verbesserung der Kreativität und Details. Dadurch wird die API von Chatgpt ( wie der Modifikator --fancy ) verwendet.Wide : Passt die Bildabmessungen an ein breites Format an.Tall : Passen Sie die Bildabmessungen an ein hohes Format an. !generateGenerieren Sie ein Bild mit Dall-E 3 basierend auf einer Texteingabeaufforderung mit optionalen Modifikatoren. Dies kann bald veraltet sein.
Modifikatoren :
--wide : generiert ein breites Bild (1920x1024).--tall was erzeugt ein großes Bild (1024x1920).Verwendung :
!generate A futuristic city skyline at sunset --wide
!analyzeAnalysieren Sie ein angehängtes Bild basierend auf den angegebenen Anweisungen, z. B. dem Übersetzen von Text in das Bild oder identifizierender Objekte und deren Attribute.
Verwendung :
!analyze Identify all the animals in this image.
!analyze Describe this image forensically.
Fügen Sie ein Bild bei, wenn Sie diesen Befehl verwenden.
!8ballStellen Sie dem Magic 8-Ball eine Frage. Verwendet kein LLM oder eine ML.
Verwendung :
!8ball Will I get an A on my exam?
!whattimeHolen Sie sich und zeigen Sie die aktuelle Zeit in einer bestimmten Stadt an.
Verwendung :
!whattime New York
Dieses Projekt ist unter der MIT -Lizenz lizenziert.
MIT Lizenz Copyright (C) 2024 Sneezeparty
Die Erlaubnis wird hiermit kostenlos an eine Person erteilt, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, um die Software ohne Einschränkung zu behandeln, einschließlich der Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, untermessen, und/oder verkaufen Kopien, die über die Aufgabe von Aufmerksamkeit hindern, und die Aufgaben, die überlegt werden, über die gesenftliche Aufgaben. in allen Kopien oder wesentlichen Teilen der Software.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.
Wenn Sie auf Probleme stoßen oder Fragen haben, können Sie ein Problem im Abschnitt GitHub -Probleme des Repositorys eröffnen.
Kaufen Sie mir einen Kaffee, um dieses Projekt zu unterstützen.