こんにちは!
エル・フィールドでエンジニアとして働いているT.Hと申します。


前回は、Djangoプロジェクトのセットアップ方法についてご紹介しました。

第3回となる今回は、いよいよチャットボットの実装を行っていきます!





■連載構成


・第1回:アプリケーションの概要

・第2回:環境構築

・第3回:アプリケーションの実装

・第4回:Gemini APIのチューニング




今回やること

本記事では、Gemini APIを利用したチャットボットの実装方法をご紹介します。


  • Gemini APIキーの管理
  • Djangoアプリの作成

  • フロントエンドの作成

  • Gemini APIとの連携

  • ルーティングの設定


それでは、さっそく作業を進めていきましょう!




Gemini APIキーの管理


第2回で取得したAPIキーは、セキュリティ対策として「.env」ファイルで管理します。


① python-decoupleのインストール

次のコマンドを実行し、python-decoupleをインストールします。

pip install python-decouple




② .envファイルを作成し、APIキーを保存

プロジェクトルートに.envファイルを作成し、APIキーを定義します。

       ※「XXXXX」には取得したAPIキーを設定してください。



③ settings.pyで.envからAPIキーを読み込む

settings.pyを編集し、.envからAPIキーを読み込みます。

from pathlib import Path
from decouple import Config

# Build paths inside the project like this: BASE_DIR / ‘subdir’.
BASE_DIR = Path(__file__).resolve().parent.parent

# .env の読み込み
config = Config(BASE_DIR / “.env”)


# Gemini APIキーの取得
GEMINI_API_KEY = config(“GEMINI_API_KEY”)

※赤字箇所を追加


④ .gitignoreに.envを追加

将来的なGit利用を考慮し、.gitignoreに.envを追加しておきます。

      ※.gitignoreに定義したファイルは、Git管理の対象外になります。




Djangoアプリの作成


今回は「mychatbot」という名前でDjangoアプリを作成します。
※アプリ名は任意の名称で問題ありません。

次のコマンドを実行します。

python manage.py startapp mychatbot


コマンドを実行すると、Djangoアプリが作成されます。



INSTALLED_APPSにアプリを登録

Djangoアプリを作成したら、settings.pyのINSTALLED_APPSに追加します。

INSTALLED_APPS = [
    ‘django.contrib.admin’,
    ‘django.contrib.auth’,
    ‘django.contrib.contenttypes’,
    ‘django.contrib.sessions’,
    ‘django.contrib.messages’,
    ‘django.contrib.staticfiles’,
    ‘mychatbot’,

※赤字箇所を追加





フロントエンド(chat.html)の作成

チャットボットの画面を作成します。


今回は、質問入力欄・Geminiからの回答表示エリア・送信ボタンのみのシンプルな構成とします。


<!DOCTYPE html>
<html lang=”ja”>
<head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
    <title>Gemini Chatbot</title>
    <script src=”https://code.jquery.com/jquery-3.6.0.min.js”></script>
</head>
<body>
    <h1>Gemini チャットボット</h1>
    
    <form id=”chat-form”>
        <input type=”text” id=”question” placeholder=”質問を入力してください” size=”50″>
        <button type=”submit”>送信</button>
    </form>

    <h2>回答:</h2>
    <p id=”answer”></p>

    <script>
        $(document).ready(function(){
            $(“#chat-form”).submit(function(event){
                event.preventDefault();  // ページのリロードを防ぐ
                var question = $(“#question”).val()
                $.ajax({
                    type: “POST”,
                    url: “”,
                    data: { question: question, csrfmiddlewaretoken: “{{ csrf_token }}” },
                    success: function(response) {
                        $(“#answer”).text(response.answer);
                    },
                    error: function() {
                        $(“#answer”).text(“エラーが発生しました。”);
                    }
                });
            });
        });
    </script>
</body>
</html>





ビュー(views.py)の作成

views.pyを編集し、Gemini APIと連携する処理を実装します。 


import os
import google.generativeai as genai
from django.shortcuts import render
from django.http import JsonResponse

# 環境変数から API キーを取得
API_KEY = os.getenv(“GEMINI_API_KEY”)

# Gemini API の設定
genai.configure(api_key=API_KEY)
model = genai.GenerativeModel(“gemini-1.5-flash”)

def chat(request):
    if request.method == “POST”:
        user_input = request.POST.get(“question”, “”)  # フォームから入力データ取得

        # Gemini API に質問を送信
        response = model.generate_content(user_input)
        bot_reply = response.text if response else “エラーが発生しました。”

        # JSON 形式でレスポンスを返す(AJAX通信を想定)
        return JsonResponse({“answer”: bot_reply})

    return render(request, “chat.html”)



google.generativeaiに関する警告が表示された場合


環境によっては、google.generativeaiに関する警告が表示されることがあります。
その場合は、仮想環境を有効化したうえで、以下のコマンドを実行してください。

venv\Scripts\activate

pip install google-generativeai






ルーティング(urls.py)の設定 

Djangoでビューを呼び出せるようにするため、urls.pyを編集します。


mychatbot/urls.py(アプリ側)

from django.urls import path
from mychatbot.views import chat

urlpatterns = [
    path(“”, chat, name=”chat”),  # http://127.0.0.1:8000/chatbot/ で動作
]



chatbot/urls.py(プロジェクト側)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path(“admin/”, admin.site.urls),
    path(“chatbot/”, include(“mychatbot.urls”)),
]

※赤字箇所を追加




動作確認

実装が完了したら、さっそく動作確認を行ってみましょう!


以下のコマンドを実行してサーバーを起動します。

python manage.py runserver


以下のURLにアクセスします。

http://127.0.0.1:8000/chatbot/


質問を入力して送信ボタンをクリックすると、Gemini APIからの回答が表示されます。




以上で、Gemini APIと連携したシンプルなチャットボットの実装は完了です。


次回は、より実用的なチャットボットにするために、プロンプトの調整や応答品質の向上などのチューニングを行います。

ぜひ次回もご覧ください!👋