Tokia

Multimodal

Vários modelos disponíveis no Tokia aceitam entradas além de texto: imagens, áudio e vídeo. Esta página explica como enviar cada tipo de mídia e quais modelos suportam.

Visão geral

ModalidadeEndpointModelos populares
Imagem (input)/v1/chat/completionsGPT-4o, Claude Sonnet/Opus, Gemini Pro/Flash
Imagem (geração)/v1/images/generationsFlux Schnell/Pro/Dev, DALL-E 3, Ideogram, Recraft
Áudio (transcrição)/v1/audio/transcriptionsWhisper large-v3
Áudio (input no chat)/v1/chat/completionsGPT-4o-audio-preview, Gemini Flash
Vídeo (input)/v1/chat/completionsGemini Pro/Flash (via frames)

Enviando imagens no chat

Para enviar uma imagem junto com uma mensagem de texto, use o campo content como array com partes text e image_url:

Via URL pública

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://api.usetokia.com/v1",
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "O que tem nesta imagem?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://exemplo.com/foto.jpg"
                    }
                }
            ]
        }
    ],
)
print(response.choices[0].message.content)

Via base64

Para imagens locais, encode em base64 e use o prefixo data:image/jpeg;base64,:

python
import base64

with open("foto.jpg", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Descreva esta imagem"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/jpeg;base64,{img_b64}"
                    }
                }
            ]
        }
    ],
)

Em TypeScript

typescript
import OpenAI from "openai";
import { readFileSync } from "fs";

const client = new OpenAI({
  apiKey: process.env.TOKIA_KEY,
  baseURL: "https://api.usetokia.com/v1",
});

const imgB64 = readFileSync("foto.jpg").toString("base64");

const res = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "O que tem nesta imagem?" },
        {
          type: "image_url",
          image_url: { url: `data:image/jpeg;base64,${imgB64}` },
        },
      ],
    },
  ],
});
console.log(res.choices[0].message.content);

Modelos com suporte a visão

Nem todo modelo aceita imagens. Se você enviar uma imagem para um modelo que não suporta visão, o Tokia retorna erro 400 image_not_supported com a mensagem indicando quais modelos aceitam imagem.

  • OpenAI: gpt-4o, gpt-4o-mini, gpt-4-turbo, o1, o1-mini
  • Anthropic: claude-sonnet-4-20250514, claude-opus-4-20250514, claude-3.5-sonnet, claude-3-haiku
  • Google: gemini-2.0-flash, gemini-2.5-pro, gemini-2.5-flash
  • Meta: llama-3.2-90b-vision, llama-3.2-11b-vision

Gerando imagens

Para gerar imagens, use o endpoint /v1/images/generations:

python
response = client.images.generate(
    model="flux-schnell",
    prompt="Um gato usando óculos de sol na praia de Copacabana",
    n=1,
    size="1024x1024",
)
print(response.data[0].url)  # URL da imagem gerada

Veja a referência completa em /v1/images/generations.

Áudio: transcrição com Whisper

Para transcrever áudio, envie o arquivo para /v1/audio/transcriptions:

bash
curl https://api.usetokia.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $TOKIA_KEY" \
  -F file=@reuniao.mp3 \
  -F model=whisper-large-v3 \
  -F language=pt
python
audio_file = open("reuniao.mp3", "rb")
transcript = client.audio.transcriptions.create(
    model="whisper-large-v3",
    file=audio_file,
    language="pt",
)
print(transcript.text)

Áudio no chat (GPT-4o Audio)

Modelos como gpt-4o-audio-preview aceitam áudio diretamente no chat, permitindo conversas por voz. O áudio é enviado como parte docontent da mensagem, similar a imagens:

python
import base64

with open("pergunta.wav", "rb") as f:
    audio_b64 = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": audio_b64,
                        "format": "wav"
                    }
                }
            ]
        }
    ],
)
print(response.choices[0].message.content)

Vídeo (via frames)

Alguns modelos (como Gemini) aceitam vídeo como sequência de frames. O suporte a vídeo nativo está em evolução — consulte o catálogo de modelos para ver quais modelos aceitam vídeo.

Próximos passos