DjangoのPubNub WebhooksでChatGPTを実装する
Published: 2024-03-20 11:50:31

拡大し続ける今日のデジタル環境では、デジタルの完成度を高めるために、常に新しいアップデートやマイクロ調整を追い求めなければならない。このような進歩に伴い、常に埋めなければならないギャップの1つが、[チャットボットを](https://www.pubnub.com/blog/building-a-chatbot-with-openai-gpt3-and-pubnub/)介した会話でユーザーにより良い体験を提供する必要性である。その目的は、ビジネスと個人間のインテリジェントなインタラクションをデザインすることで、ユーザーが製品やブランドに満足し、感情的につながったと感じられるようにすることだ。こうしてチャットボットは、デジタル世界と現実世界のギャップを最小化し、ウェブアプリ、アンドロイドやアップルのデバイス、ウェブブラウザを使ったオンラインコミュニケーションの方法を変革する多目的な手段として登場した。

チャットボットは、あらゆるユーザーが期待するリアルタイムのコミュニケーションやサポートに対する需要の高まりに応えている。強力なチャットボットなしでは、潜在的な顧客やリードを逃してしまいがちです。このように、期待の高まりは、チャットボットがデジタル製品に組み込まれ、ユーザーの利便性を高め、彼らの経験を満足のいくものにするために、適応の戦いをエスカレートさせる原動力となっています。

想像してみてほしい。緊急に必要な食料品を注文したが、注文が遅れている。ウェブアプリを開くと、追跡システムに動きがありません。アップデートが必要だ。ここで、2つのシナリオが考えられます：

**最初のシナリオ：**第一のシナリオ：カスタマーサポートに電話をかけるが、回線が混んでいて待たされる。イライラが募る。

**第二のシナリオ：** [ライブチャットの](https://www.pubnub.com/solutions/chat/)オプションがあり、ほとんどすぐにアシストされる。あなたは、配達ドライバーが向かっていて、数分であなたの場所に到着しようとしているという最新情報を得る。また、詳細なアップデートが必要な場合は、オンラインで担当者と接続するオプションが与えられます。

_あなたはどちらの体験を好むだろうか？_

すべてのユーザーは、オンラインでの活動に一定レベルの利便性を求めている。ショッピング、問い合わせ、教育、ゲームなど、情報の即時共有と問い合わせの解決は、肯定的なオンライン体験とインタラクションを生み出す最大の誘因の1つであり、したがって必要です。

チャットボットの重要性の高まり
---------------

Grand View Research, Inc.の最近の調査報告書によると、チャットボット市場規模は今後数年で大幅に上昇し、2030年までに約273億米ドルに達する見込みです。 [2030年までに273億米ドル](https://www.grandviewresearch.com/press-release/global-chatbot-market).これは、現在から2030年までの年平均成長率（CAGR）23.3％に相当する。控えめに言っても、驚くべき成長率である！この予測は、テクノロジーとユーザーの間のギャップを埋め続けるチャットボットが、デジタル・コミュニケーションの未来を築く上で重要な役割を果たすことを強調している。

従来のコミュニケーション方法では、即座に応答性の高いサポートを提供することに苦労していましたが、Django、PubNub webhooks、ChatGPT言語モデルなどのテクノロジーを搭載したインテリジェントなチャットボットは、有意義なやり取りでユーザーを引き込むことに優れています。

企業は様々な方法でインテリジェントチャットボットの恩恵を受けます。応答速度を自動化し、予測可能なクエリに対して迅速なカスタマーサポートを提供し、複雑な問題が発生した場合、チャットボットはユーザーの快適性を確保しながら、人間の担当者に会話を転送することができます。チャットボットはサポートを提供するだけでなく、販売を促進し、リードを生成し、ブランドのオンライン評判を維持します。チャットボットが提供する自動化は、企業のコストを下げ、プロセスを合理化します。これは特に、次のような形で電子商取引に利益をもたらします。 [顧客体験の向上](https://www.pubnub.com/blog/4-ways-ecommerce-chatbots-enrich-customer-experiences/)ショッピングの提案、カスタマイズされた推奨、履歴と頻度に基づくリピートリスト、および非常に多くの。

インテリジェントなチャットボットの設計は複雑な作業です。イノベーションとオンラインでの人間の行動を理解する必要があります。Djangoのような強力なフレームワーク、PubNubのようなリアルタイムメッセージングプラットフォーム、ChatGPTのような洗練されたAI言語モデルは、コンテキスト、意味、刺激を完備し、応答性の高い動的なユーザー体験を生成するための包括的な戦略を設計するために一緒に働くことができます。

### DjangoフレームワークとPubNubウェブフック

Djangoフレームワークは [Pythonのトップフレームワーク](https://www.browserstack.com/guide/top-python-web-development-frameworks)チャットボットソフトウェア開発の基盤を形成しています。また、継続的なコミュニケーションとエンゲージメントに対応するフレームワークの本質的なロジックを提供します。開発者は、複雑な機能をツールキット内に統合し、豊かなエコシステムを提供することができる没入型アプリケーションを作成する機会があります。Django は、簡単に保守できる Web アプリケーションを作るための、組織化され体系化されたアプローチで、開発プロセスを合理化します。これは主に、組み込みの URL ルーティング、堅牢なセキュリティメカニズム、Model-View-Controller (MVC) アーキテクチャなどの強力な機能によるものです。

しかし、PubNubのWebhookは、DjangoのバックエンドとPubNubのメッセージング構造との間のパイプ役として機能することで、インタラクションのレベルを次のレベルに引き上げます。Pubnubのwebhookは、メッセージを受信すると即座にその機能がトリガーされるため、リアルタイムでユーザのメッセージに応答することができます。クエリへの回答、レコメンデーションの提案、ユーザーへの支援、対話が、追跡可能な遅延なく行えるようになる。この迅速な応答は、バックエンドでは自動化されていても、どのユーザーにとっても自然な会話の流れにつながる。私たちは [PubNubとChatGPT / OpenAIでチャットボットを構築することで](https://www.pubnub.com/blog/build-a-chatbot-with-pubnub-and-chatgpt-openai/)を使用したチャットボットの構築方法について詳しく説明します。

チャットボットのインテリジェンスは、履歴を取得し、過去の対話から参照する能力で測定され、それによって意味のある首尾一貫した会話のエコシステムを作成します。 [PubNubのfetch\_messages](https://www.pubnub.com/docs/chat/sdks/messages/message-history)により、チャットボットはチャット履歴を取得することで、すべての対話のコンテキストを推測することができます。この機能により、パーソナライズされた首尾一貫した会話が可能になり、ユーザーは大切にされ、理解されていると感じることができます。

PubNubの [ChatGPT](https://www.pubnub.com/integrations/openai/) の統合は、ユーザー体験をさらに向上させる。ChatGPTはAIベースの機械学習言語モデルで、ディープラーニングアルゴリズムを使用し、クエリのコンテキストを理解して応答を生成する。ChatGPTとPubNubのリアルタイムフレームワークとの統合により、迅速な応答が保証され、会話の自然な流れが維持される。

DjangoのフレームワークとPubNubのインフラストラクチャの連携により、パーソナライズ、ドメイン固有の言語理解、正確なレスポンス生成が可能になります。ChatGPTのレスポンスの定期的な更新と修正により、チャットボットはドメイン固有の言語を理解し、明確な精度でユーザーの好みに応えることができます。

DjangoチュートリアルでのPubNub webhooks統合
--------------------------------

ここでは、PubNub webhooksをDjangoアプリケーションに統合するためのテンプレートを提供します。

### 環境のセットアップ

技術的な実行に入る前に、開発環境が正確にセットアップされていることを確認しましょう。

**必要な依存関係をインストールする**最初のステップは、必須のソフトウェアとライブラリをインストールすることです。Python と Django はバックエンドに必須ですし、それぞれのプロジェクトに必要な追加パッケージやプラグインも必要です。仮想環境の作成は依存関係の管理に役立ちます。PubNubはクロスプラットフォームで、JavaからReact、REST APIからJavaScript / Node.jsまで他のSDKをサポートしていますが、このチュートリアルではPythonを使用します。

**Djangoプロジェクトを作成します：**必要なパッケージをすべてインストールしたら、新しい Django プロジェクトを作成します。これがチャットボットアプリのコアとなる基盤になります。

**APIキーを取得する：**APIキーはPubNubやChatGPTのような周辺サービスとやり取りするために重要になります。これらのプラットフォームにサインアップしてアカウントを作成し、リクエストの認証に必要なキーを取得します。

### Django webhook エンドポイントを作成する

DjangoプロジェクトでPubNubイベントを受け取るwebhookエンドポイントを定義します。このエンドポイントはHTTP POSTリクエストを処理し、受信したイベントペイロードを処理するように設定する必要があります。

### PubNubウェブフックの設定

PubNubアカウントで、関連するイベントをDjango webhookエンドポイントのURLに送信するようにwebhook設定を行います。新しいメッセージがチャネルに公開されるなど、キャプチャしたいイベントを指定します。

### 受信イベントを処理する

Django webhook エンドポイントビューで、受信したイベントペイロードから必要な情報を抽出します。これには、メッセージの内容、関連するメタデータ、ChatGPT での処理に必要な追加コンテキストの解析が含まれます。

```js
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

      
 class PubNubOpenAIView(APIView):


def post(self, request):
        try:
            payload = request.data
            question = payload["event"]["eventPayload"]["message"]
            sender = payload["event"]["senderId"]
            channel = payload["event"]["channel"]

            pubnub_history = get_pubnub_history(channel)
            history_messages = [message.message for message in history.result.channels[channel]]  
            openai_response = get_openai_response(message, history_messages)
            pubnub_response = publish_message(
                channel, openai_response
            )

            if pubnub_response.status.status_code == status.HTTP_200_OK:
                return Response({"status": "success"}, status=status.HTTP_200_OK)
            else:
                return Response(
                    data={"error": "Error while sending back to pubnub"},
                    status=pubnub_response,
                )

        except Exception as pubnub_open_ai_error:
            return Response(
                {"message": pubnub_open_ai_error.args[0]},
                status=status.HTTP_400_BAD_REQUEST,
            )
```

### コンテキスト会話の実装

PubNubは特定のチャネルのチャット履歴を取得できるfetch\_messagesという強力な機能を提供します。この機能は、チャットボットが履歴を記憶し、以前のコミュニケーションを参照して会話をパーソナライズする能力を示すことで、より有意義で魅力的なインタラクションを作成する上で極めて重要な役割を果たします。

チャット履歴は、より有意義で魅力的な対話を生み出す上で重要な役割を果たします。履歴を記憶するチャットボットの能力を示すことで、チャットボットの記憶感覚を強固なものにします。さらに、過去のコミュニケーションを参照することで、会話をパーソナライズすることができます。このダイナミックなアプローチは、ユーザー側で自然な会話をしているという認識につながる。

このステップは、チャットボット環境全体で有意義なコミュニケーションを維持するための実装プロセスの重要な部分です。

fetch\_messages を使ってコンテキストに沿った会話を実装する方法についての Python チュートリアルはこちらです。

```js
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub


pnconfig = PNConfiguration()

pnconfig.subscribe_key = os.environ["PUBNUB_SUBSCRIBE_KEY"]
pnconfig.publish_key = os.environ["PUBNUB_PUBLISH_KEY"]
pubnub = PubNub(pnconfig)
history_count = 5         
    
 def get_pubnub_history(channel):
    envelope = pubnub.fetch_messages() \
        .channels([channel]) \
        .count(int(history_count)) \
        .include_meta(True) \
        .sync()
    return envelope
```

### レスポンス生成にChatGPTを利用する

抽出したメッセージ内容をChatGPTモデルに渡してレスポンスを生成します。ChatGPTのパワーを活用して、入力に基づいて首尾一貫した文脈に適したレスポンスを生成します。

```js
import openai


def get_openai_response(message: str, history: list):
 """
 This function connects to the OpenAI API and fetches a response for the given user request.
 """
 try:
     messages = []
     messages.extend(history) # adding previous context
     messages.append({"role": "system", "content": message})
     response = openai.ChatCompletion.create(
         model="gpt-3.5-turbo", messages=messages
     )
     return response["choices"][0].message.content

 except Exception as e:
     raise Exception(e)
```

### PubNub経由でレスポンスを送信

レスポンスが生成されたら、PubNubを使用して目的のチャネルまたは受信者にレスポンスを送り返し、リアルタイムの配信を確保します。

```js
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub


pnconfig = PNConfiguration()

pnconfig.subscribe_key = os.environ["PUBNUB_SUBSCRIBE_KEY"]
pnconfig.publish_key = os.environ["PUBNUB_PUBLISH_KEY"]
pubnub = PubNub(pnconfig)
         
            
 def publish_message(channel, message):
    """
        This function is used to send a message to PubNub.
        channel: Channel name where the message needs to be sent
        message: message that is to be sent back to user
    """
    response = pubnub.publish().\
        channel(channel).\
        message(message).\
        meta({'from': 'chatbot'}).\
        sync()
    return response
```

ウェブ開発：受信したら、PubNubサブスクライブコールによって返されたJSONを解析するために、フロントエンドのHTML / CSSを作成したいと思うでしょう。

### ドメイン固有のプロンプトの提供

ドメイン固有のプロンプトで会話をパーソナライズすることで、チャットボットの機能が強化されます。ChatGPTの助けを借りて、我々はドメイン固有のプロンプトの助けを借りて応答を戦略化することができます。これはまた、ユーザー生成メッセージへの依存を減少させます。以下のチュートリアルは、ドメインベースのプロンプトとその後のChatGPTの実行の統合プロセスに役立ちます：

#### プロンプトのプリペンド

ユーザーメッセージを ChatGPT に直接送信する代わりに、ドメイン固有のプロンプトを追加してコンテキストを確立し、望ましい結果に沿った回答を導き出します。これは、ドメイン固有のプロンプトに基づいて応答を構造化し、ターゲットを絞った応答を配信するために、ChatGPTを深く理解するのに役立ちます。いくつかの例を見てみましょう：

-   ディナーテーブルの予約チャットボット「ホステス: \[ユーザーのメッセージ\]"
    
-   カスタマーサポートシナリオ: "サポートエージェント: \[ユーザーのメッセージ\]"
    
-   ホテル予約アシスタントの場合: "ホテルのエキスパート: \[ユーザーのメッセージ\]"
    

#### カスタマイズされたレスポンス生成

ドメインベースのプロンプトを含めることで、ChatGPT に希望する結果に完全に一致した応答を生成するように指示することができます。この方法は、没入型のコミュニケーションを可能にする首尾一貫したエコシステムを作成し、チャットボットがカスタマイズされたソリューションを提供できるようにします。

いくつか例を挙げましょう：

-   保険アドバイザーのチャットボットは、メッセージの前に「保険アドバイザー：保険関連の問い合わせに対するメッセージに関連した応答を維持するために、\[ユーザーのメッセージ\]をメッセージの前に付けるかもしれません。
    
-   栄養コーチチャットボットは、"Coach：\[ユーザーのメッセージ\]」を使って、パーソナライズされた食事のアドバイスやプランを提供することができます。
    

#### プロンプトのバリエーションと実験

ドメイン固有のプロンプトを使用することは、コンテキストを確立するだけでなく、学習と実験を可能にします。ChatGPTの応答を最適化するために、様々なプロンプトでクエリを繰り返すことができます。ここでは、実験的な方法を紹介します：

-   トーンを調整します：フォーマルな場では、"Greetings, I'm here to help you：\[一方、カジュアルなトーンであれば、"Hey there！話しましょう：\[ユーザーメッセージ\]」としましょう。
    
-   専門知識を強調する：医療相談チャットボットの場合、その業界が対応する緊急事態に合わせて、"Doctor：\[ユーザーのメッセージ\]」でプロンプトを開始し、回答の権威性を強調することができます。
    

ドメインベースのプロンプトを統合することで、チャットボットは効率的にユーザーと対話し、体験として自然な集中したサポートを提供することができます。

結論
--

Django、PubNub webhooks、OpenAIのChatGPTの組み合わせは、インテリジェントで完全にインタラクティブなチャットボットアプリを作成するための比類のないツールキットを提供します。開発者はデジタル世界と現実世界のギャップを埋めることができ、コミュニケーションの自動化への依存を強固にすることができます。

Djangoは、意味のある多機能でスケーラブルなチャットボット体験のための強力な基盤を築くことができる堅牢なウェブアプリケーションフレームワークをもたらします。一方、PubNubのリアルタイムの応答能力は、会話の流れを維持し、ユーザーに自然で本物の体験を提供する継続性につながることを保証します。さらに、ChatGPTはユーザーに深く理解されていると感じさせる文脈主導の応答を可能にします。

Djangoの潜在能力、PubNubのリアルタイム応答性、ChatGPTの言語専門知識の完全な実装により、開発者はユニークで革新的なチャットボットアプリケーションの形で素晴らしい結果を提供することができます。これらのデジタル・インターフェースは、支援であれ、サポートのレンダリングであれ、プロンプトの提案であれ、インタラクションを合理化する。この3つが揃うことで、あらゆるユーザーがAI主導の会話型チャットボットと対話する方法が再構築される。

PubNubの [リアルタイム機能の](https://www.pubnub.com/solutions/data-streaming/)多様な接続方法と、アプリのスケーラビリティを強化する上での重要性については、こちらをご覧ください。

#### 目次

[チャットボットの重要](#h-0)性の高まり[DjangoフレームワークとPubNub webhooksPubNub](#h-1)[webhooks integration in Djangoチュートリアル](#h-2)[環境を](#h-3)設定する[Django webhookエンドポイントを](#h-4)[作成](#h-3)する[PubNub webhooksを](#h-5)[設定](#h-4)する[受信イベントを](#h-6)[処理](#h-5)する[コンテキスト会話を](#h-7)[実装する](#h-6)[応答生成にChatGPTを](#h-8)[利用](#h-7)する[PubNub経由で応答を](#h-9)送信する[ドメイン固有のプロンプトを](#h-10)[提供する](#h-9)[プロンプトを](#h-11)[準備する](#h-10)[カスタマイズされた](#h-11)[応答生成プロンプトの](#h-12)[バリエーションと](#h-13)[実験](#h-14)[結論](#h-13)

PubNubはどのようにお役に立ちますか？
=====================

この記事は[PubNub.comに](https://www.pubnub.com/blog/implementing-chatgpt-with-pubnub-in-django/)掲載されたものです。

私たちのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイスのためのリアルタイムのインタラクティブ性を構築、配信、管理するのに役立ちます。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。