大勢の中に紛れ込まないよう、書き続けてください。
1 はじめに
以前、ChatGPT を企業 WeChat に接続するためのチュートリアルを書きました。詳細については、Zhihu リンクを参照してください:
[おばあちゃんがすべて読みます] ChatGPT3.5 は企業 WeChat に接続でき、継続的な対話が可能になります
記事の最後に、このチュートリアルは小規模でのみ使用できると記載されていますが、DingTalk、Feishu、インターネット上にあるカスタム Web ページなど、他の ChatGPT ドッキング チュートリアルの原理は同じです。転送プログラムを作成し、ChatGPT とあなたのものの間で使用します。 対話型ツールを切り替えます。これは単純な単一システムであり、ロジックは次の図に示されています。
このモノリシック システムは設計がシンプルで、非常に迅速に開発および適用できます。欠点は、パフォーマンスのボトルネックが単一サーバーに限定されているため、同時実行性の高いシナリオをサポートできないことです。たとえば、100,000 人がこのシステムを使用したい場合、システムは直接クラッシュします。
2. 分散型ChatGPTドッキングシステム
これに基づいて分散システムを設計する必要がありますが、全体的なアーキテクチャは次の図に示されています。
2.1 インタラクション層
インタラクション層についてはあまり言う必要はありません。つまり、ユーザーは企業の WeChat、DingTalk、Web ページなどの ChatGPT ツールを直接使用します。これらのツールには、対応する公式ドキュメントがあり、これは単に入力および出力インターフェイスにすぎません。
2.2 クライアント層
- インタラクション層からテキスト情報を受信し、それをサーバーに転送する役割を果たします。
- 同時に、サーバーから応答情報を受信し、それを対話型ツールに送り返します。
- 継続的なダイアログをサポートするためにダイアログ コンテキストをキャッシュします。
ここでの考え方は、クライアントが複数のリクエスト ポータルを持っているということです。たとえば、各企業は独自の WeChat エンタープライズを持ち、各企業には指定された IP を持つクライアントが割り当てられます。
この利点は、トラフィックの入り口が単一ではなくなり、トラフィック分散の負荷分散の別の層を行う必要がないことです。リンク図では以下を参照できます。
2.3 登録センター
登録センターの役割:
- サービス登録: サーバーは起動後、IP、ポート、サービス インターフェイスなどの独自の情報を登録センターに登録します。
- サービス検出: クライアントは登録センターを通じてルーティング テーブルを取得し、サーバーの IP とポートをクエリして、サービスを呼び出します。
- 負荷分散: トラフィックのバランスをとり、クライアントが要求したトラフィックを特定の分散戦略に従ってサーバーに分散し、異なるサーバーに分散します。
- サービス ヘルス チェック: 登録センターとサーバーのハートビート チェックを維持し、インスタンスがサービス コールの失敗を回避できなかった場合は、登録センターから削除できます。
簡単に言えば、登録センターを使用すると、サーバーの水平拡張によってシステムの同時実行能力が向上し、より多くの人がシステムを使用できるようになります。
2.4 サーバー
サーバーの役割:
- ダイアログ コンテキスト、GPT キーなどの情報をクライアントから受信します。
- ChatGPT API と対話し、API から返された情報テキストを受信し、それをクライアントに送り返します。
- サービスのダウングレード、サポートの手動ダウングレード。ChatGPT が利用できない場合は、ChatGLM、Wenxin Yiyan およびその他の大規模な対話モデルにダウングレードして、対話機能を引き続き利用できるようにすることができます。
2.5 データストレージ層
主な効果:
-
ダイアログコンテキストデータを保存する
-
データの有効期限設定、期限切れ時の自動削除をサポート
-
データの読み取りおよび書き込みに短い応答時間が必要
3. 技術の選択
システム全体のアーキテクチャを設計した後、どの言語を使って実装するかは得意分野によって異なりますが、ここでは私が使用している言語について説明します。
- RPC フレームワーク: Dubbo
- プログラミング言語とフレームワーク:Java8、SpringBoot
- ストレージミドルウェア: Redis
- 登録センター: ナコス
- リンク追跡とサービス監視: スカイウォーキング (オプション)
- コードのホスティングと自動展開: Alibaba Cloud-Cloud 効果
4. 具体的な実施
現時点では、上記のアーキテクチャ設計に従ってシステムのバージョンを実装する予定です。コードはオープンソースではありません。使用する必要がある場合は、私に連絡してください。
アーキテクチャで使用されている技術的なポイントに関する記事は今後更新される予定です。クリックしてフォローすると、記事が更新されたときに通知が届きます。