blueprint.yamlとは
blueprint.yamlはNemoClawの動作を定義する中心的な設定ファイルです。AIエージェントが「どのモデルを使うか」「どのファイルにアクセスできるか」「どのAPIを呼び出せるか」「どのような制約を設けるか」のすべてをYAML形式で記述します。
blueprint.yamlはプロジェクトルートに配置します。nemoclaw serveコマンドはデフォルトでこのファイルを参照します。別のファイルを指定する場合はnemoclaw serve --blueprint path/to/custom.yamlと記述します。
ファイルの最上位構造は以下の通りです。
# blueprint.yaml の最上位構造
version: "1.0" # blurintスキーマバージョン
profile: cloud # 推論プロファイル(必須)
model: {...} # モデル設定(必須)
sandbox: {...} # サンドボックスポリシー(推奨)
memory: {...} # メモリ・会話履歴設定
tools: [...] # 外部ツール定義
guardrails: {...} # ガードレール設定
logging: {...} # ログ設定
debug: {...} # デバッグ設定 profile / model セクション
推論プロファイルとモデルパラメータを定義します。
profile の設定値
| 値 | 使用モデル | GPU要件 | 用途 |
|---|---|---|---|
cloud | Nemotron 3 Super 120B(NVIDIA APIクラウド) | 不要 | 最高精度・汎用 |
local-nim | Nemotron 3 Super 120B(ローカルNIMコンテナ) | A100/H100以上推奨 | データ主権・オンプレミス |
local-nano | Nemotron 3 Nano 30B(ローカルvLLM) | RTX 4090以上 | 低コスト・低遅延 |
model セクションの全パラメータ
model:
# --- 必須 ---
provider: nvidia # "nvidia"(クラウド)| "local"(ローカル)
name: nemotron-3-super-120b # モデル識別子
# --- 認証(cloudプロファイル時は必須) ---
api_key: "${NVIDIA_API_KEY}" # 環境変数参照推奨
# --- ローカルプロファイル時 ---
device: cuda:0 # 使用GPUデバイス
nim_image: "nvcr.io/nim/nvidia/nemotron-3-super-120b:latest"
nim_port: 8000
# --- 生成パラメータ(全プロファイル共通) ---
temperature: 0.7 # 0.0〜2.0(高いほど創造的、低いほど決定的)
max_tokens: 4096 # 最大出力トークン数
top_p: 0.9 # nucleus samplingの閾値
top_k: 50 # top-k samplingのk値
frequency_penalty: 0.0 # 繰り返しトークンへのペナルティ(-2.0〜2.0)
presence_penalty: 0.0 # 新規トピックへの誘導(-2.0〜2.0)
# --- タイムアウト ---
request_timeout: 60 # APIリクエストのタイムアウト(秒)
connect_timeout: 10 # 接続タイムアウト(秒)
| パラメータ | 推奨値(カスタマーサポートBot) | 推奨値(コード生成) | 推奨値(創作・要約) |
|---|---|---|---|
| temperature | 0.3 | 0.1 | 0.8 |
| max_tokens | 1024 | 4096 | 2048 |
| top_p | 0.9 | 0.95 | 0.9 |
sandbox セクション
OpenShellランタイムのサンドボックスポリシーを定義します。エージェントがアクセスできるリソースの範囲を制御する最重要セクションです。
filesystem(ファイルシステムポリシー)
sandbox:
enabled: true # サンドボックスの有効化(本番では必ず true)
filesystem:
# --- allowリスト(許可するパス) ---
allow:
- "./workspace/" # 相対パス(プロジェクトルート基準)
- "./prompts/"
- "/var/app/data/" # 絶対パスも使用可能
# --- denyリスト(明示的に禁止するパス) ---
# allow より deny が優先される
deny:
- "./.env" # シークレットファイルを明示的に禁止
- "./workspace/logs/" # ログの上書きを禁止
- "/etc/"
- "/home/"
- "/root/"
- "/var/log/"
# --- 操作種別の制限 ---
read_only: false # true にすると書き込みを全面禁止
max_file_size: 52428800 # 単一ファイルの最大サイズ(50MB = 50*1024*1024)
allowed_extensions: # 許可する拡張子(空の場合は全て許可)
- ".txt"
- ".csv"
- ".json"
- ".pdf" network(ネットワークポリシー)
sandbox:
network:
# --- allowリスト(許可するドメイン・IP)---
allow:
- "api.stripe.com" # 特定ドメイン
- "*.internal.company.com" # ワイルドカード(サブドメイン)
- "192.168.1.100" # 特定IP
- "192.168.1.0/24" # CIDRブロック
# --- denyリスト ---
deny:
- "*" # 全ての外部通信を禁止(最後に記述)
# --- ポート制限 ---
allow_ports:
- 443 # HTTPS
- 8080 # カスタムAPI
# --- DNS設定 ---
dns_resolver: "8.8.8.8" # カスタムDNSリゾルバー(オプション)
# --- プロキシ ---
http_proxy: "http://proxy.internal:3128" # 企業プロキシ経由
https_proxy: "http://proxy.internal:3128"
no_proxy: "localhost,127.0.0.1,.internal"
deny: ["*"]を設定するとallow リストに記載したドメイン以外への通信を全て遮断します。機密性の高い業務でのエージェントには必ず設定してください。
process(プロセス実行ポリシー)
sandbox:
process:
# --- 許可するコマンド ---
allow_commands:
- "python3"
- "node"
- "curl" # ネットワークポリシーと組み合わせて制御
# --- 禁止するコマンド ---
deny_commands:
- "rm"
- "sudo"
- "su"
- "chmod"
- "chown"
- "dd"
- "mkfs"
# --- リソース制限 ---
max_cpu_percent: 80 # CPU使用率の上限
max_memory_mb: 4096 # メモリ使用量の上限(MB)
max_execution_time: 30 # 1コマンドの最大実行時間(秒)
max_concurrent_processes: 5 # 同時実行プロセス数の上限 secrets セクション(シークレット管理)
APIキーやパスワードなどの機密情報をblueprint.yamlにハードコードしないために、secretsセクションを使用します。
secrets:
# --- 環境変数から読み込み(推奨)---
- name: NVIDIA_API_KEY
from_env: NVIDIA_API_KEY
- name: DB_PASSWORD
from_env: DATABASE_PASSWORD
# --- ファイルから読み込み ---
- name: SSL_CERT
from_file: "/etc/ssl/certs/app.pem"
# --- HashiCorp Vaultから読み込み(エンタープライズ向け)---
- name: STRIPE_SECRET_KEY
from_vault:
address: "https://vault.internal:8200"
path: "secret/data/myapp/stripe"
key: "secret_key"
token_env: VAULT_TOKEN
# --- AWS Secrets Managerから読み込み ---
- name: CRM_API_KEY
from_aws_secrets:
region: "ap-northeast-1"
secret_id: "prod/myapp/crm-api-key"
key: "api_key"
定義したシークレットは${SECRET_NAME}構文でblueprintの他のセクションから参照できます。
model:
api_key: "${NVIDIA_API_KEY}" # secretsで定義した名前を参照
tools:
- name: payment_tool
env:
STRIPE_KEY: "${STRIPE_SECRET_KEY}" guardrails セクション
NemoGuardrailsを使ったコンテンツポリシーの設定です。エージェントの発言・行動を制約します。
guardrails:
enabled: true
# --- トピック制御 ---
topics:
allow:
- "ITサポート"
- "社内システムの操作"
deny:
- "競合他社の推薦"
- "医療・法律の専門的アドバイス"
- "政治的発言"
# --- PII(個人情報)検出 ---
pii_detection:
enabled: true
entities:
- "PERSON" # 人名
- "EMAIL_ADDRESS" # メールアドレス
- "PHONE_NUMBER" # 電話番号
- "CREDIT_CARD" # クレジットカード番号
- "JP_MY_NUMBER" # マイナンバー
action: "redact" # "block"(応答を止める)| "redact"(マスク)| "warn"(警告)
replacement: "[REDACTED]"
# --- プロンプトインジェクション防御 ---
injection_guard:
enabled: true
sensitivity: "medium" # "low" | "medium" | "high"
# --- 有害コンテンツフィルタ ---
content_filter:
enabled: true
categories:
violence: true
hate_speech: true
sexual_content: true
threshold: 0.7 # 0.0〜1.0(高いほど厳格)
# --- カスタムルール(Colangフォーマット)---
custom_rules_file: "./guardrails/custom_rules.co" logging / debug セクション
ログとデバッグの設定です。本番環境と開発環境で設定を分けることを推奨します。
logging:
level: info # "debug" | "info" | "warn" | "error"
file: "./workspace/nemoclaw.log"
format: "json" # "json"(構造化ログ)| "text"(人間可読)
max_size_mb: 100 # ローテーションサイズ
max_backups: 5 # 保持するバックアップ数
compress: true # バックアップをgzip圧縮
# --- 記録するイベント種別 ---
events:
tool_calls: true # ツール呼び出しを記録
model_requests: false # モデルへのプロンプト全文(機密リスクあり、本番false推奨)
model_responses: false # モデルの応答全文(同上)
sandbox_violations: true # サンドボックス違反を必ず記録
guardrail_triggers: true # ガードレール発動を必ず記録
debug:
enabled: false # 本番では必ず false
verbose_errors: false # 詳細エラーメッセージの表示(本番 false)
dry_run: false # true にするとツール呼び出しをシミュレーションのみ(テスト用)
trace_id_header: "X-Trace-ID" # 分散トレーシング用ヘッダー
model_requestsやmodel_responsesをtrueにするとプロンプト全文がログに記録されます。個人情報が含まれる可能性があるため、本番環境では必ずfalseにしてください。
環境別設定の上書き(override)
同一blueprintで開発・ステージング・本番の設定を切り替えるには、overridesセクションを活用します。
# blueprint.yaml(環境別オーバーライド対応版)
profile: cloud
model:
provider: nvidia
name: nemotron-3-super-120b
api_key: "${NVIDIA_API_KEY}"
temperature: 0.7
sandbox:
enabled: true
logging:
level: info
# --- 環境別の上書き設定 ---
overrides:
development:
model:
temperature: 1.0 # 開発時は創造性を高める
sandbox:
enabled: false # 開発時はサンドボックス無効
debug:
enabled: true
verbose_errors: true
logging:
level: debug
staging:
sandbox:
enabled: true
debug:
enabled: true
dry_run: true # ステージングではツール呼び出しをドライラン
production:
model:
temperature: 0.3 # 本番は一貫性重視
sandbox:
enabled: true
debug:
enabled: false
logging:
level: warn
# 環境を指定して起動
APP_ENV=production nemoclaw serve
APP_ENV=development nemoclaw serve