PolarPOLAR

Visão

Envie imagens junto com texto para análise multimodal usando os modelos Urso.

Visão Geral

Os modelos Urso Base, Pro e Ultra suportam entrada multimodal, permitindo que você envie imagens junto com texto no endpoint de Chat Completions. Isso habilita casos de uso como descrição de imagens, análise de documentos, extração de dados visuais e muito mais.

Endpoint

POST https://api.polar-ai.com/v1/chat/completions

Use o mesmo endpoint de Chat Completions, mas envie o conteúdo da mensagem como um array contendo texto e imagens.

Formatos Suportados

FormatoMIME TypeSuporte
PNGimage/pngSim
JPEGimage/jpegSim
WebPimage/webpSim
GIFimage/gifSim (primeiro frame)

Enviando Imagens

Via URL

{
  "role": "user",
  "content": [
    {
      "type": "text",
      "text": "O que você vê nesta imagem?"
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://exemplo.com/imagem.png"
      }
    }
  ]
}

Via Base64

{
  "role": "user",
  "content": [
    {
      "type": "text",
      "text": "Descreva esta imagem em detalhes."
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."
      }
    }
  ]
}

Exemplos

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://api.polar-ai.com/v1",
    api_key="pk-your-key-here"
)

# Via URL
response = client.chat.completions.create(
    model="urso-base",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Descreva o que você vê nesta imagem."
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://exemplo.com/foto-cidade.jpg"
                    }
                }
            ]
        }
    ],
    max_tokens=500
)

print(response.choices[0].message.content)
import base64

# Via Base64
with open("documento.png", "rb") as f:
    image_data = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="urso-pro",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Extraia todas as informações deste documento."
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{image_data}"
                    }
                }
            ]
        }
    ],
    max_tokens=1000
)

print(response.choices[0].message.content)

TypeScript

import OpenAI from "openai";
import * as fs from "fs";

const client = new OpenAI({
  baseURL: "https://api.polar-ai.com/v1",
  apiKey: "pk-your-key-here",
});

// Via URL
const response = await client.chat.completions.create({
  model: "urso-base",
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: "Descreva o que você vê nesta imagem.",
        },
        {
          type: "image_url",
          image_url: {
            url: "https://exemplo.com/foto-cidade.jpg",
          },
        },
      ],
    },
  ],
  max_tokens: 500,
});

console.log(response.choices[0].message.content);

// Via Base64
const imageBuffer = fs.readFileSync("documento.png");
const base64Image = imageBuffer.toString("base64");

const response2 = await client.chat.completions.create({
  model: "urso-pro",
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: "Extraia todas as informações deste documento.",
        },
        {
          type: "image_url",
          image_url: {
            url: `data:image/png;base64,${base64Image}`,
          },
        },
      ],
    },
  ],
  max_tokens: 1000,
});

console.log(response2.choices[0].message.content);

curl

curl -X POST https://api.polar-ai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer pk-your-key-here" \
  -d '{
    "model": "urso-base",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Descreva o que você vê nesta imagem."
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://exemplo.com/foto-cidade.jpg"
            }
          }
        ]
      }
    ],
    "max_tokens": 500
  }'

Múltiplas Imagens

Você pode enviar várias imagens em uma única mensagem para comparação ou análise conjunta:

response = client.chat.completions.create(
    model="urso-pro",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Compare estas duas imagens e descreva as diferenças."
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://exemplo.com/imagem1.jpg"}
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://exemplo.com/imagem2.jpg"}
                }
            ]
        }
    ],
    max_tokens=800
)

Casos de Uso

Análise de Documentos

Extraia informações de documentos brasileiros como notas fiscais, boletos e contratos:

response = client.chat.completions.create(
    model="urso-pro",
    messages=[
        {
            "role": "system",
            "content": "Você é um especialista em análise de documentos brasileiros. Extraia todas as informações relevantes de forma estruturada."
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Extraia o CNPJ, valor total e data de emissão desta nota fiscal."
                },
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{nfe_base64}"}
                }
            ]
        }
    ],
    max_tokens=500
)

Descrição de Imagens

Gere descrições detalhadas para acessibilidade ou catalogação:

response = client.chat.completions.create(
    model="urso-base",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Faça uma descrição detalhada desta imagem para fins de acessibilidade."
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://exemplo.com/foto.jpg"}
                }
            ]
        }
    ],
    max_tokens=300
)

Limites

  • Tamanho máximo por imagem: 20 MB
  • Imagens maiores são redimensionadas automaticamente
  • O número de tokens consumidos depende da resolução da imagem
  • Para documentos com muitas páginas, considere o endpoint Document AI

Próximos Passos

On this page