kina006097 commited on
Commit
4cbfa8c
·
1 Parent(s): 2f9f437

ドキュメントの更新

Browse files
README.md CHANGED
@@ -9,35 +9,37 @@ app_file: app.py
9
  pinned: false
10
  ---
11
 
12
- # kids-playground-ai-api
13
 
14
  ## 概要
15
 
16
- 本プロジェクトは、「親子で遊ぼうナビ」アプリケーションにAIを活用した**口コミの自動要約機能**を提供するAI APIです。Hugging Face SpacesとGradioを基盤として構築されており、ユーザーが施設の評判を素早く把握できるよう支援します。
17
 
18
- ## 機能概要
19
 
20
- * **口コミの自動要約:** 施設の口コミをAIが分析し、「ポジティブな点」と「注意が必要な点」などをまとめた中立的な要約文を生成します。
21
- * **API提供:** Djangoアプリケーションから利用可能なAPIエンドポイントとして機能します。
22
- * **Gradio UI:** 開発・デバッグ用に、ブラウザから直接操作できるGradioのデモUIを提供します。
23
 
24
  ## 技術スタック
25
 
26
- * **AIフレームワーク:** Hugging Face Transformers
27
- * **APIフレームワーク:** Gradio
28
- * **言語:** Python 3.12
29
- * **開発環境:** Docker, Docker Compose
30
- * **品質管理:** Ruff (Linter/Formatter), Mypy (Type Checker), pre-commit (Git Hooks)
31
 
32
- ## 開発環境のセットアップ
 
 
33
 
34
- 本プロジェクトはDockerベースで構築されており、以下の手順で開発環境をセットアップできます。
35
 
36
  ### 前提条件
37
 
38
- * Docker Desktopがインストールされ、起動していること。
39
 
40
- ### 手順
41
 
42
  1. **リポジトリのクローン:**
43
  ```bash
@@ -46,44 +48,69 @@ pinned: false
46
  ```
47
 
48
  2. **環境変数の設定:**
49
- `.env.example`を参考に、`.env`ファイルを作成し、必要な環境変数を設定します。
50
  ```bash
51
  cp .env.example .env
52
- # 必要に応じて .env ファイルを編集
53
  ```
54
 
55
- 3. **Docker環境の構築と起動:**
56
  ```bash
57
  docker-compose up --build -d
58
  ```
59
- これにより、必要な依存関係がインストールされ、Gradioアプリケーションがコンテナ内で起動します。
60
 
61
  4. **`pre-commit`フックのインストール:**
62
- Gitコミット時にコード品質チェックが自動で実行されるように、`pre-commit`フックをインストールします。
63
  ```bash
64
- docker-compose exec api bash
65
- pre-commit install
66
- exit
67
  ```
68
 
69
- ## アプリケーションへのアクセス
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
- 開発環境が起動したら、ブラウザから以下のURLでGradioのデモUIにアクセスできます。
72
 
73
- * **Gradio UI:** `http://localhost:7860`
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
  ## テストの実行
76
 
77
- *(このセクションは、テストが実装された後に追記します。)*
78
 
79
- ## 貢献
 
 
80
 
81
- 貢献を歓迎します!コントリビューションガイドラインについては、別途ドキュメントを参照してください。
82
 
83
- ## ライセンス
84
 
85
- *(このセクションは、ライセンスが決定された後に追記します。)*
86
 
87
- ## 連絡先
88
 
89
- ご質問やご提案がありましたら、GitHub Issuesをご利用ください。
 
9
  pinned: false
10
  ---
11
 
12
+ # 口コミ要約AI API
13
 
14
  ## 概要
15
 
16
+ 本プロジェクトは、「親子で遊ぼうナビ」アプリケーションにAIを活用した**口コミの自動要約機能**を提供するAPIです。Hugging Face SpacesとGradioを基盤として構築されており、ユーザーが施設の評判を素早く把握できるよう支援します。
17
 
18
+ ## 主な機能
19
 
20
+ - **口コミの自動要約:** 施設の口コミテキストを受け取り、AIが分析して中立的な要約文を生成します。
21
+ - **パスワード認証:** 環境変数で設定されたパスワードにより、APIへのアクセスを保護します。
22
+ - **Gradio UI:** 開発・デバッグ用に、ブラウザから直接操作できるGradioのデモUIを提供します。
23
 
24
  ## 技術スタック
25
 
26
+ - **AIフレームワーク:** Hugging Face Transformers
27
+ - **APIフレームワーク:** Gradio
28
+ - **言語:** Python 3.12
29
+ - **開発環境:** Docker, Docker Compose
30
+ - **品質管理:** Ruff (Linter/Formatter), Mypy (Type Checker), pre-commit (Git Hooks)
31
 
32
+ ---
33
+
34
+ ## ローカル開発環境のセットアップ
35
 
36
+ 本プロジェクトはDockerを用いて、OSに依存しない開発環境を構築します。
37
 
38
  ### 前提条件
39
 
40
+ - [Docker](https://www.docker.com/) および [Docker Compose](https://docs.docker.com/compose/) がインストールされ、起動していること。
41
 
42
+ ### セットアップ手順
43
 
44
  1. **リポジトリのクローン:**
45
  ```bash
 
48
  ```
49
 
50
  2. **環境変数の設定:**
51
+ `.env.example`ファイルをコピーして`.env`ファイルを作成し、後述の「環境変数」セクションを参考に内容を編集します。
52
  ```bash
53
  cp .env.example .env
 
54
  ```
55
 
56
+ 3. **Dockerコンテナのビルドと起動:**
57
  ```bash
58
  docker-compose up --build -d
59
  ```
60
+ これにより、必要なライブラリがインストールされ、Gradioアプリケーションがコンテナ内で起動します。
61
 
62
  4. **`pre-commit`フックのインストール:**
63
+ Gitコミット時にコード品質チェックを自動実行するため、`pre-commit`フックをインストールします。
64
  ```bash
65
+ docker-compose exec api pre-commit install
 
 
66
  ```
67
 
68
+ ---
69
+
70
+ ## 環境変数
71
+
72
+ 本アプリケーションは、`.env`ファイルまたは実行環境の環境変数から以下の設定を読み込みます。
73
+
74
+ | 変数名 | 説明 | デフォルト値・例 |
75
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
76
+ | `GRADIO_PASSWORD` | APIとGradioデモUIを保護するためのパスワード。設定しない場合、認証は無効になります。 | `your_strong_password_here` |
77
+ | `AI_MODEL_NAME` | (オプション)要約に使用するHugging Faceモデルの名前。指定しない場合、コード内で定義されたデフォルトモデルが使用されます。 | `llm-jp/t5-small-japanese-finetuned-sum` |
78
+
79
+ ---
80
+
81
+ ## アプリケーションの実行とアクセス
82
 
83
+ `docker-compose up`を実行すると、APIサーバーが起動します。
84
 
85
+ - **GradioデモUI:** `http://localhost:7860`
86
+ - ブラウザでアクセスすると、パスワード認証が求められます。`.env`で設定した`GRADIO_PASSWORD`を入力してください。
87
+
88
+ ### APIの認証と利用
89
+
90
+ APIはパスワードで保護されています。クライアントからAPIを呼び出す際は、以下の情報が必要です。
91
+
92
+ - **エンドポイントURL:** `http://localhost:7860` (またはデプロイ先のURL)
93
+ - **ユーザー名:** `gemini` (固定)
94
+ - **パスワード:** `GRADIO_PASSWORD`で設定した値
95
+
96
+ クライアント(例: `gradio_client`)では、このユーザー名とパスワードを使って認証を行います。
97
+
98
+ ---
99
 
100
  ## テストの実行
101
 
102
+ `pytest`を使用してテストを実行します。以下のコマンドで、コンテナ内のすべてのテストを実行できます。
103
 
104
+ ```bash
105
+ docker-compose exec api pytest
106
+ ```
107
 
108
+ ## デプロイ
109
 
110
+ このアプリケーションは、Hugging Face Spacesへのデプロイを想定して構成されています。リポジトリをHugging Faceにプッシュすると、自動的にビルドとデプロイが実行されます。
111
 
112
+ 本番環境では、Hugging Faceの**Repository secrets**に`GRADIO_PASSWORD`を設定して、APIを保護してください。
113
 
114
+ ## ライセンス
115
 
116
+ 本プロジェクトは **MIT License** の下で公開されています。詳細は[LICENSE](LICENSE)ファイルをご覧ください。
docs/ai_api_development_guide.md CHANGED
@@ -205,16 +205,17 @@ AI新機能の開発においては、以下のコーディング規約と開発
205
 
206
  ### 7.1. API認証
207
 
208
- **課題:** Hugging Face Spacesで公開されるAPIは、デフォルトでは誰でもアクセス可能な状態になります。意図しない利用や攻撃を防ぐため、Djangoアプリケーションからのみリクエストを受け付けるように制御する必要があります。
209
-
210
- **対策:** APIキーによる認証を導入します。
211
- 1. **APIキーの生成:** UUIDなどで推測困難な文字列をAPIキーとして生成します。
212
- 2. **Secretsへの登録:** 生成したキーを、DjangoとGradio APIの両方の環境変数(Hugging Face SpacesのSecrets)として登録します。
213
- - `AI_API_KEY`: Gradio側でリクエストを検証するためのキー
214
- - `DJANGO_AI_API_KEY`: Djangoがリクエスト時に送信するキー
 
215
  3. **認証の実装:**
216
- - **Django側:** APIを呼び出す際、HTTPヘッダー(例: `Authorization: Bearer <APIキー>`)にAPIキーを含めて送信します。
217
- - **Gradio側:** FastAPIの依存性注入(`Depends`)などを利用して、リクエストヘッダーをチェックする認証関数を定義します。APIキーが一致しない場合は、HTTP 401または403エラーを返却します。
218
 
219
  ### 7.2. その他の対策
220
 
 
205
 
206
  ### 7.1. API認証
207
 
208
+ **課題:** Hugging Face Spacesで公開されるAPIは、デフォルトでは誰でもアクセス可能な状態になります。意図しない利用や攻撃を防ぐため、認証を導入する必要があります。
209
+
210
+ **対策:** Gradioが標準で提供するパスワード認証機能を利用します。
211
+ 1. **認証情報の設定:**
212
+ - `GRADIO_PASSWORD`: APIを保護するためのパスワードを環境変数で設定します。
213
+ 2. **Secretsへの登録:**
214
+ - **APIサーバー側 (Hugging Face):** `GRADIO_PASSWORD`の値を、Hugging Face SpacesのSecretsに登録します。
215
+ - **クライアント側 (Renderなど):** 同じパスワードを、クライアントアプリケーションの環境変数 `AI_SUMMARY_API_KEY` として登録します。
216
  3. **認証の実装:**
217
+ - **Gradio側:** `iface.launch(auth=(username, password))` の形式で認証を有効にします。ユーザー名は現在 `gemini` で固定されており、パスワードは環境変数から読み込まれます。
218
+ - **クライアント側:** `gradio_client`を利用する際、`auth=("gemini", api_key)` のように認証情報を渡してAPIを呼び出します。
219
 
220
  ### 7.2. その他の対策
221
 
docs/github_actions_hf_spaces_integration.md CHANGED
@@ -31,6 +31,18 @@ GitHub ActionsからHugging Face Spacesにアクセスするために、アク
31
  * 「New repository secret」をクリックし、**Name**を `HF_TOKEN`、**Secret**にコピーしたトークンを貼り付けて登録します。
32
  * **`genemicli`との連携:** `genemicli`は、この`HF_TOKEN`の登録方法を丁寧に案内してくれました。
33
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  ### 5. GitHub Actionsワークフローの作成
35
 
36
  GitHubリポジトリのルートに `.github/workflows/sync-to-space.yml` というファイルを作成し、以下の内容を記述します。このワークフローは、GitHubの`main`ブランチへのプッシュをトリガーにして、Spaceのコンテンツを自動で更新します。
 
31
  * 「New repository secret」をクリックし、**Name**を `HF_TOKEN`、**Secret**にコピーしたトークンを貼り付けて登録します。
32
  * **`genemicli`との連携:** `genemicli`は、この`HF_TOKEN`の登録方法を丁寧に案内してくれました。
33
 
34
+ ### 4.5. アプリケーション用Secretsの登録 (Hugging Face Spaces側)
35
+
36
+ `HF_TOKEN`はGitHub Actionsがデプロイを行うために必要なトークンですが、デプロイされた**アプリケーション自体**が実行時に必要とする機密情報(APIキーやパスワードなど)は、Hugging Face Spaces側で設定する必要があります。
37
+
38
+ 今回のプロジェクトでは、APIを保護するための`GRADIO_PASSWORD`が必要です。
39
+
40
+ * Hugging Face Spaceの「Settings」ページに移動します。
41
+ * 「Variables and Secrets」セクションで、「New secret」をクリックします。
42
+ * **Name**を `GRADIO_PASSWORD`、**Value**に設定したいパスワードを入力して登録します。
43
+
44
+ これにより、アプリケーションは安全にパスワードを読み込んで認証を有効にすることができます。
45
+
46
  ### 5. GitHub Actionsワークフローの作成
47
 
48
  GitHubリポジトリのルートに `.github/workflows/sync-to-space.yml` というファイルを作成し、以下の内容を記述します。このワークフローは、GitHubの`main`ブランチへのプッシュをトリガーにして、Spaceのコンテンツを自動で更新します。