modeli

DeepSeek v4.1 Flash

Markdown · JSON

DeepSeek v4.1 Flash

DeepSeek V4.1 Flash je multimodalni model za analizo besedila in slik, programiranje ter agentsko delo z dolgim kontekstom.

O modelu

Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.

Skupna obdelava besedila in slik

DeepSeek V4.1 Flash je že v osnovi multimodalni model: vizualni kodirnik pretvori sliko v predstavitev, ki se obdeluje skupaj z besedilom. Rezultat je besedilen. Predvideni so vizualno razumevanje, programiranje in agentske naloge; kontekst dosega milijon tokenov.

Arhitektura za obsežen vhod

Glavna mreža vsebuje 552 milijard parametrov. Vzročni kodirnik in dekodirnik imata po 20 plasti. Pri obdelavi vhoda je aktivnih 8 milijard parametrov na token, pri ustvarjanju pa 16 milijard. Delitev je zasnovana za naloge, pri katerih je vhodno gradivo bistveno obsežnejše od odgovora.

Stisnjena redka pozornost ponovno uporablja podatke med plastmi in omejuje ponavljajoče se iskanje pomembnih delov konteksta. Manjkajoča stanja lokalne pozornosti se rekonstruirajo iz nedavnega odseka. Pogojni pomnilnik Engram vsebuje 196 milijard parametrov in do zapisov dostopa z redkim iskanjem po tokenih. To je ločen pomnilniški blok in ne novo poimenovanje velikosti glavne mreže. Vsaka ekspertna plast ima enega skupnega in 384 usmerjanih ekspertov; za token se izbere šest usmerjanih ekspertov. Dodatno se uporabljajo spremenjene povezave med plastmi in DSpark za špekulativno dekodiranje.

Učenje in agentska okolja

Model je od začetka naučen na multimodalnem korpusu s 45 bilijoni tokenov. Nadaljnja priprava poteka po zaporedju: učenje po primerih, spodbujevalno učenje in nato destilacija na lastnih zaporedjih modela.

DeepSeek povečuje obseg podatkov sintetičnih nalog, delovnih okolij in potekov agenta. Pri pripravi se povežejo sama naloga, razpoložljivo okolje in način preverjanja rezultata; podatki se filtrirajo, očistijo ponovitev in izberejo glede na zahtevnost. To opisuje zasnovo učenja in ne samodejne razpoložljivosti zunanjih orodij pri uporabi modela.

Nastavljiva globina analize

Sklepanje se uravnava s celim številom od 1 do 100. Ta zvezna lestvica določa intenzivnost analize; poglobljeno sklepanje lahko zahteva več časa in tokenov.

Nadaljevanje pogovora in dejanja

Format modela predvideva večstopenjski pogovor, klice orodij, shranjeno sklepanje in izmenjavanje besedila s slikami. Orodja izvede aplikacija; prejeti rezultati postanejo gradivo naslednjega koraka.

Odgovor ostaja besedilen. Vizualna zmožnost zahteva ustrezen način podajanja vhoda. Velikost konteksta in priporočena dolžina ustvarjanja ne določata univerzalne največje dolžine odgovora.

Praktična naloga

Praktična naloga

Tehnični primer v angleščini

Trace a data-loss bug from a text log

Use this log and code sketch to identify the likely lost-update mechanism: A reads stock=5; B reads stock=5; A writes 4; B writes 4. Both requests call read(), subtract one, then write(). Explain the failure, propose one atomic update strategy and a concurrent test. Do not assume a specific database or execute anything.

Pričakovani rezultat

A causal diagnosis, database-neutral pseudocode for an atomic decrement and a concurrent-test scenario with the expected final count.

Preverjanje rezultata

The test expects stock 3 after two successful decrements from 5, with a stated insufficient-stock rule.
Ailoot · Anthropic Messages POST /v1/messages deepseek-ai/deepseek-v4.1-flash

deepseek-ai/deepseek-v4.1-flash

DeepSeek /deepseek-ai/deepseek-v4.1-flash

Začetek

DeepSeek V4.1 Flash je multimodalni model za analizo besedila in slik, programiranje ter agentsko delo z dolgim kontekstom.

Dovoljeni vhodi
Besedilo
Rezultati
Besedilo

Na voljo v Ailoot · vhodi in metode

Ailoot · Anthropic Messages POST /v1/messages
Vhod
text
Izhod
text
Kontekst
1.048.576 tokens
Največji izhod
32.768 tokens
Izhodni format
json ali SSE
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
deepseek-ai/deepseek-v4.1-flash
Privzeto—
PoljemessagesVrstamessage[]ZahtevaObveznoVrednosti in omejitve
Najmanjše število elementov: 1
Privzeto—
Poljemessages[].roleVrstastringZahtevaObveznoVrednosti in omejitve
user, assistant
Privzeto—
Poljemessages[].contentVrstastring|content_block[]ZahtevaObveznoVrednosti in omejitvePrivzeto—
PoljesystemVrstastring|content_block[]ZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemax_tokensVrstaintegerZahtevaObveznoVrednosti in omejitve
Najmanj: 1
Omejitev velja za: natančna zgornja meja izbranega modela/kartice
Privzeto—
PoljestreamVrstabooleanZahtevaIzbirnoVrednosti in omejitvePrivzetofalse
PoljetemperatureVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetop_pVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljestop_sequencesVrstastring[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljetoolsVrstatool[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetools[].nameVrstastringZahtevaIzbirnoVrednosti in omejitve
Velja, ko: podano je orodje
Privzeto—
Poljetools[].descriptionVrstastringZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetools[].input_schemaVrstaJSON_schemaZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetool_choiceVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljethinking.typeVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljethinking.budget_tokensVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeoutput_config.effortVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljemetadataVrstaobjectZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljecache_controlVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Kombinacije vhodnih gradiv

Besedilo · Besedilo UTF8

messages[].content ali blok type=text

Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametermaterial_typesSpecifikacijatext
ParameterrequiredSpecifikacijamodel, messages, max_tokens
Parameteroptional_controlsSpecifikacijanull
Parametercontent_typeSpecifikacijaapplication/json
Parametertext_file_materialSpecifikacijadejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo

Življenjski cikel: exact retained published method

Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.

Cenik

Cene metod Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vhod
0,0003 $ / 1K
Izhod
0,0012 $ / 1K
Branje predpomnilnika
0,000006 $ / 1K
Zapis v predpomnilnik
0,0003 $ / 1K
Zapis v predpomnilnik, 5 min
0,0003 $ / 1K tokens

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Primeri zahtev

Ailoot · Anthropic Messages

Primer besedilaPython SDKNode.js SDKTok Python
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-ai/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
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-ai/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-ai/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-ai/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")

Prejmi in shrani rezultate

Ailoot · Anthropic Messages

json ali SSE

Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.

Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora
PoljeVrsta
PoljeidVrstastring
PoljemodelVrstastring
Poljecontent[]Vrstatext|thinking|tool_use|other content block
Poljestop_reasonVrstastring|null
PoljeusageVrstaobject
Napake in naslednji koraki
OdgovorPogojNaslednji korak
Odgovor400 · invalid_request_errorPogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametraNaslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja.

Druga imena

Druga imena modelov

Ailoot deepseek-ai/deepseek-v4.1-flash

Druga imena poti metod

Uporabite zgoraj navedene poti metod.

Povezani ID-ji za klic

deepseek-ai/deepseek-v4.1-flash

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

deepseek-ai/deepseek-v4.1-flash

DeepSeek /deepseek-ai/deepseek-v4.1-flash

Začetek

DeepSeek V4.1 Flash je multimodalni model za analizo besedila in slik, programiranje ter agentsko delo z dolgim kontekstom.

Dovoljeni vhodi
Besedilo
Rezultati
Besedilo

Na voljo v Ailoot · vhodi in metode

Ailoot · OpenAI Chat POST /v1/chat/completions
Vhod
text
Izhod
text
Kontekst
4096 tokens
Največji izhod
1024 tokens
Izhodni format
json ali SSE
PoljeVrstaZahtevaVrednosti in omejitvePrivzeto
PoljemodelVrstastringZahtevaObveznoVrednosti in omejitve
deepseek-ai/deepseek-v4.1-flash
Privzeto—
PoljemessagesVrstamessage[]ZahtevaObveznoVrednosti in omejitve
Najmanjše število elementov: 1
Privzeto—
Poljemessages[].roleVrstastringZahtevaObveznoVrednosti in omejitve
Primeri: system, user, assistant, tool, function
Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.
Odvisno od modela
Privzeto—
Poljemessages[].contentVrstastring|content_part[]|nullZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].tool_callsVrstatool_call[]ZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].tool_call_idVrstastringZahtevaIzbirnoVrednosti in omejitve
Velja, ko: role=tool; uporabite dejansko vrnjeni ID
Privzeto—
Poljemessages[].nameVrstastringZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljemessages[].reasoning_contentVrstastringZahtevaIzbirnoVrednosti in omejitve
Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja
Privzeto—
Poljemessages[].reasoning_detailsVrstaobject|arrayZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljemax_tokensVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Odvisno od modela
Privzeto—
Poljemax_completion_tokensVrstaintegerZahtevaIzbirnoVrednosti in omejitve
Najmanj: 1
Odvisno od modela
Privzeto—
PoljestreamVrstabooleanZahtevaIzbirnoVrednosti in omejitvePrivzetofalse
Poljestream_options.include_usageVrstabooleanZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljetemperatureVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetop_pVrstanumberZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljestopVrstastring|string[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljetoolsVrstafunction_tool[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetools[].typeVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljetools[].function.nameVrstastringZahtevaObveznoVrednosti in omejitve
Velja, ko: podano je funkcijsko orodje
Privzeto—
Poljetools[].function.descriptionVrstastringZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetools[].function.parametersVrstaJSON_schemaZahtevaIzbirnoVrednosti in omejitvePrivzeto—
Poljetool_choiceVrstastring|objectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeparallel_tool_callsVrstabooleanZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeresponse_formatVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljereasoning_effortVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljereasoningVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeservice_tierVrstastringZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
PoljeinstructionsVrstastringZahtevaIzbirnoVrednosti in omejitve
Polje združljivosti
Privzeto—
PoljefunctionsVrstafunction[]ZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljefunction_callVrstastring|objectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Poljeprompt_cache_optionsVrstaobjectZahtevaIzbirnoVrednosti in omejitve
Odvisno od modela
Privzeto—
Kombinacije vhodnih gradiv

Besedilo · Besedilo UTF8

messages[].content

Parametri in življenjski cikel metode
ParameterSpecifikacija
Parametermaterial_typesSpecifikacijatext
ParameterrequiredSpecifikacijamodel, messages
Parameteroptional_controlsSpecifikacijanull
Parametercontent_typeSpecifikacijaapplication/json
Parametertext_file_materialSpecifikacijadejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo

Življenjski cikel: exact retained published method

Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.

Cenik

Cene metod Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Vhod
0,0003 $ / 1K
Izhod
0,0012 $ / 1K
Branje predpomnilnika
0,000006 $ / 1K
Zapis v predpomnilnik
0,0003 $ / 1K
Zapis v predpomnilnik, 5 min
0,0003 $ / 1K tokens

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →

Primeri zahtev

Ailoot · OpenAI Chat

Primer besedilaPython SDKNode.js SDKTok Python
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-ai/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
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-ai/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-ai/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-ai/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")

Prejmi in shrani rezultate

Ailoot · OpenAI Chat

json ali SSE

Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.

Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora
PoljeVrsta
Poljechoices[].indexVrstainteger
Poljechoices[].message.contentVrstastring|null
Poljechoices[].message.tool_callsVrstatool_call[]
Poljechoices[].message.reasoning_contentVrstastring
Poljechoices[].message.reasoning_detailsVrstaobject|array
Poljechoices[].finish_reasonVrstastring|null
PoljeusageVrstaobject
Napake in naslednji koraki
OdgovorPogojNaslednji korak
Odgovor400 · invalid_request_errorPogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametraNaslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja.

Druga imena

Druga imena modelov

Ailoot deepseek-ai/deepseek-v4.1-flash

Druga imena poti metod

Uporabite zgoraj navedene poti metod.

Povezani ID-ji za klic

deepseek-ai/deepseek-v4.1-flash

FAQ · deepseek-ai/deepseek-v4.1-flash
Kateri vhodi in rezultati so na voljo?

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

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

Katera polja uporablja zahteva?

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

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

Katere omejitve veljajo?

POST /v1/messages · deepseek-ai/deepseek-v4.1-flash: ctx: 1048576; max_out: 32768; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/chat/completions · deepseek-ai/deepseek-v4.1-flash: ctx: 4096; max_out: 1024; messages.min_items: 1

Več podrobnosti

Ailoot povežite s Claude Code, OpenCode, Hermes ali svojo aplikacijo.

Podjetje in njegov portfelj projektov

Podjetje in njegov portfelj projektov: milijoni strank; mesečna prodaja v milijardah.

Žetone kupujte s popustom.

Naročniški popust za redno delo. Promocijske kode prinesejo do 50% popusta na nakup žetonov.

Naročnina
Za redne zahteve izberite paket s popustom.
Promocijska koda do 50%
Kodo vnesite ob nakupu. Cena se preračuna po veljavni akciji.
Poraba v zgodovini
Za vsako zahtevo se shranijo model, žetoni in znesek.

Izberite naročnino · Oglejte si cene modelov

API povežite z izdelkom, ki ga prodajate.

SaaS, aplikacije in boti po ponudbi in licenčni pogodbi Ailoot. Za nadaljnjo prodajo zaprosite za preprodajno licenco.

Komercialna aplikacija
Ustvarjanje besedila, slik, videa in zvoka vključite v plačljive funkcije svoje storitve.
Licenca za preprodajalca
Pošljite opis projekta in shemo dostopa. Zahtevajte pisne pogoje uporabe in nadaljnje prodaje.
Dokumenti na strani
Ponudba, licenčna pogodba in politika obdelave podatkov so dostopne pred povezavo.

Zaprosite za preprodajno licenco · Ponudba in licenčna pogodba