0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

7日目の振り返りを踏まえてのネクストアクション

Posted at

以下の内容は、方針、使用技術、ディレクトリ構成、開発フローを含む改訂版の開発マニュアルです。これにより、開発者がプロジェクトの全体像を把握しやすく、スムーズに作業を進められるようになります。


開発マニュアル(改訂版)

1. 開発方針

  1. 段階的に開発:

    • チャットボット開発を段階的に進め、最初にプロトタイプを作成、その後に必要な機能や最適化を追加。
  2. シンプルで可読性の高いコード:

    • 初学者向けのシンプルで直感的なコードを心がけ、ドキュメントやコメントで理解を促進。
  3. テストと自動化:

    • 各段階ごとにテストを行い、自動化スクリプトやホットリロードを積極的に活用。
  4. 開発環境と本番環境での切り分け:

    • 詳細なログを開発環境で出力し、本番環境では簡潔で重要なメッセージのみを表示。
  5. 効率的なエラー管理:

    • 開発中のエラーは詳細なログを提供し、本番では重要なエラーのみを表示。

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 開発の準備

  1. プロジェクトディレクトリに移動:

    cd your_project_directory
    
  2. 仮想環境を作成し、アクティブ化:

    python -m venv .venv
    source .venv/bin/activate  # Mac/Linux
    .venv\Scripts\activate     # Windows
    
  3. 必要なパッケージをインストール:

    pip install -r requirements.txt
    
  4. 環境変数の設定:
    .envファイルを作成し、必要な環境変数(APIキーなど)を設定。

4.2 開発プロセス

  1. 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"}
      
  2. 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']}")
      
  3. データベースの設定:

    • Chromaを利用してベクトルデータベースをセットアップし、情報を検索・格納。
    • 必要なモデルやデータをchatbot.pyでロード。
  4. テストの作成:

    • 各機能の動作確認をテストコードで行います。
    • 例えば、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()
      
  5. 開発環境でのホットリロード:

    • FastAPIサーバーをホットリロードモードで起動。
    • uvicorn app.main:app --reload
      

4.3 Docker化

  1. Dockerfileとdocker-compose.ymlを用いて、開発環境をコンテナ化。
  2. コンテナをビルドし、起動:
    docker-compose up --build
    

4.4 本番環境へのデプロイ

  1. 本番環境用にログレベルを変更し、簡潔なエラーメッセージを出力。
  2. 最終テストを行い、デプロイ準備完了。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?