
AttackGenは、大規模言語モデルの能力と包括的なMITRE ATT&CKフレームワークを活用する、サイバーセキュリティのインシデント対応テストツールです。このツールは、ユーザーが選択した脅威アクターグループと組織の詳細に基づいて、カスタマイズされたインシデント対応シナリオを生成します。
# AttackGen AttackGenは、大規模言語モデルの力と、包括的なMITRE ATT&CKおよびATLASフレームワークを活用したサイバーセキュリティインシデント対応テストツールです。このツールは、ユーザーが選択した脅威アクターグループ、AI攻撃のケーススタディ、および組織の詳細に基づいて、カスタマイズされたインシデント対応シナリオを生成します。 ## 目次 - [リポジトリにスターを付ける](#star-the-repo) - [機能](#features) - [リリース](#releases) - [要件](#requirements) - [インストール](#installation) - [LangSmithのセットアップ](#langsmith-setup) - [データのセットアップ](#data-setup) - [AttackGenの実行](#running-attackgen) - [MCPサーバー](#mcp-server) - [エージェントスキル](#agent-skills) - [使用方法](#usage) - [セキュリティのベストプラクティス](#security-best-practices) - [コントリビューション](#contributing) - [ライセンス](#licence) ## リポジトリにスターを付ける AttackGenが役に立つと思われた方は、GitHubでリポジトリにスターを付けていただけると幸いです。これにより、より多くの人がこのツールを見つけられるようになります。皆様のご支援に心より感謝いたします! ⭐ ## 機能 - 選択した脅威アクターグループまたはATLASケーススタディに基づいて、独自のインシデント対応シナリオを生成します。 - 組織の規模と業種を指定して、カスタマイズされたシナリオを作成できます。 - MITRE ATT&CK Enterprise、ICS(産業制御システム)、およびATLAS(AIシステムの敵対的脅威ランドスケープ)フレームワークをサポートします。 - 選択した脅威アクターグループまたはケーススタディで使用されるテクニックの詳細なリストを表示します。 - ATT&CKまたはATLASのテクニックの選択に基づいてカスタムシナリオを作成します。 - シナリオテンプレートを使用して、AI/ML固有の攻撃パターンを含む一般的なサイバーインシデントの種類に基づいたカスタムシナリオをすばやく生成します。 - **AIインサイダー脅威シナリオ**を生成します。これは、組織内に展開されたフロンティアAIエージェントがインサイダー脅威として振る舞うインシデント対応演習であり、[*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk)の脅威モデルに基づいています。シナリオは、エージェントの展開アーキタイプ(自律性レベル)、脅威カテゴリ、STRIDE脅威、およびオプションの自由記述シナリオシードによって形作られます。 - AttackGen Assistant - 生成されたシナリオの更新や質問を行うためのチャットインターフェースで、シナリオの元のページに直接戻るルートを備えています。 - ガイド付きセットアップ:すべてのページに同じ**Setup**サイドバーが表示され、未完了の要件がすべて1つの準備状況サマリーに一覧表示され、ワークフローの準備が整うまで**Generate**が無効のままになります。 - 結果はセッション中保持されます。各シナリオページは、再実行やナビゲーションを経ても最新の結果、キャプチャされた入力、ダウンロードをそれぞれ保持し、明示的な**Regenerate**または**Clear result**によってのみ置き換えまたは削除されます。 - 長いシナリオには、コンパクトなサマリーとセクションナビゲーションが付属し、ファシリテーターが演習を実施する際に使用するインジェクト、成功基準、メトリクス、成果物、エンゲージメントルールへのショートカットを含みます。 - 生成されたシナリオの品質に関するユーザーフィードバックを収集します。 - 検出と対応のコンパニオン:シナリオのテクニックについて、AttackGenは一致するATT&CK検出戦略、分析、ログソース、緩和策を一覧表示し、別の`_detection.md`ファイルとしてダウンロードできます。 - 脅威グループおよびカスタムシナリオ用のATT&CK Navigatorレイヤーのダウンロードにより、シナリオのテクニックを[ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/)で表示できます。 - 脅威グループページとカスタムページのオプショントグル:**AI-enhanced adversary**は同じキルチェーンをAI加速型として再構成し、**Purple-team narrative**は提供された検出と緩和策から構築されたステージごとの防御側のウォークスルーを追加します。 - Markdown形式でダウンロード可能なシナリオに加え、検出レポートとNavigatorレイヤー。 - キルチェーン、検出レポート、Navigatorレイヤー、シナリオ生成をエージェントクライアントに公開するMCPサーバー(`attackgen-mcp`)に加え、その出力をファシリテーター対応のテーブルトップ演習に変換する`attackgen-tabletop` Agent Skill。 - OpenAI API、Anthropic API(Claudeモデル)、Google AI API、Mistral API、Groq API、または任意のカスタムOpenAI互換エンドポイント(Ollama、LM Studio、Azure OpenAI、OpenRouterなど)を使用してインシデント対応シナリオを生成します。すべてのプロバイダーは単一の内部ラッパーの背後で[LiteLLM](https://github.com/BerriAI/litellm)を介してルーティングされるため、新しいモデルの追加は1行の変更で済みます。 - 簡単にデプロイできるDockerコンテナイメージとして利用可能です。 - モデルパフォーマンスの強力なデバッグ、テスト、監視のための[LangSmith](https://docs.smith.langchain.com/)とのオプション統合。 - APIキーとシークレットに.envファイルを使用した安全な認証情報管理。  ## リリース ### v0.17 | 新機能 | 何が便利になるのか | | ----------- | ----------------- | | アシスタントの改善内容をダウンロードに適用 | - 変更がファイルに反映される: これまでアシスタントのチャットは会話を洗練させるだけで、シナリオやDetection & Responseのダウンロードは変わりませんでした。新しい **Apply changes to downloads** ボタンは、会話からそれらを書き換えます。専用のモデル呼び出しで、改訂済みの完全なドキュメントを返します。**Scenario + Detection & Response** モードでは両方を改訂し、それぞれにもう一方の現在のテキストを渡すことで整合性を保ちます。<br><br>- 参照セクションは正確なまま: Detection & Responseの適用ではナラティブのみを書き換えます。ATT&CKデータから導出された決定論的な検出・緩和の参照情報はバイト単位でそのまま引き継がれます。Navigatorレイヤーは再生成されず、元のシナリオのテクニックを反映している旨がキャプションとして付きます。<br><br>- 安心して試せる: モデルからの空の応答は変更を加えずに拒否されます。シナリオページとアシスタントの両方で、改善結果に最後に適用した時刻がキャプションとして表示され、**Revert to original** でシナリオとナラティブをまとめて元に戻せます。<br><br>- 編集した場所でダウンロード: アシスタントはシナリオページと同じ **Download Scenario** と **Download Detection & Response** ボタンを提供するようになりました。<br><br>- シナリオごとに1つの会話: 各チャットはその対象となるシナリオに属するため、新しく生成されたシナリオでは新しい会話が始まり、適用後も履歴全体が表示されたままになります。 | | ガイド付きで堅牢なシナリオワークフロー | - クリック前の準備確認: 各ページは不足している項目を表示するようになりました。まずページ自体の選択、次に未入力のSetupフィールドが挙げられ、未完了の項目がなくなるまで **Generate** は無効のままなので、クリックしてから検証エラーに気づくことはありません。<br><br>- 実行前のオプション確認: AI強化された敵対者とパープルチームのトグルは **Generate** の上に配置され、パープルチームのオプションには2回目のモデル呼び出しが発生する旨が明記されています。<br><br>- 実行前の確認: 生成を開始する前に、フレームワーク、組織プロファイル、選択内容、修飾子の1行サマリーが表示されます。<br><br>- ナビゲーション後も残る結果: 各ページはセッション中、自身の最新結果、それを生成した入力、ダウンロード名を保持します。アシスタントを開いて戻ってきても、シナリオ、そのNavigatorレイヤー、Detection & Responseレポートはそのまま残っています。フォームを編集しても結果はそのまま残り、選択内容が変更された旨の注記が表示されます。**Regenerate** と **Clear result** は明示的な操作です。<br><br>- 長いシナリオを把握する: 完全なMarkdownの上にコンパクトなサマリーとセクションインデックスが表示され、インジェクト、ディスカッション質問、成功基準、メトリクス、成果物、エンゲージメントのルールへのショートカットが提供されます。<br><br>- 役立つ空の状態: シナリオがない場合、アシスタントはシナリオを作成する3つの方法すべてへのリンクを表示します。シナリオがある場合は、議論中のシナリオ名を示し、それを生成したページへのリンクを表示します。 | | 失敗した、または遅いナラティブからの復旧 | - 成功した部分を保持: オプションのパープルチームナラティブが失敗または停止した場合でも、ベースシナリオ、そのダウンロード、Navigatorレイヤー、決定論的なDetection & Response参照情報は完全に使用可能なままで、何が失敗したかを示すメッセージが表示されます。<br><br>- 失敗した部分だけを再試行: **Retry purple-team narrative** はナラティブのみを再実行し、ベースシナリオの呼び出しを再度行うことなく、Detection & Responseの表示とダウンロードにマージします。ベースシナリオが失敗した場合は、**Generate** 時に取得した入力を用いて独自の再試行が可能です。<br><br>- 動き続けるタイマー: 経過時間はモデルの最初のトークンを待つ間も進むようになったため、長い待機がハングのように見えることはなくなりました。 | | テクニックが読み込めない場合のより明確な失敗表示 | - 失敗は失敗として報告: テクニックの検索に失敗した脅威グループは、テクニックを持たないグループとして表示されなくなりました。またCustom Scenariosは、リストの読み込みに失敗した際にテクニックピッカーを非表示にしてテクニックの選択を求めることがなくなりました。<br><br>- 行き止まりではなく次の一手: 両方のブロッカーが、失敗に対して何ができるかを示すようになりました。 | | アクセシビリティと簡潔なコピー | - キーボードとスクリーンリーダー対応: アイコンのみのコントロールには意味のあるアクセシブルな名前が付き、フォームラベルは一意で、キーボードの順序とフォーカスは視認でき論理的です。レイアウトはスマートフォン幅で水平方向にはみ出さなくなり、空のテーマカラーに関するコンソール警告も解消されました。<br><br>- CI でチェック済み: コンソールの健全性とアクセシビリティに関する実ブラウザのスモークテストが、すべてのプルリクエストで実行され、リリースイメージのゲートとなるようになりました。<br><br>- 読む量を削減: シナリオページは、事前チェックのサマリーを2つ目のエクスパンダーで繰り返したり、自身の状態管理について説明したりしなくなりました。 | | モデルレジストリの更新 | - 最新モデル: モデル一覧は各プロバイダーの現在のドキュメントに照らして更新されました — **GPT-6 Astra** が OpenAI の一覧の先頭に立ち、**Claude Opus 5.5**、**Claude Opus 5**、**Claude Fable 5.1** が Anthropic の一覧に加わり、Google には **Gemini 3.5 Flash Lite** と並んで **Gemini 3.8 Flash** が加わりました。いずれの場合も継続性のために1つ前の世代が保持されています。Anthropic の一覧は、より高価な Fable 5.1 ではなく、**Claude Opus 5.5** — 未選択時のサイドバーのデフォルト — が先頭になりました。<br><br>- 廃止エントリの削除: プロバイダーが置き換えた、または停止した id を削除しました — Claude Opus 4.7 と 4.8 (Opus 5.5 の登場により Opus の世代が2つ以上前になるため) と Groq の `llama-3.3-70b-versatile` および `llama-3.1-8b-instant` (いずれも 2026年8月16日に停止) — これにより、**Generate** を押したときに初めてエラーになるだけのモデルをサイドバーが提示することはなくなりました。Groq のオープンウェイト推論ティアは現在 `qwen/qwen3.8-27b` です。<br><br>- Temperature ルールの正確性維持: `supports_temperature` は各 Anthropic モデルの実際のサンプリング動作に基づいて設定されています — 4.7 以降のすべての Claude はカスタム temperature を拒否し、Haiku 4.5 が唯一、カスタム temperature を受け入れる掲載モデルとして残ります。これを保護するテストは、新しい Anthropic エントリがフラグを省略した場合に失敗するようになり、手動で設定した場合だけでなくなりました。 | | プラットフォームとセキュリティのハウスキーピング | - Python 3.11 以上が必須: Python 3.10 はサポートされなくなりました。LiteLLM 1.98.0 以降は、3.11 以降にのみ存在する typing 機能をインポートします。<br><br>- ベースイメージへのパッチ適用: Docker イメージは最新の `python:3.14-slim` で再ビルドされ、Trivy が検出した Debian ベースイメージの CVE ( `perl-base` の3つの重大なものを含む) が解消されました。<br><br>- 失敗した呼び出しからの実際のエラー: `tenacity` が宣言されるようになったため、失敗したモデル呼び出しは `tenacity` のインストールを促す指示ではなく、プロバイダーの実際のエラー (たとえば無効な API キー) を報告します。<br><br>- フィードバックはシナリオとともに: 評価は、画面に表示されているシナリオを生成した実行に対して記録され、別のページの最新実行に対して記録されることはありません。 | <details> <summary>以前のリリース(v0.16 以前)</summary> ### v0.16 | 新機能 | 何の役に立つのか? | | ----------- | ----------------- | | ベースシナリオ優先の生成 | - 待機前のシナリオ: 生成はフェーズ制で実行されるようになりました。ベースシナリオが最初にレンダリングされ、その **Download Scenario** ボタンと **Download ATT&CK Navigator Layer** ボタンがすでに有効な状態になります。その後、オプションのパープルチームのナラティブがストリーミングで続きます。この2回目の処理が遅い場合や不要な場合でも、すべてが完了するまで待たされることなく、シナリオをすぐに利用できます。<br><br>- 生成時の入力固定: 各実行は **Generate** を押した瞬間に取得されたスナップショットに基づいて動作するため、実行中にサイドバーを変更しても、生成中のシナリオが中途半端に書き換わることはありません。<br><br>- 正直な進捗表示: 経過時間ラベルと名前付きフェーズ(入力の準備、ベースシナリオの生成、決定論的エクスポートの構築、パープルチームのナラティブの生成)により、長時間の実行が実際にどこまで進んだかを示します。 | | 中立で行き止まりのないセレクター | - 機能する選択肢のみ: 脅威グループとケーススタディのセレクターは、実際にシナリオを生成できる選択肢のみを提供するようになったため、選択が行き止まりにつながることはなくなりました。<br><br>- 自然な並び順: グループは自然な数値順でソートされるため、APT3 は APT28 や APT30 の前に来ます。テキストとしてソートされてそれらの間に位置することはありません。 | | すべてのページで共有されるセットアップサイドバー | - 一度だけ設定: プロバイダー、モデル、フレームワーク、業界、企業規模が、各シナリオページ(Threat Group、Custom、AI Insider Threat)で個別に入力するのではなく、すべてのシナリオページで単一の共有 **Setup** サイドバーに配置されるようになりました。<br><br>- ナビゲーション後も維持: 秘密でない選択内容はページ間を移動しても保持され、URL にも反映されます。一方、API キーは意図的にクエリ文字列から除外されています。 | | プラットフォームとセキュリティのハウスキーピング | - 2.x SDK 上の MCP: MCP サーバーは `mcp` 2.x SDK に移行しました。<br><br>- より新しいベースイメージ: Docker イメージは `python:3.14-slim` 上でビルドされるようになりました。<br><br>- CI は警告ではなくゲート: セキュリティスキャンは検出結果を報告するだけでなく、ビルドを失敗させるようになりました。pip-audit と Bandit がゲートとなり、Trivy は pip のベンダー提供 SBOM をインストール済みパッケージとして誤ってカウントしなくなり、対応可能なイメージ CVE は解消されました。GitHub Actions は Node 20 ランタイムから移行し、Dependabot はワークフローアクション自体を追跡するようになりました。 | ### v0.15 | 新機能 | 何の役に立つのか | | ----------- | ----------------- | | 評価環境エスケープのプリセットとシナリオシード | - 特定のインシデントをリハーサルする: 新しい AI インサイダー脅威テンプレートは、隔離されていると想定された環境から評価エージェントが実システムに到達する状況をリハーサルします。これにより、封じ込め、認証情報のローテーション、第三者への通知、証拠保全が必須となります。これは、隔離境界が*強制*されるのではなく*想定*されていた、2026年7月に公表された評価エージェントのサンドボックス脱出事例を扱っています。<br><br>- テンプレートがプロンプトに反映されるように: これまでクイックスタートテンプレートはページのウィジェットを事前入力するだけで、生成されるシナリオには一切影響しませんでした。現在では、テンプレートは物語の `brief` と、ディスカッション質問が必ず引き出すべき `required_decisions` を保持し、その両方がプロンプトに組み込まれます。これにより、テンプレートは寄せ集めの質問ではなく、実用的なタイムテーブルトップを生成します。これはテンプレートを2つのクラスに分けます。元の6つの**アーキタイプ**テンプレートは意思決定のみを設定するため、モデルが前提を考案し、同じテンプレートを再実行すると同じ脅威プロファイルに対して新しい演習が生成されます。**インシデント**テンプレートはさらに brief も設定し、状況を固定します。<br><br>- フリーテキストのシナリオシード: AI Insider Threat ページの任意のシード入力欄で、あらゆるシナリオの物語を誘導できます。テンプレートを選択すると事前入力され、編集したり、ゼロから自分で書くこともできます。<br><br>- タクソノミーを27の脅威 / 6カテゴリに拡張: 6番目の脅威カテゴリ(**封じ込めと第三者への影響**)と、演習の要となる4つの STRIDE 脅威を追加します。すなわち `S5` 再利用可能なワークロード認証情報のリプレイ、`R4` エージェント側のテレメトリ抑制、`I5` 第三者および下流への侵害、`E5` 封じ込め境界保証の失敗です。AttackGen は公開された脅威モデルをそのまま写すのではなく、*拡張*するようになりました。<br><br>- MCP 経由でテンプレートを利用可能: `get_ai_insider_prompt` と `generate_ai_insider_scenario` が `template=` と `scenario_seed=` を受け付け、`list_ai_insider_options` は各テンプレートが適用する選択内容と brief を返します。これにより、クライアントは妥当性に基づいてプリセットを選び、テンプレート、業界、企業規模だけで呼び出せます。以前はテンプレート名が一覧表示されるものの、それを受け付けるツールはありませんでした。 | | attackgen-tabletop スキル: AI インサイダー脅威パス | - 2つ目の演習パス: [Agent Skill](https://github.com/mrwadams/attackgen/blob/main/skills) は、MITRE キルチェーンだけでなく、AI インサイダー脅威モデルからもタイムテーブルトップを構築できるようになりました。クイックスタートテンプレート(またはデプロイメントアーキタイプと脅威カテゴリ)を選ぶと、`get_ai_insider_prompt` のペイロードを MSEL に変換します。<br><br>- 同じ形、異なる背骨: 演習は同じ6つのセクションを保ちますが、キルチェーンの表はエージェントプロファイルと STRIDE 脅威スコープになり、検出スコアカードはデプロイメントアーキタイプの検出態勢に対して判定されます。つまり、*発火しない*行が発見事項になります。また、テンプレートの必須意思決定は必須のディスカッション質問になります。<br><br>- パスは自動で選択: スキルの説明は不正エージェントに関する表現でトリガーされるようになったため、「AI インサイダー脅威テーブルトップ」を求めると正しいパスに到達します。AI で加速された手法を用いる外部アクターは MITRE パスのままです。<br><br>- エクスプロイトではなく対応: どちらのパスも、対応チームが下すべき意思決定のリハーサルに明示的に限定されており、エクスプロイトコード、ペイロード、実際の未修正の脆弱性は含みません。また、AI パスはエージェントの行動を人間の動機ではなく、設定、アクセス、目的に帰属させます。 | | 修正: MCP AI-Insider プロンプトがエージェント機能を欠落させていた | - 同じテンプレート、同じプロンプト: AI インサイダーシナリオを信憑性のあるものにするベンチマークに基づく行であるフロンティアエージェント機能ブロックが、`capabilities` を明示的に指定していないすべての `get_ai_insider_prompt` / `generate_ai_insider_scenario` 呼び出しから省略されていました。これを提供するテンプレートは存在しないため、引数は空にフォールバックし、プロンプトは汎用的な「有能なフロンティアコーディングエージェントを想定する」という行に置き換えられていました。一方、ページ 3 では同じテンプレートに対して 4 つすべてを送信していました。<br><br>- デフォルトがアプリと一致するように: `capabilities` を省略すると、ページのマルチセレクトと同様に全セットが適用されます。`[]` を渡した場合は引き続き未指定のままとなるため、意図的なオプトアウトは変更されていません。 | | 修正: Anthropic Claude 4.7+ のシナリオ生成 | - すべての Claude モデルが再び動作: Claude 4.7 以降はあらゆるサンプリング `temperature` を拒否し、`BadRequestError: 'temperature' is deprecated for this model` を返します。リストされている 5 つの Anthropic モデルのうち 4 つ — Fable 5、Opus 4.8、Sonnet 5、Opus 4.7 — はどのページでもシナリオを生成できず、動作したのは Haiku 4.5 のみでした。<br><br>- プロバイダー単位ではなくモデル単位で制御: temperature のルールは以前プロバイダーからルーティングされていましたが、これではモデルごとに挙動が異なるプロバイダーを表現できません。`ModelInfo.supports_temperature` が temperature を拒否するモデルを示すようになったため、Haiku 4.5 は設定された temperature を維持しつつ、同系列のモデルはそれを省略します。OpenAI はプロバイダーレベルのルールのまま (現在のすべてのチャットモデルが推論モデルであるため) であり、未登録のモデル — ローカルの Ollama / LM Studio エンドポイント — には引き続き temperature が渡されます。 | ### v0.14 | 新機能 | 何が便利になるのか | | ----------- | ----------------- | | エージェント型クライアント向けMCPサーバー | - ツールとしてのシナリオ生成: 新しいFastMCPサーバー(`mcp_server.py`、公式`mcp` SDK)がstdio経由でAttackGenをエージェント型クライアントに公開するため、Claude CodeやClaude DesktopなどのアシスタントがStreamlit UIなしでMITREデータを取得し、シナリオを生成できます。<br><br>- 2つの階層: **データツール**(`list_threat_groups`、`list_case_studies`、`get_kill_chain`、`get_detection_report`、`get_navigator_layer`、`list_ai_insider_options`、`get_ai_insider_prompt`)はLLM呼び出しを行わず、APIキーも不要です。構造化されたMITREデータと、必要に応じてすぐに実行できるプロンプトを返すため、HTTP経由でのホスティングも安全です。**生成ツール**(`generate_threat_group_scenario`、`generate_custom_scenario`、`generate_ai_insider_scenario`)はbring-your-own-key設定を受け取り、完成したMarkdownを返します。これらはローカルのstdio上に置いてください。<br><br>- 共通実装: サーバーはStreamlitページが使用するのと同じヘッドレスな`core/prompts.py`ビルダーと`core/attack_data.py`ローダーを再利用するため、シナリオはアプリと乖離せず一致します。`python -m mcp_server`または`attackgen-mcp`コンソールスクリプトで起動します。 | | attackgen-tabletopエージェントスキル | - ファシリテーター対応の卓上演習: 新しい[エージェントスキル](https://github.com/mrwadams/attackgen/blob/main/skills)はMCPデータツールを基盤に、MITRE ATT&CK/ATLASの脅威グループまたはケーススタディを完全なIR卓上演習/MSELへ変換します。シナリオのナラティブ、フェーズにマッピングされたキルチェーン、タイムスタンプ付きインジェクト、NIST SP 800-61のディスカッション質問、検知カバレッジのスコアカードを含みます。<br><br>- 呼び出し元のモデルで実行: スキルが演習の設計を提供し、MCPサーバーがデータを提供するため、追加のAPIキーなしでクライアント自身のモデル上で動作します。<br><br>- 2つの出力形式: Markdown(デフォルト)または自己完結型で印刷に適したHTMLレポートとして提供されます。 | | アシスタントが検知・対応の出力を改善 | - パープルチーム編集: AttackGenアシスタントがシナリオだけでなく、**検知・対応**のナラティブも改善できるようになりました。🟣パープルチームナラティブのトグル(脅威グループ/カスタムページ)でシナリオを生成すると、アシスタントページに**Editing:**セレクターが表示され、チャットの対象をシナリオまたは防御側のウォークスルーのいずれかに指定できます。以前はアシスタントにシナリオのテキストしかありませんでした。<br><br>- 複合編集モード: 3つ目の**シナリオ+検知・対応**ターゲットは両方をまとめて改善するため、業界、脅威アクター、技術、タイムラインの変更といった横断的な変更が、攻撃側のシナリオと防御側のナラティブの両方に一貫して適用され、二度手間で乖離することがなくなります。<br><br>- 決定論的事実は変更なし: 改善対象となるのはLLMのナラティブのみで、ローカルのSTIX検知ジョインがLLMによって編集されることはありません。各編集モードは独自のチャット履歴を保持し、複合パスはLangSmithで`purple_team_narrative`としてタグ付けされます。 | | よりシンプルなモデルレジストリ | - モデルごとの設定が1つ減る: `max_completion_tokens` kwargと推論モデルのtemperatureルールは、モデルごとの`uses_max_completion_tokens`フラグではなく**プロバイダー**からルーティングされるようになりました。現在のすべてのOpenAIチャットモデルがこれらを使用するため、このフラグはプロバイダーキーがすでに表していた事実を重複させていました。新しいOpenAIモデルの追加は`MODELS`への1エントリの編集だけで済み、覚えておくべき追加フラグはありません。<br><br>- 動作変更なし: 内部的な簡素化のみで、ラッパーは現在のすべてのモデルに対して同一のLiteLLM kwargsを構築します。 | ### v0.13.1 | 新機能 | 役立つ理由 | | ----------- | ----------------- | | 修正: OpenAI GPT-5.x のシナリオ生成 | - 推論モデルの取り扱いを修正: OpenAI の GPT-5.x 推論モデルは、デフォルト以外のサンプリング `temperature` を拒否するため、GPT-5.x の生成はすべて `BadRequestError: 'temperature' does not support 0.7 with this model` で失敗していました。AttackGen はこれらのモデルにカスタム temperature を送信しなくなり、他のプロバイダーは設定された値を維持します。 | --- [Read more](https://github.com/mrwadams/attackgen)