From f2d24cb7d437ad099291262d7c1b021809cd66ae Mon Sep 17 00:00:00 2001 From: tanaka takashi Date: Sun, 13 Sep 2026 13:35:03 +0900 Subject: feat(multimedia): MCP画像・音声artifactの安全な表示経路を追加 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MCP Tool結果をテキストと型付きartifactへ分離し、画像・音声のbase64をMIME、サイズ、件数のallowlistで検証する。annotations.audienceを反映し、ユーザー向けartifactだけをセッションへ保存してSSEにはメタデータのみを公開する。 画像はvision capabilityが明示されたモデルだけへ渡し、非対応時は既存の多言語プロンプト機構による固定通知へ置き換える。MCP生成音声とユーザー添付音声はOllamaへ送らず、誤デコードしたテキストやbase64がモデル入力へ混入しないポリシーに統一する。 保存メディア用の認証済み同一オリジン配信ルートを追加し、セッションスコープ、MIME allowlist、nosniff、private/no-store、Rangeリクエストを適用する。UIはMCP由来HTMLを使わずDOM APIでimgとaudio controlsを生成し、CSPへmedia-src selfを追加する。 web_searchは文字列メタデータだけを返す既存仕様を維持する。scrape_urlとsearch_and_fetchは画像・音声・動画レスポンスを拒否し、search_and_fetchの対象拡張子を明示的allowlistへ変更して標準Webツールをテキスト専用の契約に揃える。 責務境界と導入しない過剰対策をdocs/multimedia.mdへ記録し、README、ツール仕様、CHANGELOGを更新する。MCP artifact変換・永続化、vision分岐、音声非送信、認証、Range配信、MIME偽装拒否をテストで追加確認した。 Validation: 148 tests passed; ruff check passed; mypy src passed; node --check src/ollama_web/static/app.js passed. --- src/ollama_web/prompts/ja.json | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/ollama_web/prompts/ja.json') diff --git a/src/ollama_web/prompts/ja.json b/src/ollama_web/prompts/ja.json index 6bcba63..5742fbc 100644 --- a/src/ollama_web/prompts/ja.json +++ b/src/ollama_web/prompts/ja.json @@ -5,6 +5,10 @@ "pagination_incomplete_instruction": "ページングされた資料に未取得部分があります。取得済み範囲だけを根拠に回答し、全文を確認したとは述べないでください。", "attachment_prefix": "以下はユーザーが添付したファイルの内容です:", "attachment_paging": "PDFは先頭プレビューです。has_more: true の場合、attached-file の uri と next_token を pdf_to_text に渡し、必要な範囲を続けて取得してください。未取得部分が残る場合は全文を読んだと主張しないでください。", + "vision_unsupported_attachment": "ユーザーは画像を添付しましたが、現在選択されているモデルは画像入力に対応していません。画像の内容はモデルへ提供されていません。必要に応じて、この制限をユーザーへ説明してください。", + "audio_unsupported_attachment": "ユーザーは音声を添付しました。音声データそのものはモデルへ提供されていません。必要に応じて、この制限をユーザーへ説明してください。", + "mcp_image_artifact_notice": "MCPツールは画像を生成しましたが、現在のモデルは画像入力に対応していないため、画像の内容はモデルへ提供されていません。", + "mcp_audio_artifact_notice": "MCPツールは音声を生成しました。音声データそのものはモデルへ提供されていません。", "fetch": { "candidate": "候補", "title": "タイトル", -- cgit v1.2.3