Jangan ragu untuk membelikan saya kopi untuk membantu mendukung proyek ini.
Soupy adalah chatbot untuk perselisihan yang dapat menghasilkan gambar dengan generator gambar lokal (fluks) dan/atau dengan dall-e 3. Untuk mengobrol, menggunakan kombinasi JSONS, chatgpt, dan mesin pencari lokal untuk terlibat dalam percakapan dengan penggunanya. Ini akan mengindeks pesan obrolan pengguna Anda, dan menggunakan pesan -pesan itu untuk membuat profil pengguna. Ini juga akan mengindeks setiap saluran di server Anda yang memiliki akses.
Ada beberapa versi Soupy.
Soupy membutuhkan akses API openai ke model chatgpt. Oleh karena itu, bagian obrolan Soupy menggunakan uang sungguhan . Generasi gambar Dall-E 3 juga. Anda dapat melewati generasi Dall-E 3 dan hanya menggunakan fluks secara lokal.
Pengaturan awal, di mana riwayat saluran dari server Anda akan diunduh dan diindeks dan semua pengguna di server Anda akan memiliki profil yang dibuat dari mereka membutuhkan biaya melalui API ChatGPT. Suatu hari saya juga akan mendukung LLM lokal, tetapi belum.
Agar fluks berfungsi, saya sangat menyarankan Anda mulai di sini, dengan repositori fluks resmi. Tetapi begitu Anda memiliki fluks, Anda dapat menggunakan soupy-gradio.py , termasuk dalam repositori ini.
!flux (model gambar lokal) , !generate (Dall-E 3) , !analyze (chatgpt), dan !transform (chatgpt) untuk melakukan berbagai tindakan keren.BEHAVIOUR di .env . Tapi berhati -hatilah dengan cara Anda mengubahnya. Kata-kata itu penting untuk menjaga pekat di jalur. Sebelum menyiapkan Soup, pastikan Anda memiliki yang berikut yang diinstal pada sistem Anda:
Mulailah dengan mengkloning repositori sup ke mesin lokal Anda:
git clone https://github.com/sneezeparty/soupy.git
cd soupy
Disarankan untuk menggunakan lingkungan virtual untuk mengelola dependensi.
python -m venv soupy
Aktifkan lingkungan virtual:
Di MacOS dan Linux:
source soupy/bin/activate
Di Windows:
soupyScriptsactivate
Pasang paket Python yang diperlukan menggunakan pip :
pip install -r requirements.txt
Buat file .env di direktori root proyek dan isi dengan variabel lingkungan yang diperlukan:
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."
Harap dicatat bahwa Soupy akan memiliki akses ke semua saluran yang dapat diaksesnya. Tetapi itu akan menanggapi semua pesan di saluran yang ditentukan di atas. Kalau tidak, itu hanya akan merespons secara acak, atau ketika @tagged.
Di dalam skrip, cari "/absolute/directory/of/your/script/" dan ganti ini dengan direktori absolut lokasi skrip Anda.
Apache Solr digunakan untuk mengindeks dan mencari pesan dan profil pengguna. Ikuti langkah -langkah ini untuk menginstal dan mengonfigurasi Solr untuk Soupy.
Unduh Solr : Kunjungi situs web Apache Solr dan unduh rilis stabil terbaru. Anda juga dapat menggunakan beberapa manajer paket - lihat informasi distro Anda.
Ekstrak paket
Instal Solr sebagai Layanan : Ikuti dokumentasi pada langkah -langkah yang tepat untuk proses ini. Tapi itu tidak sulit. Kamu bisa.
Verifikasi Instalasi :
Buka browser Anda dan navigasikan ke http://localhost:8983/solr untuk mengakses antarmuka admin solr.
Soupy membutuhkan inti SOLR tunggal dengan bidang spesifik untuk mengindeks profil pengguna secara efektif.
bin/solr create -c soupy
Tambahkan bidang yang diperlukan ke inti soupy untuk menyimpan profil pengguna.
Access Solr Admin Interface :
Arahkan ke http://localhost:8983/solr dan pilih inti soupy .
Tentukan bidang :
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
}
}'
atau yang ini
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
}
}'
Tambahkan bidang yang diperlukan ke inti soupy untuk menyimpan profil pengguna dan informasi saluran.
<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"/>
Melakukan perubahan :
Setelah menambahkan semua bidang, lakukan perubahan untuk membuatnya efektif.
Setelah menyelesaikan langkah instalasi dan konfigurasi, Anda dapat memulai bot menggunakan perintah berikut. Lari pertama akan memakan waktu, tergantung pada aktivitas di server Anda dan jumlah pengguna. Butuh beberapa menit, atau berjam -jam. Output terminal akan memberi tahu Anda apa yang sedang terjadi.
python soupy-solr.py
ATAU
python soupy-flux.py
DAN
python gradio-soupy.py
Pastikan Anda berada di lingkungan virtual dan direktori yang benar tempat soupy berada.
gradio-soupy.py adalah back-end berbasis gradio untuk fluks. Anda juga dapat mengakses ini melalui browser.
!fluxHasilkan gambar menggunakan model fluks dengan dukungan untuk berbagai pengubah dan tombol interaktif untuk kustomisasi lebih lanjut.
Dan dengan pengubah -Fancy, atau dengan tombol "tulis ulang" misalnya:
Pengubah :
--wide : Menghasilkan gambar yang luas (1920x1024).--tall : menghasilkan gambar tinggi (1024x1920).--small : menghasilkan gambar kecil (512x512).--fancy : Menguraikan prompt untuk menjadi lebih kreatif dan terperinci. Ini menggunakan chatgpt melalui API.--seed <number> : Gunakan benih tertentu untuk pembuatan gambar.Penggunaan :
!flux A mystical forest with glowing plants --tall
Setelah menghasilkan gambar dengan perintah !flux , Soupy menyediakan tombol interaktif untuk kustomisasi lebih lanjut:
Remix : Menghasilkan gambar baru berdasarkan prompt yang ada, dengan benih acak baru.Rewrite : menguraikan prompt untuk meningkatkan kreativitas dan detail. Ini menggunakan API ChatGPT ( sama dengan pengubah --fancy ).Wide : Menyesuaikan dimensi gambar ke format yang luas.Tall : Menyesuaikan dimensi gambar dengan format tinggi. !generateHasilkan gambar menggunakan Dall-E 3 berdasarkan prompt teks dengan pengubah opsional. Ini mungkin akan segera ditinggalkan.
Pengubah :
--wide : Menghasilkan gambar yang luas (1920x1024).--tall : menghasilkan gambar tinggi (1024x1920).Penggunaan :
!generate A futuristic city skyline at sunset --wide
!analyzeMenganalisis gambar terlampir berdasarkan instruksi yang disediakan, seperti menerjemahkan teks dalam gambar atau mengidentifikasi objek dan atributnya.
Penggunaan :
!analyze Identify all the animals in this image.
!analyze Describe this image forensically.
Lampirkan gambar saat menggunakan perintah ini.
!8ballAjukan pertanyaan Magic 8-Ball. Tidak menggunakan LLM atau ML apa pun.
Penggunaan :
!8ball Will I get an A on my exam?
!whattimeAmbil dan tampilkan waktu saat ini di kota tertentu.
Penggunaan :
!whattime New York
Proyek ini dilisensikan di bawah lisensi MIT.
Lisensi MIT Hak Cipta (C) 2024 SNEEZEPARTY
Izin dengan ini diberikan, gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menangani perangkat lunak tanpa batasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan, menerbitkan, mendistribusikan, menyublisikannya, dan/atau menjual salinan di atas, dan mengizinkan orang -orang yang disediakan oleh perangkat lunak yang disediakan oleh perangkat lunak yang disediakan oleh perangkat lunak yang disediakan oleh perangkat lunak yang disediakan oleh perangkat lunak yang disediakan oleh perangkat lunak yang disediakan oleh Softy. di semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.
Jika Anda menghadapi masalah apa pun atau memiliki pertanyaan, jangan ragu untuk membuka masalah di bagian masalah GitHub di repositori.
Beli saya kopi untuk membantu mendukung proyek ini.