
Rasagpt es la primera plataforma LLM Chatbot sin cabeza construida sobre Rasa y Langchain. Es la placa y una implementación de referencia de RASA y Telegram que utiliza una biblioteca LLM como Langchain para inyección de indexación, recuperación e contexto.

En sus propias palabras:
Rasa es un marco de aprendizaje automático de código abierto (Python) para automatizar conversaciones basadas en texto y voz: NLU, gestión del diálogo, conectarse a Slack, Facebook y más: crear chatbots y asistentes de voz
En mis palabras:
Rasa es un marco de chatbot muy popular (¿me atrevo a decir de facto?)
Rasagpt funciona fuera de la caja. Gran parte de los dolores de cabeza implementados se resolvieron para que no tenga que hacerlo, incluyendo:
La historia de fondo es familiar. Un amigo vino a mí con un problema. Busqué en Google y Github para una implementación de referencia decente de LLM integrada con Rasa, pero apareció con las manos vacías. Pensé que esta era una gran oportunidad para saciar mi curiosidad y 2 días después tuve una prueba de concepto, y una semana después, esto es lo que se me ocurrió.
️ Advertencia de vacío: esto está lejos del código de producción y plazo de inyección rápida y vulnerabilidades de seguridad generales. Solo espero que alguien encuentre esto útil.
Comenzar es fácil, solo asegúrese de cumplir con las dependencias a continuación.
️ ️ ️ ** ATENCIÓN USUARIOS DE LA ATENCIÓN: ** Si está utilizando Linux o Windows, deberá cambiar el nombre de la imagen dekhalosa/rasa-aarch64:3.5.2arasa/rasa:latesten Docker-Compose.yml en línea #64 y en las acciones Dockerfile en la línea #1 aquí
# 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
En cualquier momento, siéntase libre de make simplemente y mostrará la lista de opciones, en su mayoría útil para la depuración:

La forma más fácil de comenzar es usar el Makefile en el directorio raíz. Instalará y ejecutará todos los servicios para Rasagpt en el orden correcto.
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Esto es útil si desea concentrarse en desarrollar sobre la API, se hizo un Makefile separado para esto. Esto creará un entorno virtual local para usted.
# 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 Del mismo modo, ingrese a make una lista completa de comandos

La instalación debe ser automatizada debe verse así:

Registro de instalación completo: https://app.warp.dev/block/vflua6eue29epk8evvw8kd
El proceso de instalación para Docker toma los siguientes pasos a un alto nivel
.env disponiblepgvectorseed.pyPuedes comenzar a chatear con tu bot visitando https://t.me/yourbotsname

Puede ver todo el registro visitando https: // localhost: 9999/que mostrará registros en tiempo real de todos los contenedores Docker

Ver los documentos de punto final de la API visitando https: // localhost: 8888/documentos
En esta página, puede crear y actualizar entidades, así como cargar documentos a la base de conocimiento.

El bot es solo una prueba de concepto y no ha sido optimizado para la recuperación. Actualmente utiliza la fragmentación de longitud de caracteres de 1000 para la indexación y la distancia euclidiana básica para la recuperación y la calidad es impredecible.
Puede ver los éxitos y fallas de ejemplo con el BOT en el archivo Results.md. En general, estimo la optimización del índice y los cambios de configuración de LLM pueden aumentar la calidad de la salida en más del 70%.
Haga clic para ver los resultados de preguntas y respuestas de los datos de demostración en Results.md
La API REST es sencilla, visite la documentación http: // localhost: 8888/docs
Las entidades a continuación tienen operaciones básicas de crud y return json
Esto se puede considerar como una empresa que es su cliente en un mundo SaaS / Multi -tenant. Por defecto, se ha proporcionado una lista de organizaciones ficticias

[
{
" 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 "
}
]Esto puede considerarse como un producto que pertenece a una empresa. Puede ver la lista de proyectos que pertenecen a organizaciones como 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 "
}
]Esto puede considerarse como un artefacto relacionado con un producto, como una página de preguntas frecuentes o un PDF con ganancias de estados financieros. Puede ver todos los documentos asociados con el proyecto de una organización como así:

{
" 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 "
}Aunque esto no está expuesto en la API, un nodo es una parte de un documento para el que se generan los incrustaciones. Los nodos se usan para la búsqueda de recuperación, así como la inyección de contexto. Un nodo pertenece a un documento.
Un usuario representa a la persona que habla con un bot. Los usuarios no necesariamente pertenecen a una organización o producto, pero esta relación se captura en la chatsession a continuación.
No expuesto a través de API, pero esto representa una pregunta y respuesta entre el usuario y un bot. Cada uno de estos objetos puede identificarse de manera flexible por un session_id que se genera automáticamente. Las sesiones de chat contienen metadatos ricos que se pueden usar para el entrenamiento y la optimización. Los chatsessions a través del punto final /chat están asociadas de hecho con la organización (para fines de seguridad de múltiples inquilinos)
/webhooks/{channel}/webhookFallbackClassifierrasa-credentials del servicio auxiliar a través de APP/Rasa-Credentials/Main.pyaction_gpt_fallback que activará nuestro servidor de accionesout_of_scopeaction_gpt_fallbackActionGPTFallback . El name del método devuelve la acción que definimos para nuestra intención anteriorrasa train . Esto se hace automáticamente para usted cuando ejecuta make installrasa run después del entrenamientorasa run actions rasa-credentials se encarga de este proceso para usted. NGROK se ejecuta como un servicio, una vez que está listo rasa-credentials llama a la API NGROK local para recuperar la URL del túnel y actualiza el archivo credentials.yml y reinicia RASA para ustedactions.py pgvector es un complemento para Postgres y instalado automáticamente, habilitando que almacene y calcule los tipos de datos vectoriales. Tenemos nuestra propia implementación porque la clase Langchain PGVector no es flexible para adaptarse a nuestro esquema y queremos flexibilidad.
/docker-entry-initdb.d se ejecuta si la base de datos no se ha inicializado. En Postgres DockerFile copiamos create_db.sh que crea el DB y el usuario para nuestra base de datosmodels en MakeFile, ejecutamos el Models.py en el contenedor API que crea las tablas de los modelos.enable_vector habilita la extensión PGVector en la base de datos index.jsonGPTSimpleVectorIndex básico para encontrar los datos relevantes y los inyecta en un aviso.out_of_scope , según reglas.yml, activará la acción action_gpt_fallbackActionGPTFallback luego llamará al servidor API FastAPIEn general, consulte sus registros de contenedores Docker simplemente yendo a http: // localhost: 9999/
Siempre verifique que sus webhooks con Ngrok y Telegram coincidan. Simplemente haz esto por
curl -sS " https://api.telegram.org/bot<your-bot-secret-token>/getWebhookInfo " | json_pp.. debería devolver esto:
{
" 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 "
}
} .. que debería coincidir con la URL en su archivo credentials.yml o visite el NGROK admin ui http: // localhost: 4040/status

Parece que es un partido. Si no, reinicie todo ejecutando:
make restart@paulpierre `
¡Felicitaciones, toda su base nos pertenece! kthxbye
Copyright (c) 2023 Paul Pierre. Por la presente, se otorga el permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar el software sin restricción, incluidos los derechos de usar, copiar, modificar, modificar, modificar, fusionar , publique, distribuya, sublicense y venderá copias del software, y para permitir que las personas a quienes se proporcione el software lo haga, sujeto a las siguientes condiciones: el aviso de derechos de autor anterior y este aviso de permiso incluido en todas las copias o porciones sustanciales del software. El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otro responsabilidad, ya sea en una acción de contrato, agravio o de otro tipo, derivado, de o en relación con el software o el uso u otros tratos en el SOFTWARE.