
Rasagpt - это первая платформа чат -ботов без головы LLM, построенная на вершине RASA и Langchain. Это шаблон и эталонная реализация RASA и Telegram, использующая библиотеку LLM, такую как Langchain для индексации, поиска и контекста.

По их собственным словам:
RASA- это структура машинного обучения с открытым исходным кодом (Python) для автоматизации текстовых и голосовых разговоров: NLU, управление диалогами, подключение к Slack, Facebook и многое другое- создайте чат-боты и голосовые помощники
По моему мнению:
RASA очень популярен (Dare, я говорю де-факто?) И легко использовать структуру чат-ботов со встроенными трубопроводами NLU ML, которые устарели, и концептуальная отправная точка для переосмысленной структуры чат-бота в мире LLMS.
Расагпт работает из коробки. Многие из реализации головных болей были разобрались, поэтому вам не нужно, включая:
Предыстория знакома. Друг пришел ко мне с проблемой. Я использовал Google и Github для приличной ссылки, интегрированной LLM с RASA, но появился с пустыми руками. Я решил, что это прекрасная возможность насытить мое любопытство, и через 2 дня у меня было доказательство концепции, и через неделю это то, что я придумал.
️ Emptor Caveat: это далеко от производственного кодекса и изобилует быстрым инъекцией и общей уязвимостью безопасности. Я просто надеюсь, что кто -то найдет это полезным?
Начало работы легко, просто убедитесь, что вы встречаете зависимости ниже.
️ ️ ️ ** Внимание Пользователи, не являющиеся макосами: ** Если вы используете Linux или Windows, вам нужно будет изменить имя изображения сkhalosa/rasa-aarch64:3.5.2наrasa/rasa:latestв Docker-compose.yml On Line #64 и в действиях dockerfile в строке № 1 здесь
# 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
В любой момент не стесняйтесь просто вводить make , и он отобразит список параметров, в основном полезных для отладки:

Самый простой способ начать это использование Makefile в корневом каталоге. Он установит и запустит все услуги для Rasagpt в правильном порядке.
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Это полезно, если вы хотите сосредоточиться на разработке на вершине API, для этого был сделан отдельный Makefile . Это создаст для вас локальную виртуальную среду.
# 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 Точно так же введите make , чтобы увидеть полный список команд

Установка должна быть автоматизирована, должна выглядеть так:

Полная установка
Процесс установки Docker предпринимает следующие шаги на высоком уровне
.envpgvectorseed.pyВы можете начать общаться со своим ботом, посетив https://t.me/yourbotsname

Вы можете просмотреть весь журнал, посетив https: // localhost: 9999/который будет отображать журналы в реальном времени всех контейнеров Docker

Просмотреть документы API конечной точки, посетив https: // localhost: 8888/docs
На этой странице вы можете создавать и обновлять объекты, а также загружать документы на базу знаний.

Бот-это просто доказательство концепции и не был оптимизирован для поиска. В настоящее время он использует 1000 длина символов для индексации, а базовое евклидовое расстояние для поиска и качества - это удаление или пропускание.
Вы можете просмотреть примеры хитов и промахивания с ботом в файле Results.md. В целом, я оцениваю оптимизацию индекса и изменения конфигурации LLM, могут увеличить качество выхода более чем на 70%.
Нажмите, чтобы увидеть результаты вопросов и ответов демонстрационных данных в результатах.md
REST API проста, посетите документацию http: // localhost: 8888/docs
Приведенные ниже объекты имеют базовые операции CRUD и возврат JSON
Это можно рассматривать как компания, которая является вашим клиентом в мире SaaS / MultoNant. По умолчанию был предоставлен список фиктивных организаций

[
{
" 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 "
}
]Это можно рассматривать как продукт, который принадлежит компании. Вы можете просмотреть список проектов, которые принадлежат таким организациям, как 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 "
}
]Это можно рассматривать как артефакт, связанный с продуктом, например, страница часто задаваемых вопросов или PDF с прибылью финансовой отчетности. Вы можете просмотреть все документы, связанные с проектом организации, как 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 "
}Хотя это не выявлено в API, узел - это кусок документа, который генерируется встраиваемыми. Узлы используются для поиска поиска, а также для инъекции контекста. Узел принадлежит к документу.
Пользователь представляет человека, разговаривающего с ботом. Пользователи не обязательно принадлежат к организации или продукту, но эти отношения фиксируются в чате ниже.
Не выявлено через API, но это представляет вопрос и ответ между пользователем и ботом. Каждый из этих объектов может быть гибко идентифицирован с помощью session_id , который создается автоматически. Сессии чата содержат богатые метаданные, которые можно использовать для обучения и оптимизации. Чаты через конечную точку /chat фактически связаны с организацией (для целей безопасности мультитенант)
/webhooks/{channel}/webhookFallbackClassifierrasa-credentials через app/rasa-credentials/main.pyaction_gpt_fallback , которое запустит наш сервер действийout_of_scopeaction_gpt_fallbackActionGPTFallback . name метода возвращает действие, которое мы определили для нашего намерения вышеrasa train . Это сделано автоматически для вас при запуске, make installrasa run после обученияrasa run actions rasa-credentials заботится об этом процессе для вас. Ngrok работает как услуга, как только он будет готов rasa-credentials вызывает локальный API NGROK, чтобы получить URL-адрес туннеля, и обновляет файл credentials.ymlactions.py pgvector - это плагин для PostGRES и автоматически устанавливается, позволяя хранить и вычислять типы векторных данных. У нас есть собственная реализация, потому что класс PGVector Langchain не является гибким для адаптации к нашей схеме, и мы хотим гибкости.
/docker-entry-initdb.d запустить, если база данных не была инициализирована. В Postgres DockerFile мы копируем create_db.sh , который создает DB и пользователя для нашей базы данныхmodels в Makefile мы запускаем модели.py в контейнере API, который создает таблицы из моделей.enable_vector включает расширение PGVector в базе данных index.jsonGPTSimpleVectorIndex для поиска соответствующих данных и внедряет их в подсказку.out_of_scope , на action_gpt_fallback правил.ActionGPTFallback будет позвонить на сервер API FastAPIВ общем, проверьте журналы контейнеров Docker, просто перейдя на http: // localhost: 9999/
Всегда проверяйте, что ваши веб -крючки с Ngrok и Telegram Match. Просто сделай это
curl -sS " https://api.telegram.org/bot<your-bot-secret-token>/getWebhookInfo " | json_pp.. должен вернуть это:
{
" 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 "
}
} .. который должен соответствовать URL -адресу в вашем файле credentials.yml или посетите пользовательский интерфейс ngrok admin http: // localhost: 4040/status

Похоже, это матч. Если нет, перезапустите все, работая:
make restart@paulpierre `
Поздравляю, вся ваша база принадлежат нам! KTHXBYE
Авторское право (C) 2023 Пол Пьер. Настоящее разрешение предоставляется бесплатно любому лицу, получающему копию этого программного обеспечения и соответствующие файлы документации («Программное обеспечение»), для работы в программном обеспечении без ограничений, включая, без ограничения, права на использование, копирование, изменение, объединение , опубликовать, распределять, сублицензировать и/или продавать копии программного обеспечения и разрешить лицам, с которым предоставлено программное обеспечение, при условии следующих условий: вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть Включено во все копии или существенные части программного обеспечения. Программное обеспечение предоставляется «как есть» без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и отсутствия нарушений. Ни в коем случае не будут нести ответственность авторов или владельцев авторских прав за любые претензии, ущерб или другую ответственность, будь то в действии контракта, деликте или иным образом, возникающим из или в связи с программным обеспечением или использования или других сделок в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.