
Rasagptは、RasaとLangchainの上に構築された最初のヘッドレスLLMチャットボットプラットフォームです。これはボイラープレートであり、インデックス、検索、コンテキストインジェクションのためにLangchainのようなLLMライブラリを利用したRASAおよびTelegramの参照実装です。

彼ら自身の言葉で:
Rasaは、テキストと音声ベースの会話を自動化するためのオープンソース(Python)機械学習フレームワークです:NLU、Dialogue Management、Connege To Slack、Facebookなど - チャットボットと音声アシスタントを作成する
私の言葉で:
Rasaは、非常に人気があります(あえて私が事実上と言うのですか?)、LLMSの世界で再考されたチャットボットフレームワークの概念的な出発点であるNLU MLパイプラインを組み込んだチャットボットフレームワークを使用しやすいです。
rasagptは箱から出して動作します。実装されている頭痛の多くが整理されていたので、次のことを含めて必要ではありません。
バックストーリーはおなじみです。友人が問題を抱えて私のところに来ました。 GoogleとGithubを精査して、RASAとの統合LLMのまともな参照実装を実装しましたが、手ぶらで出てきました。私はこれが私の好奇心に満足する絶好の機会であると考えました、そして、2日後に私は概念の証明を持っていました、そして、1週間後、これが私が思いついたものです。
ショ和 警告emptor:これは生産コードとはほど遠いものであり、迅速な注入と一般的なセキュリティの脆弱性が存在します。誰かがこれが便利だと思うことを願っていますか?
開始は簡単です。以下の依存関係を満たしてください。
ショ和 ショ和 ショ和 **注意非Macosユーザー:** LinuxまたはWindowsを使用している場合、khalosa/rasa-aarch64:3.5.2からrasa/rasa:latest#64およびアクションで、#1の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/yourbotnameからアクセスできますgit 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を入力してください

インストールは自動化する必要があります。

完全なインストールログ:https://app.warp.dev/block/vflua6eue29epk8evvw8kd
Dockerのインストールプロセスは、高レベルで次の手順を実行します
.envが利用可能であることを確認してくださいpgvectorで初期化されますseed.pyを介してダミーデータが入力されていますhttps://t.me/yourbotsnameにアクセスして、ボットとのチャットを開始できます

https:// localhost:9999/にアクセスして、すべてのログを表示できます。これは、すべてのDockerコンテナのリアルタイムログを表示します

https:// localhost:8888/docsにアクセスして、APIエンドポイントドキュメントを表示します
このページでは、エンティティを作成および更新したり、ドキュメントをナレッジベースにアップロードできます。

ボットは単なる概念の証明であり、検索のために最適化されていません。現在、インデックス作成には1000文字の長さチャンキングを使用し、検索には基本的なユークリッド距離がヒットまたはミスを使用しています。
results.mdファイルのボットでヒットとミスの例を表示できます。全体として、インデックスの最適化とLLM構成の変更を推定すると、出力品質が70%以上増加する可能性があります。
クリックして、results.mdのデモデータのQ&Aの結果を表示します
REST APIは簡単です。ドキュメントhttp:// localhost:8888/docsにアクセスしてください
以下のエンティティには基本的なCRUD操作があり、JSONを返します
これは、SaaS / Multi-Tenantの世界であなたのクライアントである会社と考えることができます。デフォルトでは、ダミー組織のリストが提供されました

[
{
" 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 "
}
]これは、FAQページや財務諸表収益を持つ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": "# 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}/webhook経由のFastapiサーバーですFallbackClassifierしきい値を設定することですrasa-credentialsによって更新されます。action_gpt_fallbackアクションを追加しますout_of_scopeaction_gpt_fallbackをトリガーするというこの意図のルールを設定しましたActionGPTFallbackクラスを介してアクションを定義および表現する場所です。メソッドname上記の意図のために定義したアクションを返しますrasa train介して行うことができるトレーニングを受ける必要があります。これは、 make install実行するときに自動的に行われますrasa runを介して実行されなければなりませんrasa run actionsで別々に実行する必要がありますrasa-credentials Serviceは、このプロセスをお勧めします。 Ngrokはサービスとして実行されます。Rasa rasa-credentialsがRocal Ngrok APIを呼び出してトンネルURLを取得し、 credentials.ymlを更新し、yymlファイルを更新し、rasaを再起動します。actions.pyで実行されているフォールバックアクションに移動します。 pgvectorはPostgres用のプラグインであり、自動的にインストールされ、ベクトルデータ型を保存および計算できるようにします。 Langchain PGVectorクラスはスキーマに適応できず、柔軟性が必要なため、独自の実装があります。
/docker-entry-initdb.dのファイルは実行されます。 Postgres dockerfileでは、データベースのDBとユーザーを作成するcreate_db.shをコピーしますmodelsコマンドでは、モデルからテーブルを作成するAPIコンテナでModel.pyを実行します。enable_vectorメソッドは、データベース内のpgvector拡張機能を有効にしますindex.jsonという名前のファイルに保存されている場合、データはインデックス化されますGPTSimpleVectorIndexを使用して関連するデータを見つけ、プロンプトに注入します。out_of_scope一致する場合、rules.ymlはaction_gpt_fallbackアクションをトリガーしますActionGPTFallback関数は、FastAPI APIサーバーを呼び出します一般に、http:// localhost:9999/に行くだけで、Dockerコンテナログを確認してください。
ngrokとTelegramの一致でWebhookを常に確認してください。単純にこれを行います
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 "
}
} .. credentials.ymlのURLと一致するか、ngrok管理者UI http:// localhost:4040/statusにアクセスする必要があります。

試合のように見えます。そうでない場合は、実行してすべてを再起動します。
make restart@paulpierre `経由でTwitterでHMUをお気軽にお問い合わせください。
おめでとうございます、あなたのベースはすべて私たちのものです! kthxbye
著作権(c)2023ポールピエール。このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)のコピーを取得している人に、これにより許可が無料で許可されます。 、ソフトウェアのコピーを公開、配布、サブライセンス、および/または販売し、次の条件を条件として、ソフトウェアが提供される人を許可します。上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分。このソフトウェアは、商品性、特定の目的への適合性、非侵害の保証を含むがこれらに限定されない、明示的または黙示的ないかなる種類の保証もなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたは使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。ソフトウェア。