用他们自己的话说:
💬 Rasa 是一个开源 (Python) 机器学习框架,用于自动化基于文本和语音的对话:NLU、对话管理、连接到 Slack、Facebook 等 - 创建聊天机器人和语音助手
用我的话说:
Rasa是一个非常受欢迎的(我敢说是事实上的吗?)并且易于使用聊天机器人框架,内置的NLU ML管道已经过时,并且是LLM世界中重新设计聊天机器人框架的概念起点。
RasaGPT开箱即用。许多实施难题都已解决,因此你不必这样做,包括:
背景故事很熟悉。一个朋友带着一个问题来找我。我在Google和Github上搜索了LLM与Rasa集成的体面参考实现,但空手而归。我认为这是满足我好奇心的好机会,两天后我有了概念证明,一周后这就是我想出的。
⚠️ 警告:这与生产代码相去甚远,并且充斥着快速注入和一般安全漏洞。我只是希望有人觉得这有用😊
入门很容易,只需确保你满足以下依赖项即可。
⚠️ ⚠️ ⚠️ ** 非 MACOS 用户注意: ** 如果你使用的是 Linux 或 Windows,则需要将映像名称从 to 更改为 在 docker-compose.yml 第 #64 行和此处 #1 行的操作 Dockerfile 中khalosa/rasa-aarch64:3.5.2rasa/rasa:latest
# 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
make
https://t.me/yourbotname
git clone https://github.com/paulpierre/RasaGPT.git
cd RasaGPT
cp .env-example .env
# Edit your .env file and all the credentials
在任何时候,只需键入即可,它将显示选项列表,这些选项对调试最有用:
make
最简单的入门方法是在根目录中使用 。它将以正确的顺序安装和运行 RasaGPT 的所有服务。
Makefile
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 的安装过程在高级别上执行以下步骤
.env
pgvector
初始化
seed.py
可以通过访问
你可以通过访问 https://localhost:9999/ 来
通过访问
在此页面中,你可以创建和更新实体,以及将文档上载到知识库。
该机器人只是一个概念验证,尚未针对检索进行优化。它目前使用 1000 个字符长度的分块进行索引,并使用基本的欧几里得距离进行检索,质量是否达到或未命中。
你可以在结果中查看机器人的示例命中和未命中。MD 文件。总的来说,我估计索引优化和LLM配置更改可以将输出质量提高70%以上。
REST API 很简单,请访问文档
以下实体具有基本的 CRUD 操作并返回 JSON
这可以被认为是一家公司在SaaS /多租户世界中是你的客户。默认情况下,已提供虚拟组织列表
[
{
"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"
}
]
这可以被认为是属于公司的产品。你可以查看属于组织的项目列表,如下所示:
[
{
"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。你可以查看与组织项目关联的所有文档,如下所示:
{
"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": "# Pepetamine\n\nProduct Name: Pepetamine\n\nPurpose: Increases cognitive focus just like the Limitless movie\n\n**How to Use**\n\nPepetamine 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.\n\n**Side Effects**\n\nSome potential side effects of Pepetamine may include:\n\n1. Uncontrollable laughter and a sudden appreciation for dank memes\n2. An inexplicable desire to collect rare Pepes\n3. Enhanced meme creation skills, potentially leading to internet fame\n4. Temporary green skin pigmentation, resembling the legendary Pepe himself\n5. Spontaneously speaking in \"feels good man\" language\n\nWhile most side effects are generally harmless, consult your memologist if side effects persist or become bothersome.\n\n**Precautions**\n\nBefore taking Pepetamine, please consider the following precautions:\n\n1. 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.\n\n**Interactions**\n\nPepetamine may interact with other substances, including:\n\n1. 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.\n\nConsult your memologist if you are taking any other medications or substances to ensure compatibility with Pepetamine.\n\n**Overdose**\n\nIn case of an overdose, symptoms may include:\n\n1. Uncontrollable meme creation\n2. Delusions of grandeur as the ultimate meme lord\n3. Time warps into the world of Pepe\n\nIf 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}/webhook
FallbackClassifier
rasa-credentials
action_gpt_fallback
out_of_scope
action_gpt_fallback
ActionGPTFallback
name
rasa train
make install
rasa run
rasa run actions
rasa-credentials服务部门会为你处理此过程。Ngrok 作为服务运行,准备就绪后调用本地 ngrok API 来检索隧道 URL 并更新文件并为你重新启动 Rasa。
rasa-credentials
credentials.yml
actions.py
pgvector是Postgres的插件,并自动安装,使你能够存储和计算矢量数据类型。我们有自己的实现,因为 Langchain PGVector 类不能灵活地适应我们的模式,我们需要灵活性。
create_db.sh为
我们的数据库创建数据库和用户/docker-entry-initdb.d
models 命令
中,我们在 API 容器中运行 models.py,该容器从模型创建表。enable_vector方法
在数据库中启用 pgvector 扩展index.json 的文件中
GPTSimpleVectorIndex
out_of_scope
action_gpt_fallback
然后,ActionGPTFallback 函数
将调用 FastAPI API 服务器
通常,只需转到
始终检查你的 ngrok 和 Telegram 网络钩子是否匹配。只需通过以下方式执行此操作
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 匹配或访问 Ngrok 管理员 UI
credentials.yml
看起来是一场比赛。如果没有,请通过运行以下命令重新启动所有内容:
make restart
@paulpierre
在推特上发送hmu`版权所有 (c) 2023 保罗·皮埃尔。特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地处理本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人这样做, 符合以下条件:上述版权声明和本许可声明应包含在软件的所有副本或大部分内容中。本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权所有者均不对因本软件或本软件的使用或其他交易而引起、产生或与之相关的任何索赔、损害赔偿或其他责任负责,无论是在合同、侵权或其他诉讼中。