Why did we open-source our inference engine? Read the post

Answer image questions 91% cheaper than GPT-⁠6.1 Sol

SIE is the open-source inference engine serving Qwen3.8 27B. The model answers questions about your photos, or says when the answer is not visible.

SIE Qwen3.8 27B

9 of 10 people agree
A hand holding a red Folgers Gourmet Supreme coffee can

Question from a blind userWhat kind of coffee is this?

AnswerFolgers

VizWiz · CC BY 4.0

GPT-⁠6.1 Sol and Claude Sonnet 5.5 answer what the photo doesn’t show

The blue lid of a yogurt tub on a floor next to a pair of jeans; no date is printed on the visible part
VizWiz · CC BY 4.0

Question from a blind userWhat is the expire date on this yogurt?

10 of 10 people said the photo doesn’t show it

GPT-6.1 Sol (medium reasoning)

Gave a date that isn’t there

17/03

GPT-6 Luna (high reasoning)

Gave a date that isn’t there

12/14

A completely blurred close-up of a bottle label with a few dark stripes of unreadable text and an orange edge
VizWiz · CC BY 4.0

Question from a blind userWhat is in this bottle?

9 of 10 people said the photo doesn’t show it

Claude Sonnet 5.5 (adaptive thinking)

Guessed what’s inside

Prescription medication (pills).

GPT-6.1 Sol (medium reasoning)

Guessed what’s inside

Orange juice

41% fewer missed abstentions than GPT-⁠6.1 Sol, 91% cheaper

Required abstentions missed
299 unanswerable photos ↓
SIE Qwen3.8 27B
SIE Qwen3.8 27B 47.5%
GPT-6 Luna (medium reasoning)
GPT-6 Luna (medium reasoning) 70.9%
Claude Haiku 5.5
Claude Haiku 5.5 79.3%
GPT-6.1 Sol
GPT-6.1 Sol 80.6%
Claude Sonnet 5.5
Claude Sonnet 5.5 84.6%
Cost per 1,000 questions
USD ↓
GPT-6 Luna (medium reasoning)
$0.289 GPT-6 Luna (medium reasoning)
Claude Haiku 5.5
$0.307 Claude Haiku 5.5
SIE Qwen3.8 27B
$0.425 SIE Qwen3.8 27B
GPT-6.1 Sol
GPT-6.1 Sol $4.75
Claude Sonnet 5.5
Claude Sonnet 5.5 $5.19
Evaluation
Tested
600 VizWiz photo questions; 299 crowd-labelled unanswerable
Scored
Exact “unanswerable” reply; longer abstentions and failures count as misses
Prices
SIE token-mix estimate; rival list-price usage, 11 October 2026

Send an image and a question, get the answer

from pathlib import Path
from sie_sdk import SIEClient
​
client = SIEClient(api_key="API keysk-sie-…")
​
image = {"data": Path(imageVizWiz_test_00000984.jpgbrowse).read_bytes(), "format": "jpeg"}
result = client.generate(
"modelQwen/Qwen3.8-27B-FP8",
"queryWhat kind of coffee is this? Answer the question using a single word or phrase. Give your best answer from what is visible, even if the photo is blurry or shows only part of it. Reply 'Unanswerable' only if the answer cannot be seen in the photo at all.",
max_new_tokens=128,
images=[image],
temperature=0,
presence_penalty=0,
)
print(result["text"])
import { readFile } from 'node:fs/promises';
import { SIEClient } from '@superlinked/sie-sdk';

const client = new SIEClient(undefined, { apiKey: 'sk-sie-…' });

const image = await readFile("VizWiz_test_00000984.jpg");
const result = await client.generate(
  'Qwen/Qwen3.8-27B-FP8',
  "What kind of coffee is this?\nAnswer the question using a single word or phrase. Give your best answer from what is visible, even if the photo is blurry or shows only part of it.\nReply 'Unanswerable' only if the answer cannot be seen in the photo at all.",
  { maxNewTokens: 128, images: [image], temperature: 0, presencePenalty: 0 },
);
console.log(result.text);
image_bytes=$(base64 < 'VizWiz_test_00000984.jpg' | tr -d '\n')
curl https://api.superlinked.com/v1/generate/Qwen__Qwen3.8-27B-FP8 \
  -H "Authorization: Bearer sk-sie-…" \
  -H "Content-Type: application/json" \
  -d "{\"prompt\":\"What kind of coffee is this?\\nAnswer the question using a single word or phrase. Give your best answer from what is visible, even if the photo is blurry or shows only part of it.\\nReply 'Unanswerable' only if the answer cannot be seen in the photo at all.\",\"max_new_tokens\":128,\"images\":[{\"data\":\"$image_bytes\",\"format\":\"jpeg\"}],\"temperature\":0,\"presence_penalty\":0}"
Build the "Image questions" capability into my app using the Superlinked Inference Engine (SIE).

Context
- SIE is an OpenAI-style inference API. Python SDK: `from sie_sdk import SIEClient`; TypeScript: `@superlinked/sie-sdk`.
- Base URL: https://api.superlinked.com (or my regional endpoint). Auth: Bearer key from env `SIE_API_KEY` (never hard-code it).
- Model: Qwen/Qwen3.8-27B-FP8 (SIE primitive: /generate). Keep the model id configurable.

Task
- Input: an uploaded image plus a question or caption instruction.
- Behaviour: return a detailed caption or answer the question about the image
- Send one POST https://api.superlinked.com/v1/generate/Qwen__Qwen3.8-27B-FP8 request (SDK: generate) with the question as prompt, the image in images, max_new_tokens 128, temperature 0 and presence_penalty 0, so answers are greedy and repeatable. Read the answer from text.

Deliverables
- A typed client wrapper, an application-level function for this task, error handling for timeouts/empty input, and unit tests with a stubbed client.
- Wire it into my existing stack (ask me which framework if unclear) and add a short usage example.
Output
A hand holding a red Folgers Gourmet Supreme coffee can
VizWiz_test_00000984.jpg

text Folgers

Answer image questions with SIE

Self-hosted (Kubernetes)

Your data stays in your cloud, backed by our engineers.

  • Terraform to your cloud in minutes
  • Apache-2.0, same engine as Serverless
  • GPU workers scale to zero between jobs
  • Per-tenant pools, no noisy neighbors
Agent prompt
Deploy SIE to our AWS account with the superlinked/sie/aws Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Google Cloud project with the superlinked/sie/google Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Azure subscription with the superlinked/sie/azure Terraform module. Docs: superlinked.com/docs/deployment.Deploy SIE to our Alibaba Cloud account with the superlinked/sie/alicloud Terraform module. Docs: superlinked.com/docs/deployment.

Run locally

The open-source server on your own machine.

  • NVIDIA H100 80GB
  • One container, no cluster
  • Process your data fully offline
  • Same SDK and model IDs as Serverless
docker run --gpus all -p 8080:8080 ghcr.io/superlinked/sie-server:latest-cuda12-sglang

Switch to SIE in 5 minutes

from openai import OpenAI

client = OpenAI(api_key="sk-…")
reply = client.responses.create(
    model="gpt-6-luna",
    input=[{"role": "user", "content": [
        {"type": "input_image", "image_url": image_data_url},
        {"type": "input_text", "text": prompt},
    ]}],
)
answer = reply.output_text
import anthropic

client = anthropic.Anthropic(api_key="sk-ant-…")
reply = client.messages.create(
    model="claude-haiku-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": [
        {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": image_b64}},
        {"type": "text", "text": prompt},
    ]}],
)
answer = next(block.text for block in reply.content if block.type == "text")
SIE
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
reply = client.generate("Qwen/Qwen3.8-27B-FP8", prompt, images=[image])
answer = reply["text"]
from sie_sdk import SIEClient

client = SIEClient(api_key="sk-sie-…")
reply = client.generate("Qwen/Qwen3.8-27B-FP8", prompt, images=[image])
answer = reply["text"]

Contact us

Tell us about your use case and we'll get back to you shortly.

Apply for an inference grant

Free capacity on our hosted cluster for selected projects. Tell us what you run and we reply by email.