ローカルのセキュリティ学習アプリで、汎用VLMと専門LLMをどう選定・連携すべきか
解決したいこと
許可されたTryHackMe演習と自宅ラボで使う、macOS向けのローカルAI学習アプリを開発しています。日本語で自由に質問でき、ターミナルやWeb画面のスクリーンショットを添付すると、観測できる事実を踏まえて次の確認手順を説明してくれるものを目指しています。
できるだけChatGPTのように自然で正確な対話を、Apple Silicon Mac(ユニファイドメモリ36GB)上で実現したいです。通常はオフラインで動かし、最新の脆弱性情報などが必要な場合だけ、ユーザーの操作でWeb検索を許可する想定です。
モデル選定と構成について、実際の運用経験に基づく助言をいただきたいです。
発生している問題・エラー
現在はSwiftUIアプリからローカルのOllamaを呼び出し、主にQwen3.5 9Bで回答しています。Foundation-Sec 1.1 8B Instructも導入し、「汎用モデル → セキュリティ専門モデル → 汎用モデル」という連携を試作しました。
しかし、少数の固定例では次の問題が出ました。
- 既に実施した確認を「次の手順」として再提案する。
- 存在を確認していないパスを前提にコマンドを提案する。
-
curl -I(HEADリクエスト)で本文の内容を確認できるかのように説明する。 - サービスのバナーなど限られた情報から、脆弱性について根拠のない推測を加える。
- 専門モデルの不正確な提案が、最終回答にも引き継がれる。
例えば、許可済み演習でサービスのバージョン確認とHTTPヘッダー確認を実施済みと伝えても、類似のHEADリクエストを再提案することがありました。対象のアドレスや実際の演習内容は公開できません。
これらはモデルの能力、プロンプト、モデル間の情報受け渡し、根拠資料の不足のどれが主因なのか、切り分けたいと考えています。
該当するソースコード
実装の概要です。以下は説明用の擬似コードで、実際のソースコードではありません。
質問文 + スクリーンショット(任意)
↓
Qwen3.5 9B:日本語での対話・画像理解
↓
Foundation-Sec 1.1 8B Instruct:専門分析(試作)
↓
Qwen3.5 9B:日本語の最終回答
専門モデルを通すことで改善することが確認できていないため、現在は自動連携を停止し、Qwen単独で回答しています。アプリがモデルの回答からOSコマンドを自動実行する機能はありません。
自分で試したこと
- 質問原文、実施済みの操作、未確認事項を分けて専門モデルへ渡す。
- モデル間でIP・パス・コマンドなどの文字列が変化しないよう、構造化したデータを渡す。
- 「推測を事実として扱わない」「実施済みの確認を繰り返さない」と指示する。
- 専門モデルを使う場合とQwen単独の場合を、同じ少数の質問で比較する。
- 一部のコマンドについて公式マニュアルの短い記述を与える。
最後の方法で特定の誤説明は改善しましたが、例が少なく、全体の品質が上がったとはまだ判断していません。スクリーンショットの読み取りと日本語での回答は動作していますが、実際の演習画面を使った十分な評価はこれからです。
次の主モデル候補として、Qwen3.5 27BとGemma 4 31Bを考えています。どちらも、このアプリでの比較評価はまだ行っていません。
特に伺いたいのは以下の点です。
- この用途なら、まず高性能な単一の画像対応モデルを使うべきでしょうか。それとも、Foundation-Secのような専門モデルを限定的な工程で併用する利点がありますか?
- 36GBのApple Silicon Macで、日本語対話・スクショ理解・技術的正確さを重視する場合、Qwen3.5 27BとGemma 4 31B(または他の候補)をどう評価・選定しますか?推奨する量子化や、速度・メモリ上の注意点も知りたいです。
- 実施済み手順の繰り返しや、コマンドの意味の取り違えを減らすには、プロンプト調整、公式資料の参照、回答の検証などをどう組み合わせるのが有効でしょうか?
許可された学習環境での正当な質問に対し、過剰に拒否せず、同時に根拠のない断定を避けられる構成を探しています。実際に似た用途を構築・評価した経験や、再現可能な評価方法があれば教えてください。