コンテンツにスキップ

はじめに


CopilotReportForge とは?

CopilotReportForge は、複数の LLM クエリを並列実行し、結果を構造化レポートに集約し、安全なチャネルを通じてレポートを配信する AI 自動化プラットフォームです。製品開発から医療、不動産まで、あらゆるドメインで再現可能で管理された AI 評価を必要とするエンタープライズチーム向けに設計されています。

これが解決する課題とアーキテクチャがそのように設計されている理由の詳細については、課題と解決策 を参照してください。


前提条件

要件 最小バージョン 目的
Python 3.13+ ランタイム
uv 最新 パッケージ管理
Terraform 1.0+ インフラプロビジョニング
GitHub CLI (gh) 最新 Copilot トークンの取得
Azure CLI (az) 最新 Azure 認証
Docker 最新 コンテナ実行(オプション)
Make 任意 ビルド自動化

クイックスタート(ローカル開発)

1. クローンとインストール

git clone https://github.com/ks6088ts/template-github-copilot.git
cd template-github-copilot/src/python

# 依存関係のインストール(開発ツールを含む)
make install-deps-dev

2. 環境設定

cp .env.template .env  # 設定を編集

3. GitHub Copilot で認証

# Copilot スコープ付きの GitHub PAT を設定
export COPILOT_GITHUB_TOKEN="your-github-pat"

4. Copilot CLI サーバーを起動

make copilot

ポート 3000 で Copilot CLI サーバーが起動します。

5. 最初のチャットを実行(別ターミナルで)

make copilot-app

Copilot SDK を介してホストされた LLM とのインタラクティブなチャットループが起動します。

6. レポートを生成

uv run python scripts/report_service.py generate \
  --system-prompt "You are a product evaluation specialist." \
  --queries "Evaluate durability,Evaluate usability,Evaluate aesthetics" \
  --account-url "https://<account>.blob.core.windows.net" \
  --container-name "reports"

プラットフォームはすべてのクエリを並列実行(カンマ区切り)し、結果を集約し、構造化 JSON レポートを Azure Blob Storage にアップロードします。


インフラストラクチャセットアップ

CopilotReportForge は 3 つの Terraform シナリオを使用し、順番にデプロイします。各シナリオは前のシナリオの出力に基づいています。4 番目のスタンドアロンシナリオは、アプリケーションを Azure Container Apps にデプロイします。

%%{init: {'theme': 'dark'}}%%
flowchart LR
    A["1. OIDC Setup"] --> B["2. GitHub Secrets"] --> C["3. AI Foundry"]
    D["4. Container Apps (standalone)"]

ステップ 1: OIDC フェデレーション

GitHub Actions と Azure 間のパスワードレス信頼を確立します。このステップの後、ワークフローは保存された認証情報なしで認証できます。

cd infra/scenarios/azure_github_oidc
terraform init && terraform apply

詳細は Azure GitHub OIDC README を参照してください。

ステップ 2: GitHub Secrets

OIDC 認証情報とランタイムシークレットを GitHub 環境に注入します。その環境で実行されるワークフローは自動的にアクセスできます。

cd infra/scenarios/github_secrets
terraform init && terraform apply

詳細は GitHub Secrets README を参照してください。

ステップ 3: AI Foundry(オプション)

Azure AI Hub、モデルエンドポイント、Storage Account、オプションの AI Search をデプロイします。参照データアクセス付きのドメイン固有 AI エージェントが必要な場合にのみ必要です。

cd infra/scenarios/azure_microsoft_foundry
terraform init && terraform apply

詳細は Azure Microsoft Foundry README を参照してください。

ステップ 4: Container Apps(スタンドアロン)

モノリスコンテナ(単一イメージに Copilot CLI + API サーバー)を Azure Container App としてデプロイします。compose.docker.yamlmonolith サービスをクラウドで実行するのと同等です。このステップは他の 3 つのシナリオから独立しています。

cd infra/scenarios/azure_container_apps
export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv)
terraform init && terraform apply

詳細は Azure Container Apps README を参照してください。


CLI リファレンス

すべてのツールは src/python/ から呼び出します。

Make ターゲット

プロジェクト

コマンド 機能
make copilot Copilot CLI サーバーを起動(ポート 3000)
make copilot-app Copilot SDK でインタラクティブチャットループ
make copilot-api Copilot SDK で Web API サーバーを起動

開発

コマンド 機能
make help すべての利用可能な Make ターゲットと説明を表示
make info 現在の Git リビジョンとタグを表示
make install-deps-dev 開発ツールを含むすべての依存関係をインストール
make install-deps 本番用依存関係のみインストール
make format-check コードフォーマットチェック(ruff)
make format コード自動フォーマット(ruff)
make fix 自動修正を適用(フォーマット + lint 修正)
make lint すべてのリンターを実行(ruff、ty、pyrefly、actionlint)
make test pytest でユニットテストを実行
make ci-test 完全な CI パイプライン: インストール、フォーマットチェック、lint、テスト
make update uv.lock のすべてのパッケージバージョンを更新
make jupyterlab インタラクティブ開発のために Jupyter Lab を起動

Docker

コマンド 機能
make docker-build すべての Docker イメージをビルド(monolith、api、copilot)
make docker-run monolith Docker コンテナを実行
make docker-lint hadolint ですべての Dockerfile を lint
make docker-scan Docker イメージの脆弱性スキャン(trivy)
make ci-test-docker 完全な Docker CI: lint、ビルド、スキャン、実行

Docker Compose

コマンド 機能
make compose-build Docker Compose サービスをビルド
make compose-up Docker Compose ですべてのサービスを起動(フォアグラウンド)
make compose-up-d Docker Compose ですべてのサービスを起動(バックグラウンド)
make compose-down Docker Compose サービスを停止
make compose-logs Docker Compose ログを表示

ドキュメント

コマンド 機能
make install-deps-docs ドキュメント用依存関係をインストール
make docs MkDocs でドキュメントをビルド
make docs-serve ドキュメントをローカルで配信
make ci-test-docs ドキュメントの CI テスト(インストール + ビルド)

スクリプトコマンド

スクリプト 機能
uv run python scripts/chat.py chat-loop ホストされた LLM とのインタラクティブチャット
uv run python scripts/chat.py chat --prompt "Hello" ホストされた LLM との単一プロンプトチャット
uv run python scripts/chat.py hello 挨拶を表示して設定を確認
uv run python scripts/chat.py chat-parallel -p "Q1" -p "Q2" 並列セッションで複数プロンプトを送信
uv run python scripts/report_service.py generate 並列マルチクエリレポート生成
uv run python scripts/agents.py create AI Foundry エージェントの作成
uv run python scripts/agents.py get 名前で AI Foundry エージェントを取得
uv run python scripts/agents.py list AI Foundry エージェントの一覧表示
uv run python scripts/agents.py run クエリで AI Foundry エージェントを実行
uv run python scripts/agents.py delete 名前で AI Foundry エージェントを削除
uv run python scripts/api_server.py serve Copilot Chat API サーバーを起動(FastAPI + OAuth)
uv run python scripts/blob.py list-blobs Azure Blob Storage の blob を一覧表示
uv run python scripts/blob.py upload-blob 文字列を blob として Azure Blob Storage にアップロード
uv run python scripts/blob.py generate-sas-url blob の SAS URL を生成
uv run python scripts/byok.py chat-api-key BYOK(API キー)での単一プロンプトチャット
uv run python scripts/byok.py chat-loop-api-key Bring-Your-Own-Key(API キー)でインタラクティブチャット
uv run python scripts/byok.py chat-parallel-api-key BYOK(API キー)での並列マルチプロンプトチャット
uv run python scripts/byok.py chat-entra-id BYOK(Entra ID)での単一プロンプトチャット
uv run python scripts/byok.py chat-loop-entra-id Bring-Your-Own-Key(Entra ID)でインタラクティブチャット
uv run python scripts/byok.py chat-parallel-entra-id BYOK(Entra ID)での並列マルチプロンプトチャット
uv run python scripts/slacks.py send Webhook 経由で Slack にメッセージを送信

例: マルチペルソナ評価

export COPILOT_GITHUB_TOKEN="your-github-pat"
uv run python scripts/report_service.py generate \
  --system-prompt "You are a senior product evaluator." \
  --queries "Evaluate usability,Evaluate accessibility,Evaluate performance" \
  --account-url "https://<account>.blob.core.windows.net" \
  --container-name "reports"

各カンマ区切りのクエリは独立した LLM セッションで実行されます。結果はクエリごとの成功/失敗追跡付きの単一レポートに集約されます。


設定

すべての設定は環境変数を通じて行われます。プラットフォームは構造化された設定クラスを使用して起動時に設定を検証します — 必要な変数が欠落している場合、サイレント障害ではなく明確なエラーメッセージで即座に失敗します。

主要環境変数

変数 目的
PROJECT_NAME プロジェクト名(ログと blob パスプレフィックスに使用)
PROJECT_LOG_LEVEL ログレベル(INFODEBUG など)
COPILOT_GITHUB_TOKEN Copilot スコープ付き GitHub PAT
COPILOT_MODEL Copilot CLI サーバーが使用するモデル(例: gpt-5-mini
COPILOT_CLI_URL Copilot CLI サーバー URL(空でサブプロセスを起動)
COPILOT_SEND_TIMEOUT Copilot SDK send_and_wait 呼び出しのタイムアウト秒数(デフォルト: 300
AZURE_BLOB_STORAGE_ACCOUNT_URL Azure Blob Storage アカウント URL
AZURE_BLOB_STORAGE_CONTAINER_NAME Blob コンテナ名
MICROSOFT_FOUNDRY_PROJECT_ENDPOINT Microsoft Foundry プロジェクトエンドポイント URL

OAuth 設定(Web UI)

変数 目的
GITHUB_CLIENT_ID GitHub OAuth App クライアント ID
GITHUB_CLIENT_SECRET GitHub OAuth App クライアントシークレット
SESSION_SECRET Cookie 署名用のランダムシークレット(openssl rand -hex 32 で生成)
API_HOST Web サーバーホスト(デフォルト: 127.0.0.1
API_PORT Web サーバーポート(デフォルト: 8000

プロバイダー設定(BYOK)

変数 目的
BYOK_PROVIDER_TYPE プロバイダータイプ: openaiazureanthropic
BYOK_BASE_URL モデルエンドポイントのベース URL
BYOK_API_KEY プロバイダーの API キー
BYOK_MODEL 使用するモデル名(例: gpt-5
BYOK_WIRE_API Wire API フォーマット: completions(標準 Chat Completions API)または responses(OpenAI Responses API)

完全なリストについては、template_github_copilot/settings/ の設定ファイルを参照してください。


Web アプリケーション

CopilotReportForge にはインタラクティブ利用のためのブラウザベース UI が含まれています。完全なウォークスルーについては、Web UI ガイド を参照してください。

ローカルで Web サーバーを起動するには:

make copilot-api

次にブラウザで http://localhost:8000 を開きます。Web アプリケーションは以下を提供します: - GitHub OAuth ログイン - インタラクティブチャットインターフェース - 並列レポート生成パネル - ダーク/ライトテーマ切り替え

認証設定については、GitHub OAuth App セットアップ を参照してください。


Docker での実行

コンテナ化されたデプロイメントについては、コンテナのローカル実行 を参照してください。

Docker Compose でのクイックスタート:

cd src/python
docker compose up --build

次のステップ

目的 ドキュメント
システム設計を理解する アーキテクチャ
本番環境にデプロイする デプロイ
GitHub OAuth をセットアップする GitHub OAuth App
コンテナで実行する コンテナのローカル実行
AI の安全性に関する考慮事項を理解する 責任ある AI