Vision & Reasoning
Multimodale Inputs und Reasoning-Effort über CleverRouter.
Vision
Multimodale Modelle akzeptieren Bilder als Teil des Messages-Arrays — URL oder base64. Vision-fähige Modelle haben das Capability-Flag vision (siehe Models).
const completion = await client.chat.completions.create({
model: 'mistral/pixtral-large:eu',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Was siehst du in diesem Bild?' },
{
type: 'image_url',
image_url: {
url: 'https://example.com/invoice.png',
detail: 'high',
},
},
],
},
],
});Für nicht-öffentliche Bilder als base64:
import { readFileSync } from 'node:fs';
const data = readFileSync('./invoice.png').toString('base64');
const completion = await client.chat.completions.create({
model: 'openai/gpt-4o-mini',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Extrahiere Rechnungsnummer und Betrag.' },
{ type: 'image_url', image_url: { url: `data:image/png;base64,${data}` } },
],
},
],
response_format: { type: 'json_object' },
});Limits
Max. 20 Bilder und 20 MB Gesamtgröße pro Request. Größere Workloads bitte mit base64-Chunking aufteilen.
Reasoning
Reasoning-Modelle (openai/o3-mini, anthropic/claude-3-7-sonnet:thinking) erzeugen interne Thinking-Tokens, bevor sie antworten. Steuere das Budget über reasoning_effort:
const completion = await client.chat.completions.create({
model: 'openai/o3-mini',
reasoning_effort: 'high', // 'low' | 'medium' | 'high'
messages: [
{
role: 'user',
content: 'Beweise: für jede Primzahl p > 2 gilt p² mod 24 = 1.',
},
],
});
console.log(completion.usage?.completion_tokens_details?.reasoning_tokens);| Effort | Use-Case | Latenz |
|---|---|---|
low | Validierung, simple Refactors | 2–6s |
medium | Default für komplexe Tasks | 6–20s |
high | Beweise, Architektur-Reviews | 20–90s |
Kosten
Thinking-Tokens werden wie Completion-Tokens abgerechnet. Setze low als Default und upgrade nur explizit.
CleverRouter mapt die Provider-Pendants automatisch: reasoning_effort für OpenAI o-Series, thinking.budget_tokens für Anthropic.