DeepSeek Harness: マルチモーダルサポート

最終更新:2026-08-31

テキストは Agent が世界を理解する一つの手段に過ぎません——画像、音声、動画が現実世界の言語です。DSH のマルチモーダルサポートにより、Agent は「コードを読む」だけでなく、「インターフェースを見る」「フィードバックを聞く」「動画を見る」ことも可能になり、Agent の知覚の境界が大幅に拡張されます。

💡 ヒント:マルチモーダルは DSH の開発者プレビュー機能で、機能は継続的に反復されています。画像入力が現在の最も安定;音声と動画のサポートはまだ改良中です。

📋 前提知識06-tools.md の完了、ツールシステムの基礎に精通していること

1. 学習内容

マルチモーダルパイプライン


2. マルチモーダルアーキテクチャの概要

(1) マルチモーダルデータフロー

100%
graph TB
    subgraph Input Sources
        IMG[Image<br/>PNG/JPG/WebP]
        AUD[Audio<br/>MP3/WAV]
        VID[Video<br/>MP4/WebM]
        DOC[Documents<br/>PDF/CSV]
    end
    subgraph DSH Processing
        PARSE[Attachment Parser]
        ENCODE[Multimodal Encoding]
        LLM[LLM Multimodal Reasoning]
    end
    subgraph Output
        TEXT[Text Reply]
        TOOL[Tool Calls]
    end
    IMG --> PARSE
    AUD --> PARSE
    VID --> PARSE
    DOC --> PARSE
    PARSE --> ENCODE
    ENCODE --> LLM
    LLM --> TEXT
    LLM --> TOOL

(2) マルチモーダルサポートマトリックス

入力タイプ フォーマットサポート 安定性 最大サイズ 備考
画像 PNG, JPG, WebP, GIF ✅ 安定 20MB/画像 最も成熟したマルチモーダル機能
音声 MP3, WAV, OGG ⚠️ 実験的 50MB 音声対応モデルが必要
動画 MP4, WebM ⚠️ 実験的 100MB フレーム抽出分析
ドキュメント PDF, CSV, XLSX ✅ 安定 50MB テキスト抽出+構造化

(3) モデル要件

マルチモーダル機能は LLM のマルチモーダル能力に依存します:

モデル 画像 音声 動画 ドキュメント
deepseek-chat
gpt-4o
gpt-4-vision
claude-3.5-sonnet

3. 画像入力処理

(1) Web UI での画像追加

Web UI のチャットエリアで、ドラッグ&ドロップまたはペーストで画像を追加できます:

TEXT 📖 参照専用
┌─ Chat Area ──────────────────────────────┐
│                                           │
│ 👤 Alice:                                │
│ 📎 [screenshot.png] [ui-mockup.jpg]      │
│ この2つの UI デザインはどちらが良い?     │
│                                           │
│ [Send]                                    │
└───────────────────────────────────────────┘

サポートされる操作:

(2) CLI モードでの画像追加

▶ サンプル 1:CLI モードでの画像添付

BASH
# 画像を添付して CLI を起動
dsh cli --attach ./screenshot.png

# 会話中に /attach コマンドを使用
> /attach ./ui-mockup.jpg
> What's wrong with this UI?

# 複数画像を添付
> /attach ./before.png ./after.png
> What's the difference between these two versions?

(3) SDK での画像添付

▶ サンプル 2:Python SDK での画像送信

PYTHON
from dsh import DSHClient

client = DSHClient(base_url="http://127.0.0.1:3080")
session = client.create_session(workspace="/home/alice/project")

# 単一画像の添付
response = session.send(
    "What's wrong with this UI screenshot?",
    images=["./screenshot.png"]
)

print(response.content)

# 複数画像を添付して比較
response = session.send(
    "Compare these two designs, which is better?",
    images=["./design-a.png", "./design-b.png"]
)

(4) 実践的な画像分析

▶ サンプル 3:UI バグ分析

TEXT 📖 参照専用
👤 Alice:[error-page-screenshot.png を添付]
このエラーページの何が問題?修正して

🤖 Agent:
🔍 Analyzing image...

以下の問題を検出しました:
1. エラーメッセージテキストがコンテナの境界をはみ出している
2. 「Retry」ボタンが切り取られ、半分しか表示されていない
3. 背景色がデザイン仕様と不一致(#f5f5f5 のはずが白)

📝 Using tool: file_edit (edit)
  → Path: src/pages/ErrorPage.tsx
  → Fix 1: Add text-overflow: ellipsis
  → Fix 2: Adjust button margin
  → Fix 3: Change background color

⚠️ Approval Required: Edit file src/pages/ErrorPage.tsx

(5) 画像処理の制限

制限 説明
1画像の最大サイズ 20MB
1メッセージの最大画像数 5枚
解像度 4096×4096 を超えないことを推奨
アニメーション GIF 最初のフレームのみ使用
フォーマット変換 モデルサポート形式に自動変換

4. 音声/動画入力

(1) 音声入力(実験的)

音声入力には音声理解をサポートするモデル(例:GPT-4o)が必要です:

▶ サンプル 4:SDK で音声送信

PYTHON
# 音声ファイルの送信
response = session.send(
    "Transcribe this audio and summarize the key points",
    audio=["./meeting-recording.mp3"]
)

print(response.content)
# Audio transcription results and summary...

(2) 動画入力(実験的)

動画処理はフレーム抽出戦略を使用します:

100%
graph LR
    VID[Video File] --> EXTRACT[Frame Extraction<br/>1 frame/second] --> SELECT[Key Frame Selection<br/>Scene Change Detection] --> ENCODE[Multi-frame Encoding] --> LLM[LLM Analysis]

▶ サンプル 5:SDK で動画送信

PYTHON
# 動画ファイルの送信
response = session.send(
    "Analyze this demo video, list the features shown",
    video=["./demo.mp4"]
)

print(response.content)
# 1. User login feature (0:00-0:15)
# 2. Dashboard display (0:15-0:45)
# ...

(3) 現在の制限

音声と動画機能はまだ実験段階です:

制限 音声 動画
最大長 10分 5分
最大ファイルサイズ 50MB 100MB
モデル要件 GPT-4o 等 GPT-4o 等
フレーム抽出 1フレーム/秒、最大300フレーム
安定性 ⚠️ タイムアウトの可能性 ⚠️ タイムアウトの可能性

5. ドキュメント添付と解析

(1) サポートされるドキュメント形式

形式 解析方法 出力
PDF テキスト抽出 + OCR 構造化テキスト
CSV 行と列の解析 テーブルデータ
XLSX ワークシートの解析 テーブルデータ
DOCX テキスト抽出 構造化テキスト
Markdown 直接読み取り 生テキスト

▶ サンプル 6:PDF ファイルの添付

PYTHON
# PDF ドキュメントの分析
response = session.send(
    "Summarize the core points of this technical document",
    files=["./api-specification.pdf"]
)

print(response.content)

(2) CSV データ分析

▶ サンプル 7:CSV データの分析

PYTHON
# CSV データの分析
response = session.send(
    "Analyze this sales data, find trends and outliers",
    files=["./sales-2026.csv"]
)

print(response.content)
# Data analysis results...

Agent はツールを使ってさらに処理することも可能です:

TEXT 📖 参照専用
🤖 Agent:
📊 Analyzing CSV data...
  → Rows: 12,450
  → Columns: 8
  → Date range: 2026-01 to 2026-08

Key findings:
1. 月平均成長率12%、ただし3月は8%減少(季節性の疑い)
2. 上位3製品が総収入の65%を占める
3. 顧客維持率が72%から68%に低下

🔧 Using tool: shell
  → Command: python3 -c "import pandas; ..."
  → Generating visualization...

6. マルチモーダルツール統合

(1) マルチモーダルとツールの連携

Agent はマルチモーダル入力とツール呼び出しを組み合わせることができます:

100%
graph TB
    INPUT[Multimodal Input] --> AGENT[Agent Analysis]
    AGENT -->|Image → Code| FE[file_edit]
    AGENT -->|Video → Script| SH[shell]
    AGENT -->|Document → Database| DB[database.query]

▶ サンプル 8:画像+ツール連携

TEXT 📖 参照専用
👤 Bob:[api-response-screenshot.png を添付]
この API レスポンスフォーマットが間違っている、コードを確認して

🤖 Agent:
🔍 Analyzing screenshot...
  → Expected format: { data: [...], meta: {...} }
  → Actual format: { results: [...] }

🔍 Using tool: search
  → Pattern: "results"
  → Type: content
  → Found in: src/api/handlers.ts:45

📝 Using tool: file_edit (read)
  → Reading src/api/handlers.ts

📝 Using tool: file_edit (edit)
  → Fixing response format at line 45-52
  → Changing "results" to "data", adding "meta" field

(2) バッチ画像処理

▶ サンプル 9:バッチ画像+ファイル編集

PYTHON
import glob

screenshots = glob.glob("./screenshots/*.png")

response = session.send(
    "Review all screenshots, find pages with UI issues, and fix them one by one",
    images=screenshots[:5]  # Max 5 images
)

(3) マルチモーダルチェーン推論

TEXT 📖 参照専用
👤 Alice:[architecture-diagram.png を添付]
このアーキテクチャ図に基づいて Docker Compose 設定を生成して

🤖 Agent:
🔍 Analyzing architecture diagram...
  → Identified 4 services: API, Worker, Database, Cache
  → Connections: API → Database, API → Cache, Worker → Database

📝 Using tool: file_edit (create)
  → Creating docker-compose.yml
  → 4 services with proper networking

✅ Docker Compose 設定が生成されました:
- api-service (Express.js, port 3000)
- worker-service (Node.js, background jobs)
- postgres (PostgreSQL 16, volume mounted)
- redis (Redis 7, cache layer)

7. 設定と最適化

(1) マルチモーダル設定

YAML
# dsh.config.yaml
multimodal:
  # 画像設定
  images:
    max_size_mb: 20
    max_per_message: 5
    resize_large: true          # Auto-resize oversized images
    max_resolution: [4096, 4096]
  
  # 音声設定
  audio:
    max_duration_minutes: 10
    max_size_mb: 50
    transcription_model: "whisper-1"
  
  # 動画設定
  video:
    max_duration_minutes: 5
    max_size_mb: 100
    frame_rate: 1               # Frames per second to extract
    max_frames: 300
  
  # ドキュメント設定
  documents:
    max_size_mb: 50
    pdf_ocr_enabled: true
    csv_max_rows: 100000

(2) パフォーマンス最適化

マルチモーダル入力はトークン消費と応答時間を増加させます:

最適化戦略 説明 効果
画像圧縮 アップロード前に適切な解像度に圧縮 画像トークン50-80%削減
キーフレーム選択 動画はキーフレームのみ送信 動画フレーム90%削減
テキスト抽出 PDF は OCR よりテキスト抽出を優先 より高速で正確
バッチ送信 大量の画像はバッチで送信 タイムアウトを回避

❓ よくある質問

Q すべてのモデルが画像入力をサポートしていますか?
A いいえ。DeepSeek-VL、GPT-4o、Claude 3.5 Sonnet などのビジョン対応モデルを使用する必要があります。標準テキストモデルは画像を処理できません。
Q 画像品質は Agent の理解に影響しますか?
A はい。低解像度、ぼやけた、暗い画像は Agent の誤判断を引き起こす可能性があります。鮮明で高解像度の画像のアップロードを推奨します。
Q 音声機能はいつ安定しますか?
A 音声と動画機能はまだ開発者プレビュー中です。公式チームは安定版のタイムラインを発表していません。重要でないシナリオでのみ使用を推奨します。
Q マルチモーダルは追加でどれくらいトークンを消費しますか?
A 画像は約85-170トークン/画像(解像度による)、音声は約150トークン/分、動画は約85トークン/フレーム。詳細はモデルとエンコード方法に依存します。
Q Agent 自身がスクリーンショットを撮れますか?
A はい。Playwright などのツールプラグインを通じて、Agent がブラウザを開き、スクリーンショットを撮り、分析できます。コミュニティプラグインのインストールが必要です。
Q PDF OCR は正確ですか?
A クリアなテキストの PDF の場合、直接テキスト抽出(非 OCR)の精度はほぼ100%です。スキャンされた文書や手書き内容は OCR に依存し、精度は低くなります。

📖 まとめ


📝 練習問題

1. ⭐ 基礎:Web UI で UI スクリーンショットをアップロードし、Agent にスクリーンショットの内容を説明させてください。Agent の分析結果と使用ツールを記録すること。

2. ⭐⭐ 応用:CSV データファイルをアップロードし、Agent にデータを分析させて可視化を提案させてください。SDK を使ってこの操作のスクリプトを書くこと。

3. ⭐⭐⭐ チャレンジ:マルチモーダルワークフローを設計してください——UI デザイン画像をアップロードし、Agent にデザインに基づいてフロントエンドコードを生成させ、スクリーンショットを撮って生成結果と元のデザインを比較する。完全なツール呼び出しチェーンを記録すること。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%