
Rasagpt est la première plate-forme de chatbot LLM sans tête construite sur Rasa et Langchain. Il s'agit de la plaqueau et d'une implémentation de référence de Rasa et Telegram en utilisant une bibliothèque LLM comme Langchain pour l'indexation, la récupération et l'injection de contexte.

Dans leurs propres mots:
Rasa est un cadre d'apprentissage machine open source (Python) pour automatiser les conversations textuelles et vocales: NLU, gestion de dialogue, connexion à Slack, Facebook et plus - Créer des chatbots et des assistants vocaux
Dans mes mots:
Rasa est un très populaire (oserais-je dire de facto?) Et assez facile à utiliser le cadre de chatbot avec des pipelines NLU ML intégrés qui sont obsolètes et un point de départ conceptuel pour un cadre de chatbot repensé dans un monde de LLM.
Rasagpt fonctionne hors de la boîte. Une grande partie de la mise en œuvre des maux de tête a été réglée afin que vous n'ayez pas à le faire, notamment:
La trame de fond est familière. Un ami est venu me voir avec un problème. J'ai parcouru Google et Github pour une implémentation de référence décente de LLM intégrée à Rasa mais je suis venu les mains vides. J'ai pensé que c'était une excellente occasion de rassasier ma curiosité et 2 jours plus tard, j'ai eu une preuve de concept, et une semaine plus tard, c'est ce que j'ai trouvé.
️ Caveat Emptor: Ceci est loin du code de production et monnaie avec une injection rapide et des vulnérabilités générales de sécurité. J'espère juste que quelqu'un trouvera cela utile?
Le démarrage est facile, assurez-vous simplement de répondre aux dépendances ci-dessous.
️ ️ ️ ** ATTENTION UNES UTILISATIONS NON-MACOS: ** Si vous utilisez Linux ou Windows, vous devrez modifier le nom de l'image dekhalosa/rasa-aarch64:3.5.2versrasa/rasa:latestdans Docker-Compose.yml en ligne # 64 et dans les actions Dockerfile sur la ligne n ° 1 ici
# 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
À tout moment, n'hésitez pas à taper make et il affichera la liste des options, principalement utile pour le débogage:

La façon la plus simple de commencer est d'utiliser le Makefile dans le répertoire racine. Il installera et exécutera tous les services de Rasagpt dans le bon ordre.
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Ceci est utile si vous souhaitez vous concentrer sur le développement de l'API, un Makefile séparé a été fait pour cela. Cela créera un environnement virtuel local pour vous.
# 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 De même, entrez make pour voir une liste complète des commandes

L'installation doit être automatisée devrait ressembler à ceci:

Journal d'installation complet: https://app.warp.dev/block/vflua6eue29epk8evvw8kd
Le processus d'installation de Docker prend les étapes suivantes à un niveau élevé
.envpgvectorseed.pyVous pouvez commencer à discuter avec votre bot en visitant https://t.me/yourbotsname

Vous pouvez afficher tout le journal en visitant https: // localhost: 9999 / qui affichera des journaux en temps réel de tous les conteneurs Docker

Consultez les documents de point de terminaison de l'API en visitant https: // localhost: 8888 / docs
Dans cette page, vous pouvez créer et mettre à jour des entités, ainsi que télécharger des documents sur la base de connaissances.

Le bot est juste une preuve de concept et n'a pas été optimisé pour la récupération. Il utilise actuellement 1000 caractères de la longueur de la longueur pour l'indexation et la distance euclidienne de base pour la récupération et la qualité est frappée ou manquée.
Vous pouvez afficher l'exemple de coups et manque avec le bot dans le fichier de résultat.md. Dans l'ensemble, je estime que l'optimisation de l'indice et les changements de configuration LLM peuvent augmenter la qualité de la sortie de plus de 70%.
Cliquez pour voir les résultats des questions et réponses des données de démonstration dans les résultats.md
L'API REST est simple, veuillez visiter la documentation http: // localhost: 8888 / docs
Les entités ci-dessous ont des opérations CRUD de base et renvoient JSON
Cela peut être considéré comme une entreprise qui est votre client dans un monde SaaS / multi-locataire. Par défaut, une liste d'organisations factices a été fournie

[
{
" 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 "
}
]Cela peut être considéré comme un produit qui appartient à une entreprise. Vous pouvez voir la liste des projets qui appartiennent à des organisations comme SO:

[
{
" 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 "
}
]Cela peut être considéré comme un artefact lié à un produit, comme une page FAQ ou un PDF avec des revenus financiers. Vous pouvez voir tous les documents associés au projet d'une organisation comme 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 "
}Bien que cela ne soit pas exposé dans l'API, un nœud est un morceau d'un document pour lequel les incorporations sont générées. Les nœuds sont utilisés pour la recherche de récupération ainsi que pour l'injection de contexte. Un nœud appartient à un document.
Un utilisateur représente la personne qui parle à un bot. Les utilisateurs n'appartiennent pas nécessairement à une organisation ou un produit, mais cette relation est capturée dans la discussion ci-dessous.
Non exposé via l'API, mais cela représente une question et une réponse entre l'utilisateur et un bot. Chacun de ces objets peut être identifié de manière flexible par une session_id qui est générée automatiquement. Les séances de chat contiennent des métadonnées riches qui peuvent être utilisées pour la formation et l'optimisation. Les chattessions via le point de terminaison /chat sont en fait associées à l'organisation (à des fins de sécurité multi-locataires)
/webhooks/{channel}/webhookFallbackClassifierrasa-credentials via l'APP / RASA-CRÉDENTS / MAIN.PYaction_gpt_fallback qui déclenchera notre serveur d'actionsout_of_scopeaction_gpt_fallbackActionGPTFallback . Le name de la méthode renvoie l'action que nous avons définie pour notre intention ci-dessusrasa train . Cela est fait automatiquement pour vous lorsque vous exécutez make installrasa run après l'entraînementrasa run actions rasa-credentials prend soin de ce processus pour vous. Ngrok s'exécute en tant que service, une fois qu'il est prêt rasa-credentials appelle l'API NGROK locale pour récupérer l'URL du tunnel et met à jour le fichier credentials.yml et redémarrer Rasa pour vousactions.py pgvector est un plugin pour Postgres et installé automatiquement, permettant à votre stockage et à calculer les types de données vectorielles. Nous avons notre propre implémentation car la classe Langchain PGVector n'est pas flexible pour s'adapter à notre schéma et nous voulons la flexibilité.
/docker-entry-initdb.d du conteneur sont exécutés si la base de données n'a pas été initialisée. Dans le Postgres dockerfile, nous copie create_db.sh qui crée la base de données et l'utilisateur de notre base de donnéesmodels dans le MakeFile, nous exécutons les modèles.py dans le conteneur API qui crée les tables à partir des modèles.enable_vector permet l'extension PGVector dans la base de données index.jsonGPTSimpleVectorIndex de base pour trouver les données pertinentes et l'injecte dans une invite.out_of_scope , basé sur des règles.yml, il déclenchera l'action action_gpt_fallbackActionGPTFallback appellera alors le serveur API FastAPIEn général, vérifiez vos journaux de conteneurs Docker en allant simplement à http: // localhost: 9999 /
Vérifiez toujours que vos webhooks avec Ngrok et Telegram correspondent. Faites simplement ça par
curl -sS " https://api.telegram.org/bot<your-bot-secret-token>/getWebhookInfo " | json_pp.. devrait retourner ceci:
{
" 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 "
}
} .. qui devrait correspondre à l'URL dans votre fichier credentials.yml ou visitez l'administrateur ngrok ui http: // localhost: 4040 / status

On dirait que c'est un match. Sinon, redémarrez tout en fonctionnant:
make restart@paulpierre `
Félicitations, toute votre base nous appartient! kthxbye
Copyright (C) 2023 Paul Pierre. L'autorisation est accordée gratuitement par la présente à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le «logiciel»), pour traiter dans le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copier, de modifier, de fusionner , publier, distribuer, sous-licencier et / ou vendre des copies du logiciel, et pour permettre aux personnes auxquelles le logiciel est fourni pour le faire, sous réserve des conditions suivantes: l'avis de droit d'auteur ci-dessus et le présent avis d'autorisation seront inclus dans toutes les copies ou des parties substantielles du logiciel. Le logiciel est fourni «tel quel», sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres transactions dans le LOGICIEL.