以下の内容は、方針、使用技術、ディレクトリ構成、開発フローを含む改訂版の開発マニュアルです。これにより、開発者がプロジェクトの全体像を把握しやすく、スムーズに作業を進められるようになります。
開発マニュアル(改訂版)
1. 開発方針
-
段階的に開発:
- チャットボット開発を段階的に進め、最初にプロトタイプを作成、その後に必要な機能や最適化を追加。
-
シンプルで可読性の高いコード:
- 初学者向けのシンプルで直感的なコードを心がけ、ドキュメントやコメントで理解を促進。
-
テストと自動化:
- 各段階ごとにテストを行い、自動化スクリプトやホットリロードを積極的に活用。
-
開発環境と本番環境での切り分け:
- 詳細なログを開発環境で出力し、本番環境では簡潔で重要なメッセージのみを表示。
-
効率的なエラー管理:
- 開発中のエラーは詳細なログを提供し、本番では重要なエラーのみを表示。
2. 使用技術
- Streamlit: ユーザーインターフェースの作成。直感的で簡単なUIを提供。
- FastAPI: バックエンドAPIの開発。高性能で使いやすいREST APIを作成。
- Chroma: ベクトルデータベースを利用し、検索と情報抽出を行う。
- Docker: 開発環境のコンテナ化により、開発者全員が一貫した環境で作業可能。
-
python-dotenv:
.env
ファイルで環境変数を管理、セキュリティ向上。 - uvicorn: FastAPIのサーバーを実行し、ホットリロード機能を提供。
3. ディレクトリ構成
プロジェクトのディレクトリ構成は以下の通りです:
your_project_directory/
│
├── app/ # アプリケーションコード
│ ├── __init__.py
│ ├── main.py # FastAPIアプリケーション
│ └── chatbot.py # チャットボットに関するロジック
│
├── assets/ # 静的ファイル(画像、データファイルなど)
│
├── .env # 環境変数ファイル(機密情報)
├── Dockerfile # Docker設定ファイル
├── docker-compose.yml # Docker Compose設定ファイル
├── requirements.txt # 必要ライブラリとバージョン
└── .gitignore # Gitで管理しないファイル
- app/: アプリケーションコードを格納するディレクトリ。FastAPIのエンドポイントや、チャットボットのロジックをここに実装。
- assets/: 画像やCSVファイルなど、静的なデータを格納する場所。
- .env: APIキーやデータベースURLなどの機密情報を環境変数として格納するファイル。
- Dockerfile: アプリケーションをコンテナとして動かすための設定ファイル。
- docker-compose.yml: 複数のコンテナを一括管理するための設定ファイル。
- requirements.txt: 必要なPythonパッケージとそのバージョンを記述したファイル。
4. 開発フロー
4.1 開発の準備
-
プロジェクトディレクトリに移動:
cd your_project_directory
-
仮想環境を作成し、アクティブ化:
python -m venv .venv source .venv/bin/activate # Mac/Linux .venv\Scripts\activate # Windows
-
必要なパッケージをインストール:
pip install -r requirements.txt
-
環境変数の設定:
.env
ファイルを作成し、必要な環境変数(APIキーなど)を設定。
4.2 開発プロセス
-
FastAPIエンドポイントの作成:
-
app/main.py
にAPIエンドポイントを定義。 - 例:
from fastapi import FastAPI app = FastAPI() @app.get("/chat") def get_chat_response(query: str): return {"response": "This is a sample response to your query"}
-
-
Streamlit UIの作成:
-
app/chatbot.py
でStreamlit UIを作成。 - 例:
import streamlit as st st.title('Chatbot Interface') user_input = st.text_input('Ask me something:') if user_input: st.write(f"Chatbot says: {get_chat_response(user_input)['response']}")
-
-
データベースの設定:
-
Chroma
を利用してベクトルデータベースをセットアップし、情報を検索・格納。 - 必要なモデルやデータを
chatbot.py
でロード。
-
-
テストの作成:
- 各機能の動作確認をテストコードで行います。
- 例えば、FastAPIのテストを作成:
from fastapi.testclient import TestClient client = TestClient(app) def test_get_chat_response(): response = client.get("/chat?query=Hello") assert response.status_code == 200 assert "response" in response.json()
-
開発環境でのホットリロード:
- FastAPIサーバーをホットリロードモードで起動。
-
uvicorn app.main:app --reload
4.3 Docker化
- Dockerfileとdocker-compose.ymlを用いて、開発環境をコンテナ化。
- コンテナをビルドし、起動:
docker-compose up --build
4.4 本番環境へのデプロイ
- 本番環境用にログレベルを変更し、簡潔なエラーメッセージを出力。
- 最終テストを行い、デプロイ準備完了。