Astreus

Visão

Análise de imagens e processamento de documentos para interações multimodais Aprenda os padrões de configuração, as APIs e os exemplos práticos necessários...

Análise de imagens e processamento de documentos para interações multimodais

Visão Geral

O sistema Vision permite que os agentes processem e analisem imagens, fornecendo capacidades de IA multimodal para interações mais ricas. Ele suporta múltiplos formatos de imagem, oferece vários modos de análise e se integra perfeitamente com os provedores OpenAI, Claude, Gemini e Ollama local para opções flexíveis de implantação.

Habilitando o Vision

Habilite as capacidades de visão para um agente definindo a opção vision como true:

import { Agent } from '@astreus-ai/astreus';

const agent = await Agent.create({
  name: 'VisionAgent',
  model: 'gpt-4o',  // Vision-capable model
  vision: true      // Enable vision capabilities (default: false)
});

Sistema de Anexos

O Astreus suporta um sistema de anexos intuitivo para trabalhar com imagens:

// Clean, modern attachment API
const response = await agent.ask("What do you see in this image?", {
  attachments: [
    { type: 'image', path: '/path/to/image.jpg', name: 'My Photo' }
  ]
});

O sistema de anexos automaticamente:

  • Detecta o tipo de arquivo e seleciona as ferramentas apropriadas
  • Aprimora o prompt com informações do anexo
  • Habilita o uso de ferramentas quando anexos estão presentes

Capacidades do Vision

O sistema de visão fornece três capacidades principais através de ferramentas integradas:

1. Análise Geral de Imagens

Analise imagens com prompts personalizados e níveis de detalhe configuráveis:

// Using attachments (recommended approach)
const response = await agent.ask("Please analyze this screenshot and describe the UI elements", {
  attachments: [
    { type: 'image', path: '/path/to/screenshot.png', name: 'UI Screenshot' }
  ]
});

// Using the analyze_image tool through conversation
const response2 = await agent.ask("Please analyze the image at /path/to/screenshot.png and describe the UI elements");

// Direct method call
const analysis = await agent.analyzeImage('/path/to/image.jpg', {
  prompt: 'What UI elements are visible in this interface?',
  detail: 'high',
  maxTokens: 1500
});

2. Descrição de Imagem

Gere descrições estruturadas para diferentes casos de uso:

// Accessibility-friendly description
const description = await agent.describeImage('/path/to/image.jpg', 'accessibility');

// Available styles:
// - 'detailed': Comprehensive description of all visual elements
// - 'concise': Brief description of main elements  
// - 'accessibility': Screen reader-friendly descriptions
// - 'technical': Technical analysis including composition and lighting

3. Extração de Texto (OCR)

Extraia e transcreva texto de imagens:

// Extract text with language hint
const text = await agent.extractTextFromImage('/path/to/document.jpg', 'english');

// The system maintains original formatting and structure
console.log(text);

Formatos Suportados

O sistema de visão suporta estes formatos de imagem:

  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • GIF (.gif)
  • BMP (.bmp)
  • WebP (.webp)

Fontes de Entrada

1

Caminhos de Arquivo

Analise imagens do sistema de arquivos local:

const result = await agent.analyzeImage('/path/to/image.jpg');
2

Dados Base64

Analise imagens a partir de dados codificados em base64:

const base64Image = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...';
const result = await agent.analyzeImageFromBase64(base64Image);

Configuração

Configuração do Modelo de Vision

Especifique o modelo de visão diretamente na configuração do agente:

const agent = await Agent.create({
  name: 'VisionAgent',
  model: 'gpt-4o',
  visionModel: 'gpt-4o',  // Specify vision model here
  vision: true
});

Variáveis de Ambiente

# API keys (auto-detected based on model)
OPENAI_API_KEY=your_openai_key               # For OpenAI models
OPENAI_VISION_API_KEY=your_openai_key        # Dedicated vision API key (takes priority)
ANTHROPIC_API_KEY=your_anthropic_key         # For Claude models
ANTHROPIC_VISION_API_KEY=your_anthropic_key  # Dedicated vision API key (takes priority)
GEMINI_API_KEY=your_gemini_key               # For Gemini models
GEMINI_VISION_API_KEY=your_gemini_key        # Dedicated vision API key (takes priority)

# Ollama configuration (local)
OLLAMA_BASE_URL=http://localhost:11434       # Default if not set

O sistema de visão seleciona automaticamente o provedor apropriado com base no visionModel especificado na configuração do agente.

Opções de Análise

Configure o comportamento da análise com estas opções:

interface AnalysisOptions {
  prompt?: string;                    // Custom analysis prompt
  maxTokens?: number;                 // Response length limit (default: 1000)
  detail?: 'low' | 'high' | 'auto';   // Analysis detail level (OpenAI only)
}

Exemplos de Uso

Análise de Screenshot

const agent = await Agent.create({
  name: 'UIAnalyzer',
  model: 'gpt-4o',
  vision: true
});

// Analyze a UI screenshot
const analysis = await agent.analyzeImage('/path/to/app-screenshot.png', {
  prompt: 'Analyze this mobile app interface. Identify key UI components, layout structure, and potential usability issues.',
  detail: 'high'
});

console.log(analysis);

Processamento de Documentos

// Extract text from scanned documents
const documentText = await agent.extractTextFromImage('/path/to/scanned-invoice.jpg', 'english');

// Generate accessible descriptions
const accessibleDesc = await agent.describeImage('/path/to/chart.png', 'accessibility');

Conversas Multimodais

// Using attachments for cleaner API
const response = await agent.ask("I'm getting an error. Can you analyze this screenshot and help me fix it?", {
  attachments: [
    { type: 'image', path: '/Users/john/Desktop/error.png', name: 'Error Screenshot' }
  ]
});

// Multiple attachments
const response2 = await agent.ask("Compare these UI mockups and suggest improvements", {
  attachments: [
    { type: 'image', path: '/designs/mockup1.png', name: 'Design A' },
    { type: 'image', path: '/designs/mockup2.png', name: 'Design B' }
  ]
});

// Traditional approach (still works)
const response3 = await agent.ask(
  "Please analyze the error screenshot at /Users/john/Desktop/error.png and suggest how to fix the issue"
);

Comparação de Provedores

FeatureOpenAI (gpt-4o)Claude (claude-3-5-sonnet)Gemini (gemini-1.5-pro)Ollama (llava)
Qualidade de AnáliseExcelenteExcelenteExcelenteBoa
Velocidade de ProcessamentoRápidaRápidaRápidaVariável
CustoPague pelo usoPague pelo usoPague pelo usoGratuito (local)
PrivacidadeBaseado em nuvemBaseado em nuvemBaseado em nuvemProcessamento local
Níveis de DetalheBaixo/Alto/AutoPadrãoPadrãoPadrão
Suporte a IdiomasExtensoExtensoExtensoBom

Provedor OpenAI

  • Melhor para: Aplicações de produção que exigem alta precisão
  • Modelo Padrão: gpt-4o
  • Recursos: Controle de nível de detalhe, excelente reconhecimento de texto

Provedor Claude

  • Melhor para: Análise sutil e descrições detalhadas
  • Modelo Padrão: claude-3-5-sonnet-20241022
  • Recursos: Raciocínio forte, excelente compreensão de contexto

Provedor Gemini

  • Melhor para: Tarefas multimodais e análise de documentos
  • Modelo Padrão: gemini-1.5-pro
  • Recursos: Suporte a contexto longo, bom para imagens complexas

Provedor Ollama (Local)

  • Melhor para: Aplicações sensíveis à privacidade ou desenvolvimento
  • Modelo Padrão: llava
  • Recursos: Processamento local, sem custos de API, capacidade offline

Processamento em Lote

Processe múltiplas imagens de forma eficiente:

const images = [
  '/path/to/image1.jpg',
  '/path/to/image2.png',
  '/path/to/image3.gif'
];

// Process all images in parallel
const results = await Promise.all(
  images.map(imagePath => 
    agent.describeImage(imagePath, 'concise')
  )
);

console.log('Analysis results:', results);

// Or use task attachments for batch processing
const batchTask = await agent.createTask({
  prompt: 'Analyze all these images and provide a comparative report',
  attachments: images.map(path => ({
    type: 'image',
    path,
    name: path.split('/').pop()
  }))
});

const batchResult = await agent.executeTask(batchTask.id);

Ferramentas de Vision Integradas

Quando o vision está habilitado, estas ferramentas ficam automaticamente disponíveis:

analyze_image

  • Parâmetros:
    • image_path (string, obrigatório): Caminho para o arquivo de imagem
    • prompt (string, opcional): Prompt de análise personalizado
    • detail (string, opcional): Nível de detalhe 'low' ou 'high'

describe_image

  • Parâmetros:
    • image_path (string, obrigatório): Caminho para o arquivo de imagem
    • style (string, opcional): Estilo de descrição ('detailed', 'concise', 'accessibility', 'technical')

extract_text_from_image

  • Parâmetros:
    • image_path (string, obrigatório): Caminho para o arquivo de imagem
    • language (string, opcional): Dica de idioma para melhor precisão do OCR

Tipos de Resposta

Os métodos de visão retornam respostas em string contendo os resultados da análise.

Resposta de Análise de Imagem

A análise de imagem retorna uma string descritiva com base no seu prompt:

const analysis = await agent.analyzeImage('/path/to/office.jpg', {
  prompt: "What objects are in this image and how is the space organized?",
  detail: "high"
});

// Response: string
"The image shows a modern office workspace with a MacBook Pro laptop, wireless keyboard, and mouse on a wooden desk. To the left is a coffee mug and a notebook. The desk is positioned near a window with natural lighting. The space features a minimalist organization with cable management and a small potted plant."

Resposta de Descrição de Imagem

Describeimage retorna uma string de descrição formatada:

const description = await agent.describeImage('/path/to/product.jpg');

// Response: string
"A professional product photograph featuring a stainless steel water bottle with a matte black finish. The bottle has a wide mouth opening and is photographed against a white background with soft studio lighting creating subtle highlights along the curved surfaces."

Resposta de Extração de Texto de Imagem

O OCR retorna o texto extraído como uma string:

const text = await agent.extractTextFromImage('/path/to/document.png', {
  language: 'en'
});

// Response: string
"INVOICE\nDate: January 15, 2024\nInvoice #: INV-2024-001\n\nBill To:\nAcme Corporation\n123 Main Street\nNew York, NY 10001\n\nDescription          Quantity    Price    Total\nProfessional Services    8 hrs    $150    $1,200\nConsulting Fee           1        $500    $500\n\nSubtotal: $1,700\nTax (8%): $136\nTotal: $1,836"

Resposta de Análise de Imagem a partir de Base64

A análise de imagem em base64 também retorna uma string:

const base64Image = "data:image/png;base64,iVBORw0KG...";
const result = await agent.analyzeImageFromBase64(base64Image, {
  prompt: "Identify the main subject and mood of this image"
});

// Response: string
"The main subject is a sunset landscape with mountains in the background. The mood is serene and peaceful, with warm orange and pink tones dominating the sky. The composition creates a sense of tranquility and natural beauty."

Última atualização: 6 de julho de 2026