2024.10.30
今回は、ChatGPT APIを使ってLINEで自動返答を行うアプリを構築した経験について紹介します。
このプロジェクトでは、ユーザーがLINEでチャットメッセージを送ると、自動的に応答する機能を持ったLINE Botを構築しました。
主にAWSサーバーを用い、Pythonでコーディングを行い、LINE DeveloperとChatGPT APIを使用しました。
1. 使用した技術スタック
– サーバー: AWS(Lightsail Amazon Linux2)
– プログラミング言語: Python
– ツール: ChatGPT API
– サービス: LINE Developer
2. プロジェクトの概要
この自動返答アプリでは、LINEでメッセージを送信すると、ChatGPTがそれを受け取り、適切な応答を返す仕組みになっています。
例えば、顧客サポートや問い合わせ対応が主な用途です。
システム全体のフローは以下の通りです。
1. LINEからのメッセージをLINE Developerで受け取る。
2. 受け取ったメッセージをAWS上のサーバーに送信。
3. AWSサーバー内でPythonスクリプトが動作し、メッセージをChatGPT APIにリクエスト。
4. ChatGPTが応答を生成し、その応答をLINEに返す。
3. 各ステップの詳細
システムの開発フローは以下の通りです。
※今回は細かいソースコードや設定画面の説明は割愛しています。
(1) ChatGPT APIのトークンを取得
openaiのサイトからAPIを使うためのトークンを取得します。
ChatGPT APIを使用すると、データ量によって課金が発生するため、
この時点で上限金額などを設定することができます。
(2) PythonでLINEとChatGPTを中継するアプリを実装
今回はFlaskでのWebhookエンドポイントの実装しています。
LINEからのイベントを受信し、そのデータをChatGPT APIに送信し、応答をLINEに返送する流れを実装します。
今回はFlaskを使用して構築し、`/callback`エンドポイントを用意しました。
実装の中身としては、以下の処理を詰め込んでいます。
・LINEから受け取ったメッセージを元に、APIリクエストをChatGPTに送信する処理を実装。
ChatGPT APIのエンドポイントにリクエストを送るため、Pythonの`openai`ライブラリのChatCompletionを使います。
・LINEへ応答メッセージの返送する処理を実装。
ChatGPTから返ってきた応答をLINE Bot経由でユーザーに送信します。
ここでもLINE APIを使用して、LINEメッセージ形式での応答が必要です。
(3) AWSサーバーのセットアップ
今回は、AWSのLightsailにてインスタンスを用意。
Pythonを起動するために使用するため、Amazon Linux2でインスタンスを立てました。
インスタンス構築後、Python環境を整えます。
2で準備したFlaskアプリを設置し、中継サーバーとして起動できるようします。
ちなみにサーバーとして利用するために、SSLの準備も必要です。
※Flaskで検証やテストでの利用を推奨されているため、本番運用としてアプリを起動するにはFlaskとは別の設定が必要です。
ここまでの設定でLINEから送信されたメッセージデータを受け取れるようにしました。
LINEのイベントリクエストを受信すると、Flaskアプリケーションがそのメッセージ内容をChatGPT APIに渡します。
(4) LINE Developerの設定
まず、LINE Developerで新しいチャンネルを作成し、Webhookを有効化します。
Webhook URLを先に用意した`/callback`エンドポイントに設定することで、LINEメッセージが送信される度にそのURLにデータがPOSTされるようになります。
以上でシステムの設定は完了。
実際にLINEでチャットしたところ、自動で返信できるようになりました!
4. 工夫したポイント
– レスポンスのカスタマイズ: ChatGPTの応答内容を制御するため、プロンプト設計に工夫しました。
問い合わせ内容に合わせて柔軟な応答ができるよう、特定のキーワードに応じた返答を設定。
5. 今後の改善点
– LINEの定型返答の設定があると、定型返答とChatGPTがかぶって返信してしまうため、応答内容の制御は細かく必要。
– ChatGPTのプロンプトをもっと工夫して、会社やサービスにあった個性をもっと持たせたいです。
– 自然な会話フローの強化や会話履歴の保持など、さらに使いやすいLINE Botにするための改善。
– 多言語対応やビジネス特化のカスタマイズにも取り組んでみたいです。
– エラーハンドリング: LINEやChatGPT APIへのリクエストでエラーが発生する場合を考慮し、エラーハンドリングを強化。
終わりに
今回、ChatGPTを活用することで、高度な自然言語処理を簡単にLINE Botに組み込むことができました。
シンプルな構成ながらも、ユーザーに寄り添った応答が可能な点が非常に便利で、今後のプロジェクトにも応用していきたいと思います。