設定の読み込み方法
設定は、ConfigSource(agent_lab/core/config.py を参照)によって読み込まれるシンプルな辞書で、
DI コンテナにバインドされます。create_app() は default_config_source() を通じて、次の順序どおりにソースを選択します。最初に一致したものが採用されます。
| # | 条件(設定されている環境変数) | 有効なソース |
|---|---|---|
| 1 | VAULT_K8S_ROLE |
KubernetesVaultConfigSource — Pod に投影された ServiceAccount トークン経由で Vault を使用 |
| 2 | DOCKER |
YamlConfigSource("config-docker.yml") |
| 3 | TESTING |
YamlConfigSource("config-test.yml") |
| 4 | DEVELOPING |
YamlConfigSource("config-dev.yml") |
| 5 | (上記のいずれでもない) | VaultConfigSource — VAULT_URL / VAULT_TOKEN を読み込む |
アプリごとに選択を上書きすることもできます。
app = create_app(config_source=YamlConfigSource("config.yml")) # explicit設定キー
有効なソースが返す必要のある辞書です。記載のデフォルト値は config-dev.yml(開発用)のものです。リファレンスアプリには、これとまったく同じ構造の config-dev.yml、config-test.yml、
config-docker.yml が同梱されています。
| キー | 用途 | 値の例 |
|---|---|---|
api_base_url |
この API の公開ベース URL(レスポンス内のリンクに使用) | http://localhost:8000 |
cdp_url |
Web エージェント(WebAgentBase)用のヘッドレス Chrome(CDP)エンドポイント |
http://localhost:9222 |
auth.enabled |
true のとき、認証ミドルウェアと /auth ルートをマウント |
false |
auth.url |
Keycloak のベース URL | https://auth.example.com |
auth.realm |
Keycloak のレルム名 | agent-lab |
auth.client_id |
OIDC クライアント ID | agent-lab-api |
auth.client_secret |
OIDC クライアントシークレット | … |
broker.url |
長時間処理のステータス更新を Pub/Sub で配信するための Redis URL | redis://localhost:6379/0 |
db.url |
PostgreSQL — リレーショナルデータ | postgresql://postgres:postgres@localhost:5432/agent_lab |
db.vectors |
PostgreSQL — pgvector の埋め込み用データベース | postgresql://postgres:postgres@localhost:5432/agent_lab_vectors |
db.checkpoints |
PostgreSQL — LangGraph のチェックポイント(エージェントのメモリ)用データベース | postgresql://postgres:postgres@localhost:5432/agent_lab_checkpoints |
vault.url |
Vault のアドレス(サービスがシークレットを読み取れるよう書き戻しも行う) | http://localhost:8200 |
vault.token |
Vault トークン | dev-only-token |
static.enabled |
SPA ビルドを配信する(フロントエンドのビルドが存在しない場合は false) |
false |
static.directory |
SPA ビルドを含むディレクトリ | static/frontend/browser |
static.index_file |
SPA のフォールバックファイル | index.html |
static.mount_path |
SPA のマウントポイント | / |
static は特別です。YAML ソースでは明示的に設定しますが、Vault ソースではコード上の規約から導出されます。STATIC_DIR の下に SPA ビルドが存在する場合に有効になります。
Vault シークレットペイロード
VaultConfigSource は単一の KV-v2 シークレット(デフォルトではエンジン secret、パス app_secrets)を読み込み、上記のキーにマッピングします。
| シークレットキー | マッピング先 |
|---|---|
api_base_url |
api_base_url |
cdp_url |
cdp_url |
auth_enabled → auth.enabled |
auth.enabled |
auth_url → auth.url |
auth.url |
auth_realm → auth.realm |
auth.realm |
auth_client_id → auth.client_id |
auth.client_id |
auth_client_secret → auth.client_id |
auth.client_secret |
broker_url |
broker.url |
db_url |
db.url |
db_vectors |
db.vectors |
db_checkpoints |
db.checkpoints |
このペイロードのプロビジョニング方法(開発用 Docker Compose、Kubernetes、Terraform)は、 Vault によるシークレット管理とデプロイガイドで説明しています。
環境変数
設定ソースの選択
| 変数 | デフォルト | 用途 |
|---|---|---|
DEVELOPING |
(未設定) | config-dev.yml を選択(IDE でのデバッグ) |
TESTING |
(未設定) | config-test.yml を選択(テストスイート) |
DOCKER |
(未設定) | config-docker.yml を選択(Compose) |
VAULT_URL |
(未設定) | デフォルトソース用の Vault アドレス |
VAULT_TOKEN |
(未設定) | デフォルトソース用の Vault トークン |
VAULT_ENGINE_PATH |
secret |
KV-v2 のマウントポイント |
VAULT_SECRET_PATH |
app_secrets |
シークレットのパス |
VAULT_K8S_ROLE |
(未設定) | Vault の Kubernetes 認証ロール。K8s ソースを有効にし、最優先される |
STATIC_DIR |
static/frontend/browser |
SPA ビルドを探す場所 |
オブザーバビリティ
| 変数 | デフォルト | 用途 |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
(未設定 — トレース無効) | OTLP/HTTP コレクターのベース URL。トレース → /v1/traces、メトリクス → /v1/metrics、ログ → /v1/logs |
SERVICE_NAME |
Agent-Lab |
OTel のリソース名 |
SERVICE_VERSION |
snapshot |
OTel のリソースバージョン |
LANGFUSE_HOST |
(未設定) | Langfuse のベース URL。以下の 2 つのキーと組み合わせると Langfuse バックエンドが有効になる |
LANGFUSE_PUBLIC_KEY |
(未設定) | Langfuse の pk-lf-… キー |
LANGFUSE_SECRET_KEY |
(未設定) | Langfuse の sk-lf-… キー |
LANGWATCH_ENDPOINT |
(未設定) | LangWatch のエンドポイント。以下のキーと組み合わせると LangWatch バックエンドが有効になる |
LANGWATCH_API_KEY |
(未設定) | LangWatch の API キー |
Langfuse の変数のいずれかが欠けている場合、Langfuse バックエンドは何も通知されずに無効化され、アプリはそのまま起動します(LangWatch も同様です)。詳細と拡張ポイントについてはオブザーバビリティを参照してください。
認証とインテグレーション
| 変数 | デフォルト | 用途 |
|---|---|---|
AZURE_CLIENT_ID / AZURE_CLIENT_SECRET / AZURE_TENANT_ID |
(未設定) | /auth/exchange 用の Microsoft Entra ID 認証情報 |
EMBEDDINGS_ENDPOINT |
(未設定) | 検索系エージェントが使用する埋め込みサービス |
OPENAI_API_KEY |
(未設定) | OpenAI(ボイスメモの音声入力、シミュレーションのジャッジのデフォルト) |
シミュレーション(テストスイート専用)
| 変数 | デフォルト | 用途 |
|---|---|---|
SIMULATION_LLM_MODEL |
(必須) | テスト対象のエージェントを実行するモデルタグ(例:qwen3:30b) |
SIMULATION_LLM_API_BASE |
(必須) | そのモデルを提供する OpenAI 互換エンドポイント |
SIMULATION_LLM_API_KEY |
dummy-key |
エンドポイントの API キー(必要な場合) |
SIMULATION_JUDGE_MODEL |
openai/gpt-5-nano |
LLM-as-judge が使用する litellm のモデル ID |
SIMULATION_JUDGE_API_BASE |
プロバイダーのデフォルト | ジャッジ用のカスタム OpenAI 互換エンドポイント |
SIMULATION_JUDGE_API_KEY |
プロバイダーのデフォルト | カスタムジャッジエンドポイントの API キー |
これらの使われ方については、テストとシミュレーションを参照してください。
カスタム設定ソース
ConfigSource ABC を実装し、create_app(config_source=...) に渡します。
AWS Secrets Manager の利用、環境変数のみによるデプロイ、別のソースのラップなどに便利です。
from agent_lab import ConfigSource, create_app
class MyConfigSource(ConfigSource):
def load(self) -> dict:
return {
"api_base_url": "https://api.example.com",
"db": {"url": "postgresql://…", "vectors": "…", "checkpoints": "…"},
"auth": {"enabled": True, "url": "…", "realm": "…", "client_id": "…", "client_secret": "…"},
"broker": {"url": "redis://…"},
# … remaining keys as in the table above
}
app = create_app(config_source=MyConfigSource())同梱のソース(YamlConfigSource、VaultConfigSource、
KubernetesVaultConfigSource)と default_config_source() は、すべてトップレベルの
agent_lab パッケージからエクスポートされています。