guinness-ai-v2 ディレクトリアーキテクチャ
V2 AI ワーカーは guinness-ai-v2 モノレポに配置されており、共有パッケージと 3 つの Lambda ベースのアプリ(design-import、code-import、des2code)を含みます。インフラストラクチャの概要(システムアーキテクチャ、データフロー、Webhook 契約)については AI インフラストラクチャ を参照してください。
リポジトリ構成
guinness-ai-v2/
packages/
agentic/
__init__.py # 再エクスポート: build_manager_agent, build_tool_agent 等
types.py # AgentDefinition, SkillDefinition(共有モデル)
orchestrator.py # build_manager_agent(), build_tool_agent() — PydanticAI
loader.py # load_agent_markdown(), discover_skills_for_app()
registry.py # スキル ID → ランタイムビルダーのマッピング
runtime.py # 共有スキルランタイムビルダー
agents/
__init__.py
vision.py # Vision エージェントビルダー + DesignDescription 出力モデル
code_gen.py # コード生成エージェントビルダー(des2code 用)
models/
documentdb/
__init__.py # initialize_collections()
design.py # DesignCollection、ベクトルインデックス作成
code.py # CodeCollection、ベクトルインデックス作成
helpers/
__init__.py
s3.py # parse_s3_url()、download_image_from_s3()、download_json_from_s3()
embedding.py # generate_embeddings() — 共有 openai SDK 埋め込みユーティリティ
webhook.py # send_webhook() — 共有 WEBHOOK_BASE_URL への HTTP POST
utils/
__init__.py
settings.py # 共有 Pydantic Settings 基底クラス
documentdb.py # 共有 DocumentDB 接続シングルトン
apps/
design_import/
src/
main.py # Lambda ハンドラー
config/
env.py # Pydantic Settings
database.py # DocumentDB 接続
schemas.py # Pydantic モデル
db.py # DocumentDB アップサート
code_import/
src/
main.py # Lambda ハンドラー
config/
env.py
database.py
schemas.py
db.py
des2code/
src/
main.py # Lambda ハンドラー
config/
env.py
database.py
schemas.py
db.py
prompt.py # マルチモーダルプロンプトビルダー
計画中の機能も同じ app 構成と命名規則に従います。apps/page-import/src/page_import は 1 ページのキャプチャを検証し、apps/code2wf/src/code2wf は完了済み Page Import を既存WF2Des DesignSpecModel に変換し、apps/page-import-cli/src/page_import_cli は信頼されたローカル/CI 環境でキャプチャを実行します。apps/page-import-cli は、既存の apps/* 規約に従い、ルートの uv workspace member に明示的に追加する必要があります。
共有パッケージ責務
| ファイル | 責務 |
|---|---|
packages/agentic/orchestrator.py |
build_manager_agent(), build_tool_agent() — 共有 PydanticAI ビルダー |
packages/agentic/agents/vision.py |
Vision エージェントビルダー + DesignDescription 出力モデル |
packages/agentic/agents/code_gen.py |
コード生成エージェントビルダー(des2code 用) |
packages/helpers/embedding.py |
generate_embeddings() — 共有 openai SDK 埋め込みユーティリティ |
packages/helpers/webhook.py |
send_webhook() — 共有 WEBHOOK_BASE_URL への HTTP POST |
packages/helpers/s3.py |
parse_s3_url(), download_image_from_s3(), download_json_from_s3() |
packages/models/documentdb/design.py |
DesignCollection, ベクトルインデックス作成 |
packages/models/documentdb/code.py |
CodeCollection, ベクトルインデックス作成 |
packages/utils/settings.py |
共有 Pydantic Settings 基底クラス |
packages/utils/documentdb.py |
共有 DocumentDB 接続シングルトン |
共有依存パッケージ
| パッケージ | 用途 |
|---|---|
openai |
OpenAI API クライアント(直 SDK で埋め込み、PydanticAI openai: プロバイダーでチャット) |
pydantic-ai |
PydanticAI — エージェントオーケストレーション、ストリーミング、プロバイダー非依存 |
pydantic |
データモデル、構造化出力 |
pydantic-settings |
環境変数設定 |
pymongo |
DocumentDB(MongoDB)ドライバー |
boto3 |
AWS SDK(S3 ダウンロード) |
loguru |
構造化ログ |
httpx |
HTTP クライアント(Webhook POST) |
環境変数
| 変数 | ワーカー | 説明 | 例 |
|---|---|---|---|
OPENAI_API_KEY |
design-import, code-import | OpenAI API キー | sk-... |
DOCUMENTDB_CONNECTION_STRING |
全ワーカー | DocumentDB 接続文字列 | mongodb://... |
DOCUMENTDB_NAME |
全ワーカー | DocumentDB データベース名 | guinness_ai |
WEBHOOK_BASE_URL |
全ワーカー | バックエンド Webhook URL(プライベート VPC) | https://api.internal/v1/webhooks/ai-status |
WEBHOOK_API_KEY |
全ワーカー | backend webhook へ X-API-Key として送る shared service key |
... |
DESC_MODEL |
design-import, code-import | Vision + キーワード抽出モデル(プロバイダー前置詞付き) | openai:gpt-5.4-nano |
EMBEDDING_MODEL |
design-import, code-import | 埋め込みモデル | text-embedding-3-large |
EMBEDDING_DIMENSIONS |
design-import, code-import | DocumentDB metadata と vector index に使う embedding dimension | 512 |
DESIGN_TABLE_NAME |
design-import, des2code | DocumentDB デザインコレクション | design |
CODE_TABLE_NAME |
code-import, des2code | DocumentDB コードコレクション | code |
RESULT_BUCKET |
des2code | timestamp 付き result artifact 用 S3 bucket | dev-guinness-backend |
DES2CODE_RESULT_TTL_DAYS |
des2code | artifact retention metadata / lifecycle expectation | 30 |
VISUAL_SIMILARITY_WEIGHT |
des2code | デュアル検索の Visual 類似度重み | 0.0 |
SEMANTIC_SIMILARITY_WEIGHT |
des2code | デュアル検索の Semantic 類似度重み | 1.0 |
S3_BUCKET_NAME |
page-import(計画中) | Page Import の source/normalized artifact を保存する S3 bucket | dev-guinness-backend |
RESULT_BUCKET |
code2wf(計画中) | Code2WF result artifact 用 S3 bucket | dev-guinness-backend |
計画中の Page Import と Code2WF worker は S3 artifact を使用し、DocumentDB には接続しません。Playwright は repository-side Page Import CLI だけで使用し、Lambda runtime には含めません。