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
| Modalidade | Endpoint | Modelos populares |
|---|---|---|
| Imagem (input) | /v1/chat/completions | GPT-4o, Claude Sonnet/Opus, Gemini Pro/Flash |
| Imagem (geração) | /v1/images/generations | Flux Schnell/Pro/Dev, DALL-E 3, Ideogram, Recraft |
| Áudio (transcrição) | /v1/audio/transcriptions | Whisper large-v3 |
| Áudio (input no chat) | /v1/chat/completions | GPT-4o-audio-preview, Gemini Flash |
| Vídeo (input) | /v1/chat/completions | Gemini 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
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,:
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
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:
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 geradaVeja a referência completa em /v1/images/generations.
Áudio: transcrição com Whisper
Para transcrever áudio, envie o arquivo para /v1/audio/transcriptions:
curl https://api.usetokia.com/v1/audio/transcriptions \
-H "Authorization: Bearer $TOKIA_KEY" \
-F file=@reuniao.mp3 \
-F model=whisper-large-v3 \
-F language=ptaudio_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:
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
- /v1/chat/completions — referência completa do endpoint de chat
- /v1/images/generations — referência do endpoint de imagens
- /v1/audio/transcriptions — referência do endpoint de áudio
- Streaming (SSE) — como consumir respostas em tempo real