
Rasagpt adalah platform chatbot LLM tanpa kepala pertama yang dibangun di atas Rasa dan Langchain. Ini adalah boilerplate dan implementasi referensi RASA dan Telegram yang menggunakan pustaka LLM seperti Langchain untuk pengindeksan, pengambilan dan injeksi konteks.

Dengan kata -kata mereka sendiri:
Rasa adalah kerangka pembelajaran mesin open source (Python) untuk mengotomatisasi percakapan teks dan berbasis suara: NLU, manajemen dialog, terhubung ke Slack, Facebook, dan banyak lagi- buat chatbot dan asisten suara
Dalam kata -kata saya:
Rasa adalah orang yang sangat populer (berani saya katakan de facto?) Dan cukup untuk menggunakan kerangka kerja chatbot dengan jaringan pipa NLU ML yang sudah usang dan titik awal konseptual untuk kerangka chatbot yang ditata ulang di dunia LLMS.
Rasagpt bekerja di luar kotak. Banyak sakit kepala yang dilaksanakan diselesaikan sehingga Anda tidak perlu melakukannya, termasuk:
Latar belakangnya akrab. Seorang teman mendatangi saya dengan masalah. Saya menjelajahi Google dan GitHub untuk implementasi referensi yang layak dari LLM yang terintegrasi dengan RASA tetapi muncul dengan tangan kosong. Saya pikir ini sebagai kesempatan besar untuk memuaskan rasa ingin tahu saya dan 2 hari kemudian saya memiliki bukti konsep, dan seminggu kemudian inilah yang saya hasilkan.
️ Caveat emptor: Ini jauh dari kode produksi dan penuh dengan injeksi cepat dan kerentanan keamanan umum. Saya hanya berharap seseorang menemukan ini bermanfaat?
Memulai itu mudah, pastikan Anda memenuhi dependensi di bawah ini.
️ ️ ️ ** Perhatian Pengguna Non-Macos: ** Jika Anda menggunakan Linux atau Windows, Anda perlu mengubah nama gambar darikhalosa/rasa-aarch64:3.5.2kerasa/rasa:latestdalam Docker-Compose.yml On Line #64 dan di Action DockerFile On Line #1 di sini
# Get the code
git clone https://github.com/paulpierre/RasaGPT.git
cd RasaGPT
# # Setup the .env file
cp .env-example .env
# Edit your .env file and add all the necessary credentials
make install
# Type "make" to see more options
makehttps://t.me/yourbotnamegit clone https://github.com/paulpierre/RasaGPT.git
cd RasaGPT
cp .env-example .env
# Edit your .env file and all the credentials
Di titik mana pun, jangan ragu untuk mengetikkan make dan itu akan menampilkan daftar opsi, sebagian besar berguna untuk debugging:

Cara termudah untuk memulai adalah menggunakan Makefile di direktori root. Ini akan menginstal dan menjalankan semua layanan untuk Rasagpt dalam urutan yang benar.
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Ini berguna jika Anda ingin fokus pada pengembangan di atas API, Makefile terpisah dibuat untuk ini. Ini akan menciptakan lingkungan virtual lokal untuk Anda.
# Assuming you are already in the RasaGPT directory
cd app/api
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Demikian pula, masukkan make daftar perintah lengkap

Instalasi harus otomatis harus terlihat seperti ini:

Log Instalasi Lengkap: https://app.warp.dev/block/vflua6eue29epk8evvw8kd
Proses instalasi untuk Docker mengambil langkah -langkah berikut di level tinggi
.env tersediapgvectorseed.pyAnda dapat mulai mengobrol dengan bot Anda dengan mengunjungi https://t.me/yourbotsname

Anda dapat melihat semua log dengan mengunjungi https: // localhost: 9999/yang akan menampilkan log real-time dari semua wadah Docker

Lihat API Endpoint Docs dengan mengunjungi https: // localhost: 8888/docs
Di halaman ini Anda dapat membuat dan memperbarui entitas, serta mengunggah dokumen ke basis pengetahuan.

Bot hanyalah bukti konsep dan belum dioptimalkan untuk pengambilan. Saat ini menggunakan 1000 chunking panjang karakter untuk pengindeksan dan jarak Euclidean dasar untuk pengambilan dan kualitas dipukul atau dilewatkan.
Anda dapat melihat contoh hit dan miss dengan bot di file results.md. Secara keseluruhan saya memperkirakan optimasi indeks dan perubahan konfigurasi LLM dapat meningkatkan kualitas output lebih dari 70%.
Klik untuk melihat hasil tanya jawab dari data demo di results.md
API sisanya langsung, silakan kunjungi dokumentasi http: // localhost: 8888/docs
Entitas di bawah ini memiliki operasi dasar dan mengembalikan JSON
Ini dapat dianggap sebagai perusahaan yang merupakan klien Anda di dunia SaaS / multi-tenant. Secara default daftar organisasi dummy telah disediakan

[
{
" id " : 1,
" uuid " : " d2a642e6-c81a-4a43-83e2-22cee3562452 " ,
" display_name " : " Pepe Corp. " ,
" namespace " : " pepe " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:42:45.933976 " ,
" updated_at " : " 2023-05-05T10:42:45.933979 "
},
{
" id " : 2,
" uuid " : " 7d574f88-6c0b-4c1f-9368-367956b0e90f " ,
" display_name " : " Umbrella Corp " ,
" namespace " : " acme " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:03.555484 " ,
" updated_at " : " 2023-05-05T10:43:03.555488 "
},
{
" id " : 3,
" uuid " : " 65105a15-2ef0-4898-ac7a-8eafee0b283d " ,
" display_name " : " Cyberdine Systems " ,
" namespace " : " cyberdine " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:04.175424 " ,
" updated_at " : " 2023-05-05T10:43:04.175428 "
},
{
" id " : 4,
" uuid " : " b7fb966d-7845-4581-a537-818da62645b5 " ,
" display_name " : " Bluth Companies " ,
" namespace " : " bluth " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:04.697801 " ,
" updated_at " : " 2023-05-05T10:43:04.697804 "
},
{
" id " : 5,
" uuid " : " 9283d017-b24b-4ecd-bf35-808b45e258cf " ,
" display_name " : " Evil Corp " ,
" namespace " : " evil " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:05.102546 " ,
" updated_at " : " 2023-05-05T10:43:05.102549 "
}
]Ini dapat dianggap sebagai produk yang menjadi milik perusahaan. Anda dapat melihat daftar proyek yang menjadi milik organisasi seperti itu:

[
{
" id " : 1,
" documents " : [
{
" id " : 1,
" uuid " : " 92604623-e37c-4935-bf08-0e9efa8b62f7 " ,
" display_name " : " project-pepetamine.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 44a4b60b-9280-4b21-a676-00612be9aa87 " ,
" display_name " : " Pepetamine " ,
" created_at " : " 2023-05-05T10:42:46.060930 " ,
" updated_at " : " 2023-05-05T10:42:46.060934 "
},
{
" id " : 2,
" documents " : [
{
" id " : 2,
" uuid " : " b408595a-3426-4011-9b9b-8e260b244f74 " ,
" display_name " : " project-frogonil.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 5ba6b812-de37-451d-83a3-8ccccadabd69 " ,
" display_name " : " Frogonil " ,
" created_at " : " 2023-05-05T10:42:48.043936 " ,
" updated_at " : " 2023-05-05T10:42:48.043940 "
},
{
" id " : 3,
" documents " : [
{
" id " : 3,
" uuid " : " b99d373a-3317-4699-a89e-90897ba00db6 " ,
" display_name " : " project-kekzal.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 1be4360c-f06e-4494-bf20-e7c73a56f003 " ,
" display_name " : " Kekzal " ,
" created_at " : " 2023-05-05T10:42:49.092675 " ,
" updated_at " : " 2023-05-05T10:42:49.092678 "
},
{
" id " : 4,
" documents " : [
{
" id " : 4,
" uuid " : " 94da307b-5993-4ddd-a852-3d8c12f95f3f " ,
" display_name " : " project-memetrex.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 1fd7e772-365c-451b-a7eb-4d529b0927f0 " ,
" display_name " : " Memetrex " ,
" created_at " : " 2023-05-05T10:42:50.184817 " ,
" updated_at " : " 2023-05-05T10:42:50.184821 "
},
{
" id " : 5,
" documents " : [
{
" id " : 5,
" uuid " : " 6deff180-3e3e-4b09-ae5a-6502d031914a " ,
" display_name " : " project-pepetrak.md " ,
" node_count " : 4
}
],
" document_count " : 1,
" uuid " : " a389eb58-b504-48b4-9bc3-d3c93d2fbeaa " ,
" display_name " : " PepeTrak " ,
" created_at " : " 2023-05-05T10:42:51.293352 " ,
" updated_at " : " 2023-05-05T10:42:51.293355 "
},
{
" id " : 6,
" documents " : [
{
" id " : 6,
" uuid " : " 2e3c2155-cafa-4c6b-b7cc-02bb5156715b " ,
" display_name " : " project-memegen.md " ,
" node_count " : 5
}
],
" document_count " : 1,
" uuid " : " cec4154f-5d73-41a5-a764-eaf62fc3db2c " ,
" display_name " : " MemeGen " ,
" created_at " : " 2023-05-05T10:42:52.562037 " ,
" updated_at " : " 2023-05-05T10:42:52.562040 "
},
{
" id " : 7,
" documents " : [
{
" id " : 7,
" uuid " : " baabcb6f-e14c-4d59-a019-ce29973b9f5c " ,
" display_name " : " project-neurokek.md " ,
" node_count " : 5
}
],
" document_count " : 1,
" uuid " : " 4a1a0542-e314-4ae7-9961-720c2d092f04 " ,
" display_name " : " Neuro-kek " ,
" created_at " : " 2023-05-05T10:42:53.689537 " ,
" updated_at " : " 2023-05-05T10:42:53.689539 "
},
{
" id " : 8,
" documents " : [
{
" id " : 8,
" uuid " : " 5be007ec-5c89-4bc4-8bfd-448a3659c03c " ,
" display_name " : " org-about_the_company.md " ,
" node_count " : 5
},
{
" id " : 9,
" uuid " : " c2b3fb39-18c0-4f3e-9c21-749b86942cba " ,
" display_name " : " org-board_of_directors.md " ,
" node_count " : 3
},
{
" id " : 10,
" uuid " : " 41aa81a9-13a9-4527-a439-c2ac0215593f " ,
" display_name " : " org-company_story.md " ,
" node_count " : 4
},
{
" id " : 11,
" uuid " : " 91c59eb8-8c05-4f1f-b09d-fcd9b44b5a20 " ,
" display_name " : " org-corporate_philosophy.md " ,
" node_count " : 4
},
{
" id " : 12,
" uuid " : " 631fc3a9-7f5f-4415-8283-78ff582be483 " ,
" display_name " : " org-customer_support.md " ,
" node_count " : 3
},
{
" id " : 13,
" uuid " : " d4c3d3db-6f24-433e-b2aa-52a70a0af976 " ,
" display_name " : " org-earnings_fy2023.md " ,
" node_count " : 5
},
{
" id " : 14,
" uuid " : " 08dd478b-414b-46c4-95c0-4d96e2089e90 " ,
" display_name " : " org-management_team.md " ,
" node_count " : 3
}
],
" document_count " : 7,
" uuid " : " 1d2849b4-2715-4dcf-aa68-090a221942ba " ,
" display_name " : " Pepe Corp. (company) " ,
" created_at " : " 2023-05-05T10:42:55.258902 " ,
" updated_at " : " 2023-05-05T10:42:55.258904 "
}
]Ini dapat dianggap sebagai artefak yang terkait dengan suatu produk, seperti halaman FAQ atau PDF dengan pendapatan laporan keuangan. Anda dapat melihat semua dokumen yang terkait dengan proyek organisasi seperti SO:

{
" id " : 1,
" uuid " : " 44a4b60b-9280-4b21-a676-00612be9aa87 " ,
" organization " : {
" id " : 1,
" uuid " : " d2a642e6-c81a-4a43-83e2-22cee3562452 " ,
" display_name " : " Pepe Corp. " ,
" bot_url " : null,
" status " : 2,
" created_at " : " 2023-05-05T10:42:45.933976 " ,
" updated_at " : " 2023-05-05T10:42:45.933979 " ,
" namespace " : " pepe "
},
" document_count " : 1,
" documents " : [
{
" id " : 1,
" uuid " : " 92604623-e37c-4935-bf08-0e9efa8b62f7 " ,
" organization_id " : 1,
" project_id " : 1,
" display_name " : " project-pepetamine.md " ,
" url " : " " ,
"data": "# PepetaminennProduct Name: PepetaminennPurpose: Increases cognitive focus just like the Limitless movienn**How to Use**nnPepetamine is available in the form of rare Pepe-coated tablets. The recommended dosage is one tablet per day, taken orally with a glass of water, preferably while browsing your favorite meme forum for maximum cognitive enhancement. For optimal results, take Pepetamine 30 minutes before engaging in mentally demanding tasks, such as decoding ancient Pepe hieroglyphics or creating your next viral meme masterpiece.nn**Side Effects**nnSome potential side effects of Pepetamine may include:nn1. Uncontrollable laughter and a sudden appreciation for dank memesn2. An inexplicable desire to collect rare Pepesn3. Enhanced meme creation skills, potentially leading to internet famen4. Temporary green skin pigmentation, resembling the legendary Pepe himselfn5. Spontaneously speaking in "feels good man" languagennWhile most side effects are generally harmless, consult your memologist if side effects persist or become bothersome.nn**Precautions**nnBefore taking Pepetamine, please consider the following precautions:nn1. Do not use Pepetamine if you have a known allergy to rare Pepes or dank memes.n2. Pepetamine may not be suitable for individuals with a history of humor deficiency or meme intolerance.n3. Exercise caution when driving or operating heavy machinery, as Pepetamine may cause sudden fits of laughter or intense meme ideation.nn**Interactions**nnPepetamine may interact with other substances, including:nn1. Normie supplements: Combining Pepetamine with normie supplements may result in meme conflicts and a decreased sense of humor.n2. Caffeine: The combination of Pepetamine and caffeine may cause an overload of energy, resulting in hyperactive meme creation and potential internet overload.nnConsult your memologist if you are taking any other medications or substances to ensure compatibility with Pepetamine.nn**Overdose**nnIn case of an overdose, symptoms may include:nn1. Uncontrollable meme creationn2. Delusions of grandeur as the ultimate meme lordn3. Time warps into the world of PepennIf you suspect an overdose, contact your local meme emergency service or visit the nearest meme treatment facility. Remember, the key to enjoying Pepetamine is to use it responsibly, and always keep in mind the wise words of our legendary Pepe: "Feels good man."",
" hash " : " fdee6da2b5441080dd78e7850d3d2e1403bae71b9e0526b9dcae4c0782d95a78 " ,
" version " : 1,
" status " : 2,
" created_at " : " 2023-05-05T10:42:46.755428 " ,
" updated_at " : " 2023-05-05T10:42:46.755431 "
}
],
" display_name " : " Pepetamine " ,
" created_at " : " 2023-05-05T10:42:46.060930 " ,
" updated_at " : " 2023-05-05T10:42:46.060934 "
}Meskipun ini tidak terpapar dalam API, sebuah node adalah sepotong dokumen yang dihasilkan oleh embeddings. Node digunakan untuk pencarian pengambilan serta injeksi konteks. Sebuah simpul milik dokumen.
Seorang pengguna mewakili orang yang berbicara dengan bot. Pengguna tidak perlu milik org atau produk, tetapi hubungan ini ditangkap dalam obrolan di bawah ini.
Tidak diekspos melalui API, tetapi ini merupakan pertanyaan dan jawaban antara pengguna dan bot. Masing -masing objek ini dapat diidentifikasi secara fleksibel oleh session_id yang dihasilkan secara otomatis. Sesi obrolan berisi metadata kaya yang dapat digunakan untuk pelatihan dan optimasi. Obrolan melalui titik akhir /chat sebenarnya terkait dengan organisasi (untuk tujuan keamanan multi-tenant)
/webhooks/{channel}/webhookFallbackClassifierrasa-credentials melalui app/rasa-credentials/main.pyaction_gpt_fallback yang akan memicu server tindakan kamiout_of_scopeaction_gpt_fallbackActionGPTFallback . name Metode Mengembalikan Tindakan yang Kami Definisikan Untuk Maksud Kami Di Atasrasa train . Ini dilakukan secara otomatis untuk Anda saat Anda menjalankan make installrasa run setelah pelatihanrasa run actions rasa-credentials menangani proses ini untuk Anda. Ngrok berjalan sebagai layanan, begitu siap rasa-credentials memanggil NGROK API lokal untuk mengambil URL terowongan dan memperbarui file credentials.yml dan memulai kembali Rasa untuk Andaactions.py pgvector adalah plugin untuk postgres dan secara otomatis diinstal memungkinkan Anda untuk menyimpan dan menghitung tipe data vektor. Kami memiliki implementasi kami sendiri karena kelas pgvektor Langchain tidak fleksibel untuk beradaptasi dengan skema kami dan kami menginginkan fleksibilitas.
/docker-entry-initdb.d Container dijalankan jika database belum diinisialisasi. Di Postgres DockerFile kami menyalin create_db.sh yang membuat DB dan pengguna untuk database kamimodels di Makefile, kami menjalankan model.py dalam wadah API yang membuat tabel dari model.enable_vector memungkinkan ekstensi pgvektor dalam database index.jsonGPTSimpleVectorIndex dasar untuk menemukan data yang relevan dan menyuntikkannya ke dalam prompt.out_of_scope , berdasarkan aturan.yml itu akan memicu tindakan action_gpt_fallbackActionGPTFallback kemudian akan menghubungi server API FASTAPISecara umum, periksa log wadah Docker Anda dengan hanya pergi ke http: // localhost: 9999/
Selalu periksa bahwa webhook Anda dengan Ngrok dan Telegram Match. Lakukan ini dengan
curl -sS " https://api.telegram.org/bot<your-bot-secret-token>/getWebhookInfo " | json_pp.. harus mengembalikan ini:
{
" ok " : true,
" result " : {
" url " : " https://b280-04-115-40-112.ngrok-free.app/webhooks/telegram/webhook " ,
" has_custom_certificate " : false,
" pending_update_count " : 0,
" max_connections " : 40,
" ip_address " : " 1.2.3.4 "
}
} .. yang seharusnya cocok dengan URL dalam file credentials.yml Anda.

Sepertinya itu cocok. Jika tidak, restart semuanya dengan menjalankan:
make restart@paulpierre `
Selamat, semua pangkalan Anda adalah milik kami! kthxbye
Hak Cipta (C) 2023 Paul Pierre. Izin dengan ini diberikan, gratis, kepada siapa pun yang mendapatkan salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menangani perangkat lunak tanpa pembatasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , menerbitkan, mendistribusikan, sublisense, dan/atau menjual salinan perangkat lunak, dan untuk mengizinkan orang yang dilengkapi dengan perangkat lunak untuk melakukannya, tunduk pada ketentuan berikut: Pemberitahuan Hak Cipta di atas dan Pemberitahuan Izin ini harus dimasukkan 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 non-pelanggaran. 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.