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要件用途
cloudNemotron 3 Super 120B(NVIDIA APIクラウド)不要最高精度・汎用
local-nimNemotron 3 Super 120B(ローカルNIMコンテナ)A100/H100以上推奨データ主権・オンプレミス
local-nanoNemotron 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)推奨値(コード生成)推奨値(創作・要約)
temperature0.30.10.8
max_tokens102440962048
top_p0.90.950.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_requestsmodel_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