このガイドでは、サーバーを再起動せずにOpenAI APIとのチャットをリセットする方法を学びます。以前のチャット履歴を単純に忘れて最初からやり直したいという状況がよくあります。ここで重要なのはチャットIDで、これによってサーバー上の履歴をリセットできます。次のチュートリアルで、この機能の実装方法を紹介します。

主なポイント

  • チャットをリセットするには、新しいチャットIDを生成できます。
  • チャットIDはページをリロードする際に作成され、サーバーに送信されます。
  • サーバーは新しいチャットIDを現在のチャットIDと比較し、異なる場合はメッセージリストをリセットします。

ステップバイステップガイド

まず、「OpenAI API」を使用した実行可能なチャットアプリケーションが既にありますが、チャット履歴をリセットできないという小さな問題があります。これを可能にするために、ページをリロードするたびに生成されるIDを導入する必要があります。

OpenAI APIでチャットをリセットする方法

次に、この新しいチャットIDをサーバーに渡す必要があります。サーバーが新しいIDを受け取ると、チャット履歴をリセットできます。これは単純な比較によって行われます:新しいチャットIDが現在のチャットIDと異なる場合、メッセージリストがリセットされます。

これを実装するには、クライアントがランダムなIDを生成できるようにする必要があります。IDは検索パラメーターIDで渡します。それでは、Reactコンポーネントのindex.jsxファイルを見てみましょう。

OpenAI APIでチャットをリセットする方法

このファイルには、すでに必要なメッセージ(MSG)が渡されています。これに加えて、IDも渡すことができます。これはテンプレート文字列を使用して効果的に行うことができ、変数の挿入が簡単になります。

OpenAI APIでチャットをリセットする方法

したがって、コードをテンプレート文字列に変換し、変数を適切に挿入します。次のようになります:MSG、これは入力フィールドです。IDは新しいIDと同じです。

IDの生成方法について考える必要があります。簡単な方法は、日付を使用することです。1970年以来の現在時刻をミリ秒単位で使用する定数を簡単に定義できます。Date.now()を使用して、この時刻を文字列に変換します。

ページをリロードするたびに常に新しいIDを送信します。これにより、望む結果が得られるはずです。テストして、データが正しくサーバーに送信されるか確認し、メッセージを送信してみましょう。

OpenAI APIでチャットをリセットする方法

「how are you」というメッセージを送信すると、サーバー上ではユーザーとアシスタントそれぞれのメッセージが2つあることがわかります。

OpenAI APIでチャットをリセットする方法

しかし、「why does it not have feelings」という追加の質問を送信すると、履歴が適切にリセットされます。そこには現在の質問とそれに対する回答のみが表示されます。

OpenAI APIでチャットをリセットする方法

つまり、IDを確認するときには競合が発生せず、新しいチャットIDが現在のチャットIDと同じであってはならないことが重要であり、このロジックをスムーズに実行できるようにする必要があります。

OpenAI APIを使ってチャットをリセットする方法

機能が正常に動作することを確認するには、テストを再度行います。ページを更新し、さらにメッセージを送信してみてください。これで、4つのメッセージが配列に保存されるはずです。

OpenAI APIを使用してチャットをリセットする方法

配列には送信された全メッセージ数が表示されるため、履歴が正しくリセットされていることがわかります。ただし、ページを再読込する必要があります。代替として、チャットをリセットするボタンを実装することもできますが、当面はページを再読込することで十分です。

OpenAI APIのチャットをリセットする方法

ただし、メッセージを送信した後、入力フィールドが自動的にクリアされないことに注意してください。また、これまでのチャット履歴全体はまだ表示されておらず、つまり、常に最後の質問と回答のみが表示されます。これについても、今後のチュートリアルで扱います。

OpenAI APIでチャットをリセットする方法

要約

このチュートリアルでは、チャットアプリケーションにチャット履歴リセット機能を実装する方法を学びました。ページをリロードすることで新しいチャットIDを導入することで、履歴を正常にリセットすることができました。入力フィールドの削除やチャット履歴のすべての表示など、次のステップで行う改善点がまだいくつかあります。

よくある質問

チャットをリセットするにはどうすればいいですか?ページを再読み込みすることでチャット履歴をリセットできます。

新しいIDはどのように生成されますか?新しいIDは現在のミリ秒時間から生成されます。

ページを再読み込みせずにチャットをリセットすることは可能ですか?はい、チャットをリセットするボタンを実装することもできます。

IDが同じ場合、どうなりますか?新しいIDが現在のIDと同じ場合、履歴はリセットされません。

メッセージ送信後、入力フィールドを手動で消去する必要がありますか?はい、現時点ではメッセージを送信した後、入力フィールドは自動的には消去されません。