mallit

deepseek-v4.1-flash

Markdown · JSON

deepseek-v4.1-flash

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Tietoa mallista

Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.

Tekstin ja kuvien yhteiskäsittely

DeepSeek V4.1 Flash on alusta lähtien multimodaalinen malli: kuvaenkooderi muuntaa kuvan esitykseksi, jota käsitellään yhdessä tekstin kanssa. Tulos on tekstiä. Malli on suunniteltu visuaaliseen ymmärtämiseen, ohjelmointiin ja agenttitehtäviin; konteksti ulottuu miljoonaan tokeniin.

Suuren syötteen arkkitehtuuri

Pääverkossa on 552 miljardia parametria. Kausaalisessa enkooderissa ja dekooderissa on kummassakin 20 kerrosta. Syötteen käsittelyssä aktiivisia parametreja on 8 miljardia tokenia kohden ja generoinnissa 16 miljardia. Jaottelu on suunniteltu tehtäviin, joissa syöteaineisto on huomattavasti vastausta laajempi.

Pakattu harva huomio käyttää tietoja uudelleen kerrosten välillä ja rajoittaa kontekstin olennaisten osien toistuvaa hakua. Puuttuvat paikallisen huomion tilat rekonstruoidaan viimeaikaisesta jaksosta. Ehdollisessa Engram-muistissa on 196 miljardia parametria, ja sen tietueita haetaan harvalla tokenipohjaisella haulla. Se on erillinen muistilohko, ei uusi nimitys pääverkon koolle. Jokaisessa asiantuntijakerroksessa on yksi yhteinen ja 384 reititettävää asiantuntijaa; tokenille valitaan kuusi reititettävää asiantuntijaa. Lisäksi käytetään muutettuja kerrosten välisiä yhteyksiä ja DSpark-moduulia spekulatiiviseen dekoodaukseen.

Koulutus ja agenttiympäristöt

Malli on koulutettu alusta alkaen 45 biljoonan tokenin multimodaalisella aineistolla. Jatkokoulutus etenee tässä järjestyksessä: esimerkkipohjainen koulutus, vahvistusoppiminen ja lopuksi distillaatio mallin omilla sekvensseillä.

DeepSeek kasvattaa synteettisten tehtävien aineistoja, työympäristöjä ja agentin toimintapolkuja. Koulutuksessa yhdistetään tehtävä, käytettävissä oleva ympäristö ja tuloksen tarkistusmenetelmä; aineistoa suodatetaan, toistot poistetaan ja vaikeustaso valitaan. Tämä kuvaa koulutuksen rakennetta, ei ulkoisten työkalujen automaattista saatavuutta mallia kutsuttaessa.

Säädettävä analyysin syvyys

Päättelyä säädetään kokonaisluvulla välillä 1–100. Jatkuva asteikko määrittää analyysiin käytettävän panoksen; syvä päättely voi vaatia enemmän aikaa ja tokeneita.

Keskustelun jatkaminen ja toiminnot

Mallin formaatti mahdollistaa monivuoroisen keskustelun, työkalukutsut, tallennetun päättelyn sekä tekstin ja kuvien vuorottelun. Sovellus suorittaa työkalut, ja niiden tulokset muodostavat seuraavan vaiheen aineiston.

Vastaus on edelleen tekstiä. Visuaalinen kyky edellyttää sopivaa syötemenetelmää. Kontekstin koko ja suositeltu generointipituus eivät määritä yleistä vastauksen enimmäispituutta.

Käytännön tehtävä

Käytännön tehtävä

Tekninen esimerkki englanniksi

Resolve conflicting rollout rules

Plan this rollout using only these rules: R1: migrate the database before enabling the new writer. R2: keep the old reader until rollback is no longer needed. R3: rollback needs the old database column. The draft removes that column immediately after enabling the writer. Return a safe ordered plan and the specific draft step that conflicts with a rule.

Odotettu tulos

An ordered rollout proposal with references to R1-R3 and the conflicting step identified.

Tarkista tulos

The plan must retain the old column throughout the rollback period.
Ailoot · Anthropic Messages POST /v1/messages deepseek-v4.1-flash

deepseek-v4.1-flash

DeepSeek /deepseek-v4.1-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · Anthropic Messages POST /v1/messages
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-v4.1-flash
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajat
Kohteiden vähimmäismäärä: 1
Oletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
user, assistant
Oletus—
Kenttämessages[].contentTyyppistring|content_block[]VaatimusPakollinenArvot & rajatOletus—
KenttäsystemTyyppistring|content_block[]VaatimusValinnainenArvot & rajatOletus—
Kenttämax_tokensTyyppiintegerVaatimusPakollinenArvot & rajat
Vähimmäismäärä: 1
Rajoitus koskee: valitun mallin/kortin täsmällinen yläraja
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttästop_sequencesTyyppistring[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppitool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].nameTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: työkalu annettu
Oletus—
Kenttätools[].descriptionTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttätools[].input_schemaTyyppiJSON_schemaVaatimusValinnainenArvot & rajatOletus—
Kenttätool_choiceTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäthinking.typeTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäthinking.budget_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäoutput_config.effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttämetadataTyyppiobjectVaatimusValinnainenArvot & rajatOletus—
Kenttäcache_controlTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

messages[].content tai type=text-lohko

Teksti + kuva

{type:image,source:{type:base64,media_type,data}} tai lähde, jossa type=url

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, messages, max_tokens
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot Anthropic MessagesPOST /v1/messages
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · Anthropic Messages

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="deepseek-v4.1-flash",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "deepseek-v4.1-flash",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='deepseek-v4.1-flash',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · Anthropic Messages

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä kaikki sisältölohkot, päättelyallekirjoitukset ja todelliset työkalukäytön ID:t. Kokoa kaikki SSE-lohkomuutokset; ensimmäinen tekstilohko ei ole koko tulos.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
KenttäidTyyppistring
KenttämodelTyyppistring
Kenttäcontent[]Tyyppitext|thinking|tool_use|other content block
Kenttästop_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

Ailoot · OpenAI Responses POST /v1/responses deepseek-v4.1-flash

deepseek-v4.1-flash

DeepSeek /deepseek-v4.1-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · OpenAI Responses POST /v1/responses
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-v4.1-flash
Oletus—
KenttäinputTyyppistring|input_item[]VaatimusPakollinenArvot & rajatOletus—
KenttäinstructionsTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttäinput[].typeTyyppistringVaatimusValinnainenArvot & rajat
message, reasoning, function_call, function_call_output
Oletus—
Kenttäinput[].contentTyyppistring|content_part[]VaatimusValinnainenArvot & rajatOletus—
Kenttäinput[].call_idTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: function_call_output; säilytä todella palautettu call_id
Oletus—
Kenttäinput[].outputTyyppistring|content_part[]VaatimusValinnainenArvot & rajat
Sovelletaan, kun: function_call_output
Oletus—
Kenttämax_output_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppitool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätool_choiceTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäparallel_tool_callsTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning.effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning.summaryTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätext.formatTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätext.verbosityTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäincludeTyyppistring[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttästoreTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprevious_response_idTyyppistringVaatimusValinnainenArvot & rajat
ID-vaatimus: Vain tuetusta jatkosta saatu todellinen vastauksen ID
Riippuu mallista
Oletus—
Kenttäservice_tierTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_keyTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_optionsTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

syöteteksti tai input_text-osa

Teksti + kuva

{type:input_image,image_url}

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, input
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot OpenAI ResponsesPOST /v1/responses
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · OpenAI Responses

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="deepseek-v4.1-flash", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "deepseek-v4.1-flash", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="deepseek-v4.1-flash", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · OpenAI Responses

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä jokainen tuloskohde ja sisältöosa, funktion todellinen call_id, salattu päättely ja käyttötiedot. Säilytä virtakäsittelyssä tapahtuman/kohteen koko identiteetti.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
KenttäidTyyppistring
KenttästatusTyyppistring
Kenttäoutput[]Tyyppimessage|reasoning|function_call|other item
Kenttäoutput[].content[]Tyyppicontent part
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

Ailoot · OpenAI Chat POST /v1/chat/completions deepseek-v4.1-flash

deepseek-v4.1-flash

DeepSeek /deepseek-v4.1-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · OpenAI Chat POST /v1/chat/completions
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-v4.1-flash
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajat
Kohteiden vähimmäismäärä: 1
Oletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
Esimerkit: system, user, assistant, tool, function
Ehdot: Nämä roolit esitetään nimenomaisesti lähdekoodin yhteensopivuustyypeissä; mallin täsmällinen roolijoukko pysyy mallikohtaisena.
Riippuu mallista
Oletus—
Kenttämessages[].contentTyyppistring|content_part[]|nullVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_callsTyyppitool_call[]VaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_call_idTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: role=tool; käytä todella palautettua ID:tä
Oletus—
Kenttämessages[].nameTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].reasoning_contentTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: Palauta todella saatu päättely takaisin mallille, kun kyseinen malli käyttää sitä
Oletus—
Kenttämessages[].reasoning_detailsTyyppiobject|arrayVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttämax_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
Kenttämax_completion_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
Kenttästream_options.include_usageTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttästopTyyppistring|string[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppifunction_tool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].typeTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].function.nameTyyppistringVaatimusPakollinenArvot & rajat
Sovelletaan, kun: funktiotyökalu annettu
Oletus—
Kenttätools[].function.descriptionTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttätools[].function.parametersTyyppiJSON_schemaVaatimusValinnainenArvot & rajatOletus—
Kenttätool_choiceTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäparallel_tool_callsTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäresponse_formatTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning_effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäreasoningTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäservice_tierTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäinstructionsTyyppistringVaatimusValinnainenArvot & rajat
Yhteensopivuuskenttä
Oletus—
KenttäfunctionsTyyppifunction[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäfunction_callTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_optionsTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

messages[].content

Teksti + kuva

{type:image_url,image_url:{url,detail}}

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, messages
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot OpenAI ChatPOST /v1/chat/completions
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · OpenAI Chat

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-v4.1-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "deepseek-v4.1-flash",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='deepseek-v4.1-flash',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · OpenAI Chat

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä jokainen vastausvaihtoehto sisältöineen, työkalukutsuineen ja päättelyineen. Kokoa SSE:ssä muutokset vastausvaihtoehdon ja työkalun indeksin mukaan ja säilytä lopullinen päättymissyy sekä käyttötiedot.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
Kenttächoices[].indexTyyppiinteger
Kenttächoices[].message.contentTyyppistring|null
Kenttächoices[].message.tool_callsTyyppitool_call[]
Kenttächoices[].message.reasoning_contentTyyppistring
Kenttächoices[].message.reasoning_detailsTyyppiobject|array
Kenttächoices[].finish_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

Ailoot · Anthropic Messages POST /v1/messages deepseek-flash

deepseek-flash

DeepSeek /deepseek-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · Anthropic Messages POST /v1/messages
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-flash
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajat
Kohteiden vähimmäismäärä: 1
Oletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
user, assistant
Oletus—
Kenttämessages[].contentTyyppistring|content_block[]VaatimusPakollinenArvot & rajatOletus—
KenttäsystemTyyppistring|content_block[]VaatimusValinnainenArvot & rajatOletus—
Kenttämax_tokensTyyppiintegerVaatimusPakollinenArvot & rajat
Vähimmäismäärä: 1
Rajoitus koskee: valitun mallin/kortin täsmällinen yläraja
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttästop_sequencesTyyppistring[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppitool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].nameTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: työkalu annettu
Oletus—
Kenttätools[].descriptionTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttätools[].input_schemaTyyppiJSON_schemaVaatimusValinnainenArvot & rajatOletus—
Kenttätool_choiceTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäthinking.typeTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäthinking.budget_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäoutput_config.effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttämetadataTyyppiobjectVaatimusValinnainenArvot & rajatOletus—
Kenttäcache_controlTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

messages[].content tai type=text-lohko

Teksti + kuva

{type:image,source:{type:base64,media_type,data}} tai lähde, jossa type=url

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, messages, max_tokens
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot Anthropic MessagesPOST /v1/messages
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · Anthropic Messages

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="deepseek-flash",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "deepseek-flash",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='deepseek-flash',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · Anthropic Messages

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä kaikki sisältölohkot, päättelyallekirjoitukset ja todelliset työkalukäytön ID:t. Kokoa kaikki SSE-lohkomuutokset; ensimmäinen tekstilohko ei ole koko tulos.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
KenttäidTyyppistring
KenttämodelTyyppistring
Kenttäcontent[]Tyyppitext|thinking|tool_use|other content block
Kenttästop_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

Ailoot · OpenAI Responses POST /v1/responses deepseek-flash

deepseek-flash

DeepSeek /deepseek-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · OpenAI Responses POST /v1/responses
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-flash
Oletus—
KenttäinputTyyppistring|input_item[]VaatimusPakollinenArvot & rajatOletus—
KenttäinstructionsTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttäinput[].typeTyyppistringVaatimusValinnainenArvot & rajat
message, reasoning, function_call, function_call_output
Oletus—
Kenttäinput[].contentTyyppistring|content_part[]VaatimusValinnainenArvot & rajatOletus—
Kenttäinput[].call_idTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: function_call_output; säilytä todella palautettu call_id
Oletus—
Kenttäinput[].outputTyyppistring|content_part[]VaatimusValinnainenArvot & rajat
Sovelletaan, kun: function_call_output
Oletus—
Kenttämax_output_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppitool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätool_choiceTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäparallel_tool_callsTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning.effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning.summaryTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätext.formatTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätext.verbosityTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäincludeTyyppistring[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttästoreTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprevious_response_idTyyppistringVaatimusValinnainenArvot & rajat
ID-vaatimus: Vain tuetusta jatkosta saatu todellinen vastauksen ID
Riippuu mallista
Oletus—
Kenttäservice_tierTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_keyTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_optionsTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

syöteteksti tai input_text-osa

Teksti + kuva

{type:input_image,image_url}

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, input
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot OpenAI ResponsesPOST /v1/responses
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · OpenAI Responses

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/responses \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.responses.create(model="deepseek-flash", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "deepseek-flash", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
with client.responses.stream(model="deepseek-flash", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · OpenAI Responses

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä jokainen tuloskohde ja sisältöosa, funktion todellinen call_id, salattu päättely ja käyttötiedot. Säilytä virtakäsittelyssä tapahtuman/kohteen koko identiteetti.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
KenttäidTyyppistring
KenttästatusTyyppistring
Kenttäoutput[]Tyyppimessage|reasoning|function_call|other item
Kenttäoutput[].content[]Tyyppicontent part
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

Ailoot · OpenAI Chat POST /v1/chat/completions deepseek-flash

deepseek-flash

DeepSeek /deepseek-flash
Mallin ID
  • deepseek-v4.1-flash
  • deepseek-flash

Aloitus

DeepSeek V4.1 Flash on multimodaalinen malli tekstin ja kuvien analysointiin, ohjelmointiin ja agenttityöskentelyyn pitkällä kontekstilla.

Hyväksytyt syötteet
Teksti · Kuvat
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot · OpenAI Chat POST /v1/chat/completions
Syötetyypit
text, image
Tulostyypit
text
Konteksti
1 000 000 tokens
Enimmäistuloste
393 216 tokens
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
deepseek-flash
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajat
Kohteiden vähimmäismäärä: 1
Oletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
Esimerkit: system, user, assistant, tool, function
Ehdot: Nämä roolit esitetään nimenomaisesti lähdekoodin yhteensopivuustyypeissä; mallin täsmällinen roolijoukko pysyy mallikohtaisena.
Riippuu mallista
Oletus—
Kenttämessages[].contentTyyppistring|content_part[]|nullVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_callsTyyppitool_call[]VaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_call_idTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: role=tool; käytä todella palautettua ID:tä
Oletus—
Kenttämessages[].nameTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].reasoning_contentTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: Palauta todella saatu päättely takaisin mallille, kun kyseinen malli käyttää sitä
Oletus—
Kenttämessages[].reasoning_detailsTyyppiobject|arrayVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttämax_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
Kenttämax_completion_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
Kenttästream_options.include_usageTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttästopTyyppistring|string[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppifunction_tool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].typeTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].function.nameTyyppistringVaatimusPakollinenArvot & rajat
Sovelletaan, kun: funktiotyökalu annettu
Oletus—
Kenttätools[].function.descriptionTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttätools[].function.parametersTyyppiJSON_schemaVaatimusValinnainenArvot & rajatOletus—
Kenttätool_choiceTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäparallel_tool_callsTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäresponse_formatTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning_effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäreasoningTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäservice_tierTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäinstructionsTyyppistringVaatimusValinnainenArvot & rajat
Yhteensopivuuskenttä
Oletus—
KenttäfunctionsTyyppifunction[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäfunction_callTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_optionsTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

messages[].content

Teksti + kuva

{type:image_url,image_url:{url,detail}}

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametrimaterial_typesSopimustext, image
ParametrirequiredSopimusmodel, messages
Parametrioptional_controlsSopimusnull
Parametricontent_typeSopimusapplication/json
Parametritext_file_materialSopimusvarsinainen UTF-8-sisältö lisätään tekstinä; tiedostojen ID- tai URLs-arvot tarvitsevat erillisen täsmällisen tuen

Elinkaari: exact retained published method

Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.

Hinnoittelu

Ailoot-menetelmien hinnat

Ailoot OpenAI ChatPOST /v1/chat/completions
Syöte
0,0003 $ / 1K
Tuloste
0,0012 $ / 1K
Välimuistin luku
≈0,00003 $ / 1K
Välimuistiin kirjoitus
0,0003 $ / 1K
Välimuistiin kirjoitus, 5 min
0,0003 $ / 1K tokens

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Viitehinnaston tiedot

Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.

deepseek-v4.1-flash · Julkaistut hinnat

Hinnat asetusten mukaan

AsetuksetVeloitus
Asetuksetdeepseek-v4.1-flash · Julkaistut hinnatVeloitus
Syöte · Välimuistiin kirjoitus $0.000 1K tokenia kohden
Syöte · Välimuistin luku $0.000006 1K tokenia kohden
Syöte · Syötetokenit $0.0003 1K tokenia kohden
Tuloste · Tulostokenit $0.0012 1K tokenia kohden
Pyyntöä kohden $0.000 pyyntöä kohden

Esimerkkipyynnöt

Ailoot · OpenAI Chat

TekstiesimerkkiSyöte, kuvaPython SDKNode.js SDKPython-suoratoisto
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "deepseek-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "deepseek-flash",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='deepseek-flash',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Vastaanota ja tallenna tulokset

Ailoot · OpenAI Chat

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä jokainen vastausvaihtoehto sisältöineen, työkalukutsuineen ja päättelyineen. Kokoa SSE:ssä muutokset vastausvaihtoehdon ja työkalun indeksin mukaan ja säilytä lopullinen päättymissyy sekä käyttötiedot.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
Kenttächoices[].indexTyyppiinteger
Kenttächoices[].message.contentTyyppistring|null
Kenttächoices[].message.tool_callsTyyppitool_call[]
Kenttächoices[].message.reasoning_contentTyyppistring
Kenttächoices[].message.reasoning_detailsTyyppiobject|array
Kenttächoices[].finish_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

Ailoot deepseek-v4.1-flash, deepseek-flash

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

deepseek-v4.1-flash, deepseek-flash

FAQ · deepseek-v4.1-flash
Mitä syötteitä ja tuloksia on saatavilla?

POST /v1/messages · deepseek-v4.1-flash: text, image → text

POST /v1/responses · deepseek-v4.1-flash: text, image → text

POST /v1/chat/completions · deepseek-v4.1-flash: text, image → text

POST /v1/messages · deepseek-flash: text, image → text

POST /v1/responses · deepseek-flash: text, image → text

POST /v1/chat/completions · deepseek-flash: text, image → text

Mitä kenttiä pyyntö käyttää?

POST /v1/messages · deepseek-v4.1-flash: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · deepseek-v4.1-flash: model, input, instructions, stream

POST /v1/chat/completions · deepseek-v4.1-flash: model, messages, stream

POST /v1/messages · deepseek-flash: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · deepseek-flash: model, input, instructions, stream

POST /v1/chat/completions · deepseek-flash: model, messages, stream

Mitä rajoja sovelletaan?

POST /v1/messages · deepseek-v4.1-flash: ctx: 1000000; max_out: 393216; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · deepseek-v4.1-flash: ctx: 1000000; max_out: 393216

POST /v1/chat/completions · deepseek-v4.1-flash: ctx: 1000000; max_out: 393216; messages.min_items: 1

POST /v1/messages · deepseek-flash: ctx: 1000000; max_out: 393216; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · deepseek-flash: ctx: 1000000; max_out: 393216

POST /v1/chat/completions · deepseek-flash: ctx: 1000000; max_out: 393216; messages.min_items: 1

Lisätietoja

Yhdistä Ailoot Claude Codeen, OpenCodeen, Hermesiin tai omaan sovellukseesi.

Yritys ja sen projektisalkku

Yritys ja sen projektisalkku: miljoonia asiakkaita; kuukausittainen myynti miljardiluokassa.

Osta tokenit alennuksella.

Tilausalennus säännölliseen käyttöön. Kampanjakoodit — jopa 50% tokeniostoista.

Tilaus
Valitse alennushintainen paketti säännöllisiä pyyntöjäsi varten.
Kampanjakoodi jopa 50%
Syötä koodi oston yhteydessä. Hinta lasketaan uudelleen voimassa olevan kampanjan mukaan.
Kulut historiassa
Malli, tokenit ja summa tallennetaan jokaiselle pyynnölle.

Valitse tilaus · Katso mallihinnat

Yhdistä API tuotteeseen, jonka myyt.

SaaS, sovellukset ja botit Ailootin palveluehtojen ja lisenssisopimuksen mukaisesti. Pyydä edelleenmyyntiin jälleenmyyjälisenssi.

Kaupallinen sovellus
Lisää tekstin, kuvien, videoiden ja äänen luonti palvelusi maksullisiin ominaisuuksiin.
Jälleenmyyjälisenssi
Lähetä projektikuvaus ja pääsyn toteutustapa. Pyydä kirjalliset käyttö- ja jälleenmyyntiehdot.
Asiakirjat verkkosivustolla
Palveluehdot, lisenssisopimus ja tietojenkäsittelykäytäntö ovat saatavilla ennen yhdistämistä.

Pyydä jälleenmyyjälisenssi · Palveluehdot ja lisenssisopimus