Commit
·
4cbfa8c
1
Parent(s):
2f9f437
ドキュメントの更新
Browse files- README.md +60 -33
- docs/ai_api_development_guide.md +10 -9
- docs/github_actions_hf_spaces_integration.md +12 -0
README.md
CHANGED
@@ -9,35 +9,37 @@ app_file: app.py
|
|
9 |
pinned: false
|
10 |
---
|
11 |
|
12 |
-
#
|
13 |
|
14 |
## 概要
|
15 |
|
16 |
-
本プロジェクトは、「親子で遊ぼうナビ」アプリケーションにAIを活用した**口コミの自動要約機能**を提供する
|
17 |
|
18 |
-
##
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
|
24 |
## 技術スタック
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
|
32 |
-
|
|
|
|
|
33 |
|
34 |
-
本プロジェクトはDocker
|
35 |
|
36 |
### 前提条件
|
37 |
|
38 |
-
|
39 |
|
40 |
-
###
|
41 |
|
42 |
1. **リポジトリのクローン:**
|
43 |
```bash
|
@@ -46,44 +48,69 @@ pinned: false
|
|
46 |
```
|
47 |
|
48 |
2. **環境変数の設定:**
|
49 |
-
`.env.example
|
50 |
```bash
|
51 |
cp .env.example .env
|
52 |
-
# 必要に応じて .env ファイルを編集
|
53 |
```
|
54 |
|
55 |
-
3. **Docker
|
56 |
```bash
|
57 |
docker-compose up --build -d
|
58 |
```
|
59 |
-
|
60 |
|
61 |
4. **`pre-commit`フックのインストール:**
|
62 |
-
Git
|
63 |
```bash
|
64 |
-
docker-compose exec api
|
65 |
-
pre-commit install
|
66 |
-
exit
|
67 |
```
|
68 |
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
72 |
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
## テストの実行
|
76 |
|
77 |
-
|
78 |
|
79 |
-
|
|
|
|
|
80 |
|
81 |
-
|
82 |
|
83 |
-
|
84 |
|
85 |
-
|
86 |
|
87 |
-
##
|
88 |
|
89 |
-
|
|
|
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
|
209 |
-
|
210 |
-
**対策:**
|
211 |
-
1.
|
212 |
-
|
213 |
-
|
214 |
-
- `
|
|
|
215 |
3. **認証の実装:**
|
216 |
-
- **
|
217 |
-
-
|
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のコンテンツを自動で更新します。
|