DeepSeek Harness: Suporte Multimodal

Última atualização: 2026-08-31

Texto é apenas uma forma do Agent entender o mundo — imagens, áudio e vídeo são a linguagem do mundo real. O suporte multimodal do DSH permite que o Agent não apenas "leia código", mas também "veja interfaces", "ouça feedback" e "assista vídeos", expandindo enormemente os limites de percepção do Agent.

💡 Dica: Multimodal é um recurso de prévia do desenvolvedor do DSH, com funcionalidade em iteração contínua. A entrada de imagem é atualmente a mais estável; o suporte a áudio e vídeo ainda está sendo aprimorado.

📋 Pré-requisitos: Ter completado 06-tools.md, familiarizado com noções básicas do sistema de ferramentas

1. O Que Você Vai Aprender

Pipeline Multimodal


2. Visão Geral da Arquitetura Multimodal

(1) Fluxo de Dados Multimodal

100%
graph TB
    subgraph Fontes de Entrada
        IMG[Imagem<br/>PNG/JPG/WebP]
        AUD[Áudio<br/>MP3/WAV]
        VID[Vídeo<br/>MP4/WebM]
        DOC[Documentos<br/>PDF/CSV]
    end
    subgraph Processamento DSH
        PARSE[Analisador de Anexos]
        ENCODE[Codificação Multimodal]
        LLM[Raciocínio Multimodal LLM]
    end
    subgraph Saída
        TEXT[Resposta de Texto]
        TOOL[Chamadas de Ferramentas]
    end
    IMG --> PARSE
    AUD --> PARSE
    VID --> PARSE
    DOC --> PARSE
    PARSE --> ENCODE
    ENCODE --> LLM
    LLM --> TEXT
    LLM --> TOOL

(2) Matriz de Suporte Multimodal

Tipo de Entrada Formato Suportado Estabilidade Tamanho Máx Observações
Imagem PNG, JPG, WebP, GIF ✅ Estável 20MB/imagem Capacidade multimodal mais madura
Áudio MP3, WAV, OGG ⚠️ Experimental 50MB Requer modelo com capacidade de áudio
Vídeo MP4, WebM ⚠️ Experimental 100MB Análise por extração quadro a quadro
Documento PDF, CSV, XLSX ✅ Estável 50MB Extração de texto + estruturação

(3) Requisitos de Modelo

Recursos multimodais dependem das capacidades multimodais do LLM:

Modelo Imagem Áudio Vídeo Documento
deepseek-chat
gpt-4o
gpt-4-vision
claude-3.5-sonnet

3. Processamento de Entrada de Imagem

(1) Adicionando Imagens na Web UI

Na área de chat da Web UI, você pode adicionar imagens arrastando ou colando:

TEXT 📖 Somente leitura
┌─ Área de Chat ──────────────────────────────┐
│                                           │
│ 👤 Alice:                                 │
│ 📎 [screenshot.png] [ui-mockup.jpg]      │
│ Qual destes dois designs de UI é melhor?  │
│                                           │
│ [Enviar]                                    │
└───────────────────────────────────────────┘

Operações suportadas:

(2) Adicionando Imagens no Modo CLI

▶ Exemplo 1:Anexando Imagens no Modo CLI

BASH
# Iniciar CLI com imagem anexada
dsh cli --attach ./screenshot.png

# Usar comando /attach durante a conversa
> /attach ./ui-mockup.jpg
> O que há de errado com esta UI?

# Anexar múltiplas imagens
> /attach ./before.png ./after.png
> Qual a diferença entre estas duas versões?

(3) Anexando Imagens via SDK

▶ Exemplo 2:Enviando Imagens com 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")

# Anexar uma única imagem
response = session.send(
    "O que há de errado com esta captura de tela da UI?",
    images=["./screenshot.png"]
)

print(response.content)

# Anexar múltiplas imagens para comparação
response = session.send(
    "Compare estes dois designs, qual é melhor?",
    images=["./design-a.png", "./design-b.png"]
)

(4) Análise de Imagem na Prática

▶ Exemplo 3:Análise de Bug de UI

TEXT 📖 Somente leitura
👤 Alice: [anexa error-page-screenshot.png]
O que há de errado com esta página de erro? Me ajude a corrigir

🤖 Agent:
🔍 Analisando imagem...

Vejo os seguintes problemas:
1. O texto da mensagem de erro transborda o limite do contêiner
2. O botão "Retry" está truncado, mostrando apenas metade
3. A cor de fundo é inconsistente com a especificação de design (deveria ser #f5f5f5, não branco)

📝 Usando ferramenta: file_edit (edit)
  → Caminho: src/pages/ErrorPage.tsx
  → Correção 1: Adicionar text-overflow: ellipsis
  → Correção 2: Ajustar margem do botão
  → Correção 3: Alterar cor de fundo

⚠️ Aprovação Necessária: Editar arquivo src/pages/ErrorPage.tsx

(5) Limitações do Processamento de Imagem

Limitação Descrição
Máximo por imagem 20MB
Máximo por mensagem 5 imagens
Resolução Recomendada não superior a 4096×4096
GIF animado Apenas o primeiro quadro é usado
Conversão de formato Automaticamente convertida para o formato suportado pelo modelo

4. Entrada de Áudio/Vídeo

(1) Entrada de Áudio (Experimental)

A entrada de áudio requer um modelo que suporte compreensão de áudio (ex.: GPT-4o):

▶ Exemplo 4:Enviando Áudio via SDK

PYTHON
# Enviar um arquivo de áudio
response = session.send(
    "Transcreva este áudio e resuma os pontos principais",
    audio=["./meeting-recording.mp3"]
)

print(response.content)
# Resultados da transcrição de áudio e resumo...

(2) Entrada de Vídeo (Experimental)

O processamento de vídeo usa uma estratégia de extração de quadros:

100%
graph LR
    VID[Arquivo de Vídeo] --> EXTRACT[Extração de Quadros<br/>1 quadro/segundo] --> SELECT[Seleção de Quadros-Chave<br/>Detecção de Mudança de Cena] --> ENCODE[Codificação Multi-quadro] --> LLM[Análise LLM]

▶ Exemplo 5:Enviando Vídeo via SDK

PYTHON
# Enviar um arquivo de vídeo
response = session.send(
    "Analise este vídeo de demonstração, liste os recursos mostrados",
    video=["./demo.mp4"]
)

print(response.content)
# 1. Funcionalidade de login do usuário (0:00-0:15)
# 2. Exibição do dashboard (0:15-0:45)
# ...

(3) Limitações Atuais

Recursos de áudio e vídeo ainda estão em fase experimental:

Limitação Áudio Vídeo
Duração máxima 10 minutos 5 minutos
Tamanho máximo do arquivo 50MB 100MB
Requisito de modelo GPT-4o etc. GPT-4o etc.
Extração de quadros 1 quadro/segundo, máx. 300 quadros
Estabilidade ⚠️ Pode causar timeout ⚠️ Pode causar timeout

5. Anexação e Análise de Documentos

(1) Formatos de Documento Suportados

Formato Método de Análise Saída
PDF Extração de texto + OCR Texto estruturado
CSV Análise de linhas e colunas Dados tabulares
XLSX Análise de planilhas Dados tabulares
DOCX Extração de texto Texto estruturado
Markdown Leitura direta Texto bruto

▶ Exemplo 6:Anexando um Arquivo PDF

PYTHON
# Analisar um documento PDF
response = session.send(
    "Resuma os pontos principais deste documento técnico",
    files=["./api-specification.pdf"]
)

print(response.content)

(2) Análise de Dados CSV

▶ Exemplo 7:Analisando Dados CSV

PYTHON
# Analisar dados CSV
response = session.send(
    "Analise estes dados de vendas, encontre tendências e anomalias",
    files=["./sales-2026.csv"]
)

print(response.content)
# Resultados da análise de dados...

O Agent também pode processar posteriormente com ferramentas:

TEXT 📖 Somente leitura
🤖 Agent:
📊 Analisando dados CSV...
  → Linhas: 12.450
  → Colunas: 8
  → Período: 2026-01 a 2026-08

Principais descobertas:
1. Crescimento médio mensal de 12%, mas março caiu 8% (suspeita de sazonalidade)
2. Top 3 produtos representam 65% da receita total
3. Taxa de retenção de clientes caiu de 72% para 68%

🔧 Usando ferramenta: shell
  → Comando: python3 -c "import pandas; ..."
  → Gerando visualização...

6. Integração de Ferramentas Multimodais

(1) Coordenação Multimodal e Ferramentas

O Agent pode combinar entrada multimodal com chamadas de ferramentas:

100%
graph TB
    INPUT[Entrada Multimodal] --> AGENT[Análise do Agent]
    AGENT -->|Imagem → Código| FE[file_edit]
    AGENT -->|Vídeo → Script| SH[shell]
    AGENT -->|Documento → Banco de Dados| DB[database.query]

▶ Exemplo 8:Coordenação Imagem + Ferramenta

TEXT 📖 Somente leitura
👤 Bob: [anexa api-response-screenshot.png]
O formato desta resposta da API está errado, me ajude a verificar o código

🤖 Agent:
🔍 Analisando captura de tela...
  → Formato esperado: { data: [...], meta: {...} }
  → Formato atual: { results: [...] }

🔍 Usando ferramenta: search
  → Padrão: "results"
  → Tipo: conteúdo
  → Encontrado em: src/api/handlers.ts:45

📝 Usando ferramenta: file_edit (read)
  → Lendo src/api/handlers.ts

📝 Usando ferramenta: file_edit (edit)
  → Corrigindo formato da resposta nas linhas 45-52
  → Alterando "results" para "data", adicionando campo "meta"

(2) Processamento em Lote de Imagens

▶ Exemplo 9:Imagens em Lote + Edição de Arquivos

PYTHON
import glob

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

response = session.send(
    "Revise todas as capturas de tela, encontre páginas com problemas de UI e corrija uma a uma",
    images=screenshots[:5]  # Máx. 5 imagens
)

(3) Raciocínio em Cadeia Multimodal

TEXT 📖 Somente leitura
👤 Alice: [anexa architecture-diagram.png]
Gere uma configuração Docker Compose baseada neste diagrama de arquitetura

🤖 Agent:
🔍 Analisando diagrama de arquitetura...
  → Identificados 4 serviços: API, Worker, Database, Cache
  → Conexões: API → Database, API → Cache, Worker → Database

📝 Usando ferramenta: file_edit (create)
  → Criando docker-compose.yml
  → 4 serviços com rede adequada

✅ Configuração Docker Compose gerada, incluindo:
- api-service (Express.js, porta 3000)
- worker-service (Node.js, jobs em segundo plano)
- postgres (PostgreSQL 16, volume montado)
- redis (Redis 7, camada de cache)

7. Configuração e Otimização

(1) Configuração Multimodal

YAML
# dsh.config.yaml
multimodal:
  # Configurações de imagem
  images:
    max_size_mb: 20
    max_per_message: 5
    resize_large: true          # Redimensionar automaticamente imagens muito grandes
    max_resolution: [4096, 4096]
  
  # Configurações de áudio
  audio:
    max_duration_minutes: 10
    max_size_mb: 50
    transcription_model: "whisper-1"
  
  # Configurações de vídeo
  video:
    max_duration_minutes: 5
    max_size_mb: 100
    frame_rate: 1               # Quadros por segundo para extrair
    max_frames: 300
  
  # Configurações de documento
  documents:
    max_size_mb: 50
    pdf_ocr_enabled: true
    csv_max_rows: 100000

(2) Otimização de Desempenho

Entrada multimodal aumenta o consumo de tokens e o tempo de resposta:

Estratégia de Otimização Descrição Efeito
Compressão de imagem Comprimir para resolução adequada antes do upload 50-80% de redução de tokens de imagem
Seleção de quadros-chave Enviar apenas quadros-chave para vídeo 90% de redução de quadros de vídeo
Extração de texto Preferir extração de texto em vez de OCR para PDFs Mais rápido e preciso
Envio em lote Enviar grandes quantidades de imagens em lotes Evita timeout

❓ Perguntas Frequentes

P Todos os modelos suportam entrada de imagem?
R Não. Você precisa usar um modelo com capacidade de visão como DeepSeek-VL, GPT-4o, Claude 3.5 Sonnet, etc. Modelos de texto padrão não podem processar imagens.
P A qualidade da imagem afeta a compreensão do Agent?
R Sim. Imagens de baixa resolução, borradas ou mal iluminadas podem causar erros de julgamento do Agent. Recomendamos upload de imagens claras e de alta resolução.
P Quando os recursos de áudio estarão estáveis?
R Recursos de áudio e vídeo ainda estão em prévia do desenvolvedor. A equipe oficial não anunciou um cronograma de estabilização. Recomendamos usá-los apenas em cenários não críticos.
P Quantos tokens extras o multimodal consome?
R Imagens aproximadamente 85-170 tokens/imagem (dependendo da resolução), áudio aproximadamente 150 tokens/minuto, vídeo aproximadamente 85 tokens/quadro. Os valores específicos dependem do modelo e método de codificação.
P O Agent pode tirar capturas de tela por conta própria?
R Sim. Através de plugins de ferramenta como Playwright, o Agent pode abrir um navegador, tirar uma captura de tela e depois analisá-la. Isso requer a instalação de um plugin comunitário.
P O OCR de PDF é preciso?
R Para PDFs com texto claro, a precisão da extração direta de texto (não-OCR) é próxima de 100%. Documentos escaneados e conteúdo manuscrito dependem de OCR com precisão menor.

📖 Resumo


📝 Exercícios

1. ⭐ Básico: Faça upload de uma captura de tela de UI na Web UI e peça ao Agent para descrever o conteúdo da captura. Registre os resultados da análise do Agent e as ferramentas usadas.

2. ⭐⭐ Intermediário: Faça upload de um arquivo de dados CSV e peça ao Agent para analisar os dados e sugerir visualizações. Use o SDK para escrever um script para esta operação.

3. ⭐⭐⭐ Desafio: Projete um fluxo de trabalho multimodal — faça upload de uma imagem de design de UI, peça ao Agent para gerar código frontend correspondente baseado no design, depois tire uma captura de tela para comparar o resultado gerado com o design original. Registre a cadeia completa de chamadas de ferramentas.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%