{
  "format": "agent-article-v0",
  "article_id": "EA-175",
  "canonical_url": "/tools/ea-175-promptfoo",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-175-URL-BAF9CBCDF7E1",
    "EVD-EA-175-URL-883E1BCACE6B",
    "EA-175-CURRENT-APPROVAL",
    "EA-175-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-175-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-20",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "EA175-CANDIDATE-20261020-1433JST-C1",
    "SRC-EA-175-URL-BAF9CBCDF7E1",
    "SRC-EA-175-URL-883E1BCACE6B",
    "BODY-SHA256:8664df5620867c3f704de265e06335e14373bd1b64d9bc5ef98da0be110bf2f7"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-175-URL-BAF9CBCDF7E1",
      "evidence_class": "RESEARCH",
      "title": "promptfoo/promptfoo, author-maintained GitHub repository, accessed 2026-10-20:",
      "href": "https://github.com/promptfoo/promptfoo",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-175-URL-BAF9CBCDF7E1"
      ],
      "supporting_locators": [
        "Source / provenance",
        "- promptfoo/promptfoo, author-maintained GitHub repository, accessed 2026-10-20: https://github.com/promptfoo/promptfoo"
      ],
      "scope": "Source / provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-175-URL-883E1BCACE6B",
      "evidence_class": "RESEARCH",
      "title": "promptfoo/promptfoo Releases, 0.124.1 (2026-10-08), 0.124.0 (2026-10-06), accessed 2026-10-20:",
      "href": "https://github.com/promptfoo/promptfoo/releases",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-175-URL-883E1BCACE6B"
      ],
      "supporting_locators": [
        "Source / provenance",
        "- promptfoo/promptfoo Releases, 0.124.1 (2026-10-08), 0.124.0 (2026-10-06), accessed 2026-10-20: https://github.com/promptfoo/promptfoo/releases"
      ],
      "scope": "Source / provenance",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-175-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "EA175-CANDIDATE-20261020-1433JST-C1"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-175&revision_id=EA-175-V21-LEGACY-MIGRATION-20261003-R1&candidate_id=EA175-CANDIDATE-20261020-1433JST-C1",
        "EA-175-V21-LEGACY-MIGRATION-20261003-R1"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-175-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-20",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:8664df5620867c3f704de265e06335e14373bd1b64d9bc5ef98da0be110bf2f7"
      ],
      "supporting_locators": [
        "content/staging/EA-175.md",
        "8664df5620867c3f704de265e06335e14373bd1b64d9bc5ef98da0be110bf2f7",
        "EA-175-V21-LEGACY-MIGRATION-20261003-R1"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "要点と前提",
      "text": "Promptfooは、LLM/AIアプリケーションの評価とred teamingを自動化するOSSのCLI/ライブラリである。企業運用では「評価が通った」という結果だけを見るのではなく、target、test corpus、assertion、grader、Promptfoo version、provider/model revision、red-team plugin/strategy、data flowを固定した再現可能な証拠として扱う。\n\n2026年10月20日時点でauthor-maintained repositoryのrelease manifestとGitHub Releasesは0.124.1を示す。0.124.0（2026-10-06）ではhosted ChatKit provider削除や複数SDK/providerのopt-in化などbreaking changesが入り、0.124.1（2026-10-08）ではassertion gradingやprovider関連の修正・追加が続いている。評価harness自体の変更がexecution pathやscoreへ影響し得るため、結果artifactにはPromptfoo versionを固定する。"
    },
    {
      "heading": "評価結果の意味",
      "text": "Promptfooは決定論的assertionとmodel-graded evaluationを同じsuiteに組み込めるが、両者は同じ証拠ではない。JSON/schema/equality/regex等の決定論的判定は固定入力に対して比較的再現しやすい。一方、LLM-as-judge等のmodel-graded判定はgrader model、provider、rubric、threshold、sampling、provider側更新の影響を受ける。\n\nCI gateでは少なくとも、deterministic assertionのpass/fail、model-graded assertionのscore/pass/fail、provider/transport/runtime error、skipped/unsupported case、target model、grader model、Promptfoo version、corpus/config hashを分離して記録する。\n\ngreenになったsuiteは「その構成・そのtest envelopeで合格した」という観測であり、品質、安全性、法令適合、本番SLOの包括保証ではない。"
    },
    {
      "heading": "Red teamの境界",
      "text": "Promptfooのred teamingはplugin、strategy、target、attack generation、gradingを組み合わせる。結果は選択したplugin/strategy、attempt数、生成model、grader、target interface、生成corpusに依存する。\n\nしたがって「red teamで脆弱性が見つからなかった」を「脆弱性がない」と表現しない。未選択plugin、未探索attack path、multi-turn条件、tool/RAG権限、production-only contextは別のfailure envelopeとして残す。\n\n比較時はplugin/strategy set、generated corpus、target version、grader、attempt limitを固定または差分記録する。構成を変えた前後の単純なpass rate差をモデル品質差へ直結させない。"
    },
    {
      "heading": "Data flow / privacy",
      "text": "Promptfooのrepositoryはlocal evaluationを主要特性として掲げるが、実際のdata boundaryはtarget/provider構成に依存する。外部LLM APIをtargetまたはgraderとして使えば、その入力は当該providerへ送られる。Cloud共有、hosted機能、telemetry等を利用する構成も、単にCLIをlocal起動したことだけでは閉域と判定できない。\n\n機密用途では、target、generation、grading、embedding/moderation、telemetry、update check、Cloud機能のegressを個別にinventoryし、network observationでreadbackする。promptや評価fixtureへ本番credentialや実顧客データを無条件投入しない。"
    },
    {
      "heading": "Currentnessとversion pin",
      "text": "0.124.0ではprovider/dependency構成にbreaking changesが入った。0.124.1でもassertion処理のbug fixやprovider追加が行われている。このため旧調査時点の0.123.1をlatestとして固定し続けない。\n\nCIではversion pinとupgrade regressionを分離する。upgrade時は同一corpus、同一target/grader条件で旧versionと新versionを比較し、harness変更によるscore drift、provider loading、assertion semantics、error classificationの差を確認する。\n\nauthor-maintained repositoryは現在、PromptfooがOpenAIの一部になったことと、OSS/MIT licensingを継続することを掲示している。これは組織所有関係の変更であり、個別providerの独立性、将来roadmap、契約条件を推測する根拠にはしない。"
    },
    {
      "heading": "具体的control / implementation implication",
      "text": "1. Promptfoo versionをlockfile/container imageと結果artifactへ記録する。\n2. target model/provider revision、grader、prompt/config、test corpus、assertion threshold、red-team plugin/strategyをversioned artifactとして保存する。\n3. deterministic assertionとmodel-graded assertionを別集計する。\n4. provider error、timeout、rate limit、grader errorを品質failureと混同しない。\n5. red-team generated corpusを保存し、filtered rerunで分母が変わった場合は別runとして扱う。\n6. external/hosted inferenceを許可する環境と閉域環境を分離し、egress destinationを観測する。\n7. telemetry/update check/Cloud sharingを組織policyに応じて明示設定・検証する。\n8. upgrade時は同一corpusでregressionを実施し、harness変更によるscore driftを確認する。\n9. custom JS/Python provider/assertion等の実行コードは通常のsupply-chain/code-review対象として扱う。\n10. 評価artifactに実行日時、config/corpus hash、target/grader識別子を残す。"
    },
    {
      "heading": "Counterevidence / limitations",
      "text": "評価harnessをversion固定しても、grader modelやtarget providerが外部サービスで継続更新される場合、完全なbit-for-bit再現性は保証できない。必要に応じてresponse fixture、model snapshot/revision、provider revision、実行日時を保持する。\n\n公式repositoryやrelease noteは製品機能と変更履歴の主要根拠になるが、Promptfooが他のevaluation frameworkより高い脆弱性検出率や判定妥当性を持つことを独立に証明するものではない。DeepEval、RAGAS、Inspect AI等との比較は同一corpus・grader・metric条件で別途評価する。"
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "- Enterprise契約/SLA、tenant固有のretention、RBAC、region、support条件。\n- hosted/Cloud機能のversion別data-flow matrix。\n- 各graderのorganization-specificな妥当性とinter-rater agreement。\n- DeepEval、RAGAS、Inspect AI等との同条件での独立比較。\n- target/provider側の非公開更新が長期score比較へ与える影響。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "PromptfooはLLM/AIアプリの評価・red-teamを構成可能なOSS harnessである。pass/failやred-team scoreは、固定したtest corpus、assertion、grader、target、Promptfoo version、plugin/strategyの範囲で得られた観測であり、品質・安全性・法令適合・本番SLOの包括保証ではない。機密用途では実際のegressとdeployment modeを確認する。"
    },
    {
      "heading": "Source / provenance",
      "text": "- promptfoo/promptfoo, author-maintained GitHub repository, accessed 2026-10-20: https://github.com/promptfoo/promptfoo\n- promptfoo/promptfoo Releases, 0.124.1 (2026-10-08), 0.124.0 (2026-10-06), accessed 2026-10-20: https://github.com/promptfoo/promptfoo/releases\n- promptfoo/promptfoo `.release-please-manifest.json`, main shows 0.124.1, accessed 2026-10-20.\n- Existing EA-175 formal supplement/provenance: Drive document 1Pex_pGEmYlGDAdgBZ_hxXc1a-PjS-PlRZ-KRJfKBO_w; prior research as-of 2026-09-29."
    }
  ],
  "human_url": "/tools/ea-175-promptfoo",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-175-promptfoo",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-175-promptfoo"
}