尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Civic Lens — 怒りを、行政を変える力に。行政ニュースへのもやもやを情報公開請求につなげるAIエージェント(第5回 Agentic AI Hackathon with Google Cloud)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗🏆 2026年9月5日のZenn Agentic AI ミニハッカソン with Google Cloud(渋谷)で、参加者の中から選ばれました(参加申込 約200名:connpass)。コーディング時間約2時間という短時間実装での選出です。詳細は🏆 受賞歴をご覧ください。
Civic Lensは、市民が行政に対して抱く「怒り・不信・諦め」を、情報公開請求・審査請求という法的アクションに自動変換するAIエージェントです。
国の行政機関への情報公開請求は年間約21.5万件(総務省、令和6年度施行状況調査 https://www.soumu.go.jp/main_content/001033108.pdf )。市民は弁護士なしで、この制度を使いこなせるようになります。
多くの市民はニュースを見ても、心のどこかで違和感や怒りを覚えながら、それを表明する気力を失い、無関心を装うようになっている。声を上げても何も変わらない、という学習性の無力感が、行政の不透明さを温存させてしまう。
日本には公的なオンブズマン制度(行政監視官)が存在しない。Civic Lens はその機能的な空白を、AIエージェントで埋めることを目指す。市民・国民の代わりにニュースへ怒り、その怒りを情報公開請求という具体的な行動に変換する——これが本プロジェクトの中核的な理念である。
これにより、「怒ることに疲れた」市民に代わってAIが怒り、行政監視を持続可能な形で機能させることを目指す。詳細なエージェント構成は AGENTS.md を参照。
Civic Lens は、市民の「怒り・不信・諦め」を入力すると、AIが法的回答を返す:
| 市民の入力 | AI の出力 |
|---|---|
| 「許せない!腹が立つ!」 | 怒りレベル測定・条例マッチング |
| 「何百万円も使って成果が分からない」 | 開示請求書の自動生成 |
| 「不開示決定を受けた」 | 審査請求書 + 反論ロジック |
Google Cloud ADK (Agent Development Kit) を中核に構築:
| スポンサー | 役割 | 実装 |
|---|---|---|
| Google Cloud ADK + Vertex AI Agent Engine | エージェント本体 | agent.py(LlmAgent + SequentialAgent) |
| GMI Cloud (DeepSeek V4 Pro) | 開発時(試作・検証)のLLM。本番では未使用 | gmi_client.py |
| 総務省 行政不服審査裁決・答申検索データベース + Gemini Embeddings | 認容事例の実データ検索(先例の「創作」防止) | precedent_cases.py, scripts/scrape_gyofuku_cases.py, scripts/build_precedent_embeddings.py |
GMI CloudのLLMは開発時(試作・検証)にのみ使用しました。本番の実行はGemini APIで行っており、GMI Cloudは本番では使っていません。
SequentialAgent (civic_lens_integrated)
├── LlmAgent (anger_analyzer) [Gemini 2.5 Pro]
│ ├── FunctionTool: analyze_user_anger
│ ├── FunctionTool: get_ordinance_info
│ └── FunctionTool: get_situation_documents
└── LlmAgent (counter_argument_builder) [Gemini 2.5 Pro]
└── FunctionTool: get_counter_argument
反論ロジックに使う先例データは、.github/workflows/scrape-precedents.yml により週1回(サーバー負荷に配慮し高頻度にはしない)自動更新される。GitHub ActionsがPlaywrightで総務省「行政不服審査裁決・答申検索データベース」(https://fufukudb.search.soumu.go.jp/koukai/Main) を巡回して認容・一部認容事例を収集(scripts/scrape_gyofuku_cases.py)し、続けてGemini Embeddings(gemini-embedding-001)で検索用ベクトルを計算する(scripts/build_precedent_embeddings.py、既に計算済みのcase_idは再計算しないキャッシュ設計)。workflow_dispatchにより手動実行も可能。
収集データはPDL1.0(公共データ利用規約)に配慮し、裁決・答申の全文ではなくデータベースが提示する概要スニペットのみを保存し、各レコードに出典URLを必ず添付する。また、mainブランチへの直接コミット・pushは行わず、差分が生じた場合のみpeter-evans/create-pull-requestでブランチを切ってプルリクエストを作成し、人間のレビュー・マージを介す設計にしている。
civic-lens/
├── app.py # FastAPI メイン(エンドポイント定義)
├── agent.py # Gemini エージェント本体
├── ordinance_data.py # 5自治体分の条例データ
├── gmi_client.py # GMI Cloud RAG
├── precedent_cases.py # 認容事例の検索(Gemini Embeddings + Ngramフォールバック)
├── news_collector_agent.py # ニュース収集エージェント(地域名からGoogle News RSSを検索)
├── news_anger_agent.py # 怒り再現エージェント + パイプライン全体のオーケストレーション
├── news_reactions.py # ニュース怒り再現の分析結果永続化・リアクション記録
├── social_posting.py # X.com / Blueskyへのシェア用テキスト生成・投稿
├── timeout_utils.py # Gemini呼び出しのタイムアウト制御
├── scripts/
│ ├── scrape_gyofuku_cases.py # 総務省DBからの認容事例スクレイパー
│ └── build_precedent_embeddings.py # 認容事例の埋め込みベクトル生成
├── templates/
│ ├── index.html # メインユーザーインターフェース
│ └── precedent_cases.html # 認容事例 閲覧・検索ページ
├── .github/workflows/
│ └── scrape-precedents.yml # 認容事例 自動収集エージェント(定期実行)
├── requirements.txt
├── Dockerfile
└── README.md
# 1. 依存インストール
pip install -r requirements.txt
# 2. 環境変数設定
export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_CLOUD_LOCATION="asia-northeast1"
export GEMINI_API_KEY="your-gemini-api-key"
export GMI_API_KEY="your-gmi-api-key"
export YOUCAM_API_KEY="your-youcam-key"
export FIREBASE_WEB_API_KEY="your-firebase-web-api-key"
# 3. Firestoreへのアクセス権を設定(ローカル開発時のみ)
gcloud auth application-default login
# 4. 起動
uvicorn app:app --host 0.0.0.0 --port 8080
→ http://localhost:8080 でアクセス
# Dockerビルド
docker build -t gcr.io/$PROJECT_ID/civic-lens .
# Container Registryにプッシュ
docker push gcr.io/$PROJECT_ID/civic-lens
# Cloud Run デプロ
gcloud run deploy civic-lens \
--image gcr.io/$PROJECT_ID/civic-lens \
--platform managed \
--region asia-northeast1 \
--allow-unauthenticated \
--set-env-vars="GOOGLE_CLOUD_PROJECT=$PROJECT_ID"
本エージェントは弁護士法72条(非弁行為)に抵触しないよう、以下の点に留意しています:
参考: Legal AI株式会社の本人訴訟支援サービス(無料提供)は同じアプローチで弁護士法72条をクリアしている。
| 軸 | Civic Lens の強み |
|---|---|
| Technological Implementation | Gemini API・Cloud Run・Firestore による一気通貫の実装 |
| Design | 怒りメーター + 視覚的UI |
| Potential Impact | 「何を請求していいかわからない」という壁で、多くの市民が請求をあきらめています。その壁を取り除く |
| Quality of the Idea | 弁護士法72条を遵守した本人支援型エージェント |
評価されたポイント
MIT License
2026年9月5日のZenn Agentic AI ミニハッカソン with Google Cloud(渋谷)で、参加者の中から選ばれました