modelli

Qwen3 8B

Markdown · JSON

Qwen3 8B

Qwen3-8B offre generazione testuale multilingue, programmazione e due modalità di risposta in un modello denso da 8.2 miliardi di parametri. Usare risposte dirette per il dialogo quotidiano e la modalità di ragionamento per problemi che richiedono un’analisi più approfondita.

Informazioni sul modello

Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.

Qwen3-8B è un modello linguistico denso di Qwen3 che combina ragionamento e normale generazione di testo. I punti di forza dichiarati comprendono matematica, risoluzione di problemi logici, codice, scrittura creativa, dialoghi basati su ruoli e rispetto delle istruzioni su più turni. La famiglia supporta più di 100 lingue e dialetti. Un’applicazione pratica è un assistente di supporto multilingue che trasforma il messaggio di un cliente e un estratto delle regole fornito in una risposta utile, conservando i nomi dei prodotti e il tono richiesto.

Questa versione ha 8,2 miliardi di parametri, di cui 6,95 miliardi esclusi gli embedding, e 36 livelli. Usa l’attenzione a query raggruppate con 32 teste di query e otto teste di chiave/valore. È un modello denso separato, non il modello a miscela di esperti 235B in esecuzione con meno esperti. L’ingresso di lavoro e il risultato generato sono testuali: una traduzione, una spiegazione, un documento rivisto, un piano o un programma. Scegli un compito chiaro prima di aggiungere contesto. Per una risposta di supporto, fornisci il messaggio del cliente, le regole applicabili, la terminologia approvata e l’azione che il lettore deve compiere; richiedi una risposta e un elenco separato dei fatti ancora mancanti.

Il flusso iniziale del produttore usa una sequenza di messaggi di chat e un template di conversazione esplicito. Per l’assistenza sul codice, includi la funzione pertinente, un ingresso che evidenzi il problema, l’uscita reale e il risultato atteso. Chiedi una funzione corretta accompagnata da esempi, con una spiegazione separata del comportamento modificato. Per la traduzione, identifica le lingue sorgente e di destinazione, i lettori e i termini da conservare. Questi ingressi rendono il testo risultante più facile da confrontare con il requisito originale. L’integrazione pubblicata richiede un ambiente di esecuzione compatibile con Qwen3; la scheda avverte che le versioni di Transformers precedenti alla 4.51.0 non riconoscono l’architettura richiesta.

Lo stesso modello supporta le modalità con e senza ragionamento. Il ragionamento è attivo per impostazione predefinita nel template fornito. Una disattivazione rigida rimuove la sezione di ragionamento; quando rimane attivo, /think e /no_think possono cambiare la scelta tra i turni. L’ultima istruzione di questo tipo ha la precedenza e questi comandi nel prompt non possono annullare una disattivazione rigida. In un flusso di prodotto, usa la modalità diretta per una breve riscrittura di un messaggio approvato e seleziona il ragionamento per una discrepanza che richiede una spiegazione. Mantieni la risposta finale separata dal ragionamento intermedio e conserva soltanto la risposta finale nella cronologia successiva. Quando il ragionamento è attivo, anche una richiesta flessibile senza ragionamento mantiene un blocco di ragionamento, il cui contenuto può essere vuoto. La disattivazione rigida elimina quel blocco.

Il produttore descrive le chiamate agli strumenti e raccomanda Qwen-Agent per gestire i template e l’analisi delle risposte. Un’applicazione può fornire definizioni degli strumenti, eseguire le chiamate richieste e restituire i relativi risultati. Per un assistente di supporto, una consultazione degli ordini circoscritta e in sola lettura potrebbe fornire uno stato di spedizione confermato prima che il modello prepari la risposta. Specifica i campi consultabili e come segnalare una registrazione mancante. L’artefatto finale utile è una risposta fondata sulle informazioni restituite, non un’affermazione priva di prove che un’operazione esterna sia riuscita. La guida Qwen3 descrive anche chiamate parallele e in più passaggi agli strumenti, con argomenti rappresentati come oggetti e risultati reinseriti nella conversazione.

La scheda del modello indica 32 768 token di contesto nativo e 131 072 con l’espansione YaRN. Il comportamento con contesti lunghi dipende quindi dalla configurazione reale. YaRN statico può influire sulle richieste più brevi, perciò la scheda consiglia di attivarlo quando serve un contesto lungo. Ingresso, cronologia della conversazione e uscita generata consumano un budget di contesto condiviso. Etichetta le sezioni sorgente lunghe, elimina i duplicati non pertinenti e lascia spazio alla risposta richiesta. L’esempio di generazione pubblicato e le raccomandazioni sull’uscita sono indicazioni di configurazione, non un massimo rigido indipendente per l’uscita. Nella spiegazione delle lunghezze di addestramento, la documentazione Qwen3 tratta messaggi dell’assistente di 38 912 token in modalità con ragionamento e di 16 384 senza ragionamento, e raccomanda di valutare la qualità delle generazioni più lunghe. Questi valori sono distinti dalla finestra di contesto complessiva e non sono un limite rigido specifico di un endpoint. La scheda spiega anche l’allocazione posizionale predefinita di 40 960 token: 8 192 per i prompt tipici e 32 768 per l’uscita. Sono indicazioni di configurazione del produttore, separate dal contesto nativo di addestramento e da qualsiasi limite dell’endpoint.

Per la modalità con ragionamento, i valori di campionamento consigliati sono temperatura 0.6, top-p 0.95, top-k 20 e min-p 0; senza ragionamento sono 0.7, 0.8, 20 e 0. Il produttore avverte che il ragionamento con selezione greedy può generare testo ripetuto. Penalità di presenza maggiori possono ridurre la ripetizione, causando talvolta una mescolanza di lingue. Definisci esplicitamente il formato finale, per esempio una risposta seguita da un oggetto JSON contenente i campi irrisolti, e valida l’oggetto prima che un’applicazione lo utilizzi. Verifica il codice proposto con i casi forniti e controlla le traduzioni per assicurare la conservazione della terminologia.

Caso pratico

Caso pratico

Esempio tecnico in inglese

A bilingual reply grounded in a return policy

Draft a German reply to this customer: 'Can I return my unused Aero Cup after ten days?' Policy P1: unused products can be returned within 14 days; the customer must provide the order reference. Keep Aero Cup unchanged and ask for the missing reference. Follow the reply with a short English note naming the facts used.

Risultato atteso

A polite German customer reply and a brief English source-fact note.

Verificare il risultato

The reply preserves the unused condition and 14-day window, asks for the reference and does not invent refund timing.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen3-8b

qwen3-8b

Alibaba /qwen3-8b

Introduzione

Qwen3-8B offre generazione testuale multilingue, programmazione e due modalità di risposta in un modello denso da 8.2 miliardi di parametri. Usare risposte dirette per il dialogo quotidiano e la modalità di ragionamento per problemi che richiedono un’analisi più approfondita.

Input accettati
Testo
Risultati
Testo

Disponibile in Ailoot · input e metodi

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Tipi di input
text
Tipi di output
text
Formato di output
json o SSE
CampoTipoRequisitoValori e limitiPredefinito
CampomodelTipostringRequisitoObbligatorioValori e limiti
qwen3-8b
Predefinito—
CampomessagesTipomessage[]RequisitoObbligatorioValori e limiti
Numero minimo di elementi: 1
Predefinito—
Campomessages[].roleTipostringRequisitoObbligatorioValori e limiti
Esempi: system, user, assistant, tool, function
Condizioni: Questi ruoli sono rappresentati esplicitamente dai tipi di compatibilità del codice sorgente; l’insieme esatto dei ruoli rimane specifico del modello.
Dipende dal modello
Predefinito—
Campomessages[].contentTipostring|content_part[]|nullRequisitoFacoltativoValori e limitiPredefinito—
Campomessages[].tool_callsTipotool_call[]RequisitoFacoltativoValori e limitiPredefinito—
Campomessages[].tool_call_idTipostringRequisitoFacoltativoValori e limiti
Si applica quando: role=tool; usa l’ID effettivamente restituito
Predefinito—
Campomessages[].nameTipostringRequisitoFacoltativoValori e limitiPredefinito—
Campomessages[].reasoning_contentTipostringRequisitoFacoltativoValori e limiti
Si applica quando: Reinserisci il ragionamento effettivamente restituito quando il modello lo utilizza
Predefinito—
Campomessages[].reasoning_detailsTipoobject|arrayRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campomax_tokensTipointegerRequisitoFacoltativoValori e limiti
Minimo: 1
Dipende dal modello
Predefinito—
Campomax_completion_tokensTipointegerRequisitoFacoltativoValori e limiti
Minimo: 1
Dipende dal modello
Predefinito—
CampostreamTipobooleanRequisitoFacoltativoValori e limitiPredefinitofalse
Campostream_options.include_usageTipobooleanRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CampotemperatureTiponumberRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campotop_pTiponumberRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CampostopTipostring|string[]RequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CampotoolsTipofunction_tool[]RequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campotools[].typeTipostringRequisitoFacoltativoValori e limiti
function
Dipende dal modello
Predefinito—
Campotools[].function.nameTipostringRequisitoObbligatorioValori e limiti
Si applica quando: Funzione fornita come strumento
Predefinito—
Campotools[].function.descriptionTipostringRequisitoFacoltativoValori e limitiPredefinito—
Campotools[].function.parametersTipoJSON_schemaRequisitoFacoltativoValori e limitiPredefinito—
Campotool_choiceTipostring|objectRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campoparallel_tool_callsTipobooleanRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Camporesponse_formatTipoobjectRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Camporeasoning_effortTipostringRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CamporeasoningTipoobjectRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Camposervice_tierTipostringRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CampoinstructionsTipostringRequisitoFacoltativoValori e limiti
Campo di compatibilità
Predefinito—
CampofunctionsTipofunction[]RequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campofunction_callTipostring|objectRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
Campoprompt_cache_optionsTipoobjectRequisitoFacoltativoValori e limiti
Dipende dal modello
Predefinito—
CampomodalitiesTipostring[]RequisitoFacoltativoValori e limiti
text
Predefinito—
CampoproviderTipoobjectRequisitoFacoltativoValori e limiti
Condizioni: provider.options viene rifiutato su questa rotta testuale Ultra
Predefinito—
Campocache_control.ttlTipostringRequisitoFacoltativoValori e limiti
Condizioni: 1h viene rifiutato nelle posizioni effettive della cache dei prompt
Predefinito—
Combinazioni di materiali in input

Testo · Testo UTF8

messages[].content

Parametri e ciclo di vita del metodo
ParametroContratto
Parametrocontent_typeContrattoapplication/json
ParametrorequiredContrattomodel, messages
Parametromaterial_typesContrattotext
ParametromessagesContrattoArray di messaggi con struttura role/content
Parametrofile_materialContrattoDocumento UTF-8 effettivo inserito come testo letterale; nessun ID di file dedotto
Parametrooptional_controlsContrattostream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametrocontrol_scopeContrattoSpecifico del modello; gli strumenti di funzione dell’utente differiscono dagli strumenti ospitati
Parametrooutput_modalitiesContrattotext
Parametrohosted_operationsContrattofalse
Parametromultimodal_input_bindingContrattonull

Ciclo di vita: synchronous_or_streamed

Invia l’ID esatto del modello con messages.

La lunghezza del contesto non è un limite di uscita.

Un file di testo può fornire testo letterale; gli ingressi immagine/audio/oggetto file richiedono un’associazione esatta.

Tariffe

Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.

Modalità rapida
Non specificato Quando è selezionata la modalità rapida
Modalità flex
Non specificato Quando è selezionata la modalità flex
Sforzo massimo di ragionamento
Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)

Tariffe Ailoot

Prezzi per configurazione

ConfigurazioneListino delle tariffeCosto
ConfigurazioneTariffe di base dei tokenListino delle tariffeTariffa baseCosto
Input · Token in input $0.000144 / 1K token
Output · Token in output $0.00144 / 1K token
Input · Lettura dalla cache $0 / 1K token
Input · Scrittura nella cache $0 / 1K token
Input · Scrittura nella cache, 1 ora — / 1K token

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →

Esempi di richieste

Ailoot Ultra · OpenAI Chat

curlPython SDKStreaming Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3-8b", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

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
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
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)
result=client.chat.completions.create(model='qwen3-8b',messages=[{"role":"user","content":"Explain observations and hypotheses 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(result.to_dict(mode="json"))
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='qwen3-8b',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")

Ricevi e salva i risultati

Ailoot Ultra · OpenAI Chat

json o SSE

Conserva tutti i risultati completati

Conserva ogni risposta, file e parte di contenuto restituiti per intero.

Conserva ogni scelta con contenuto, chiamate agli strumenti e ragionamento. In SSE assembla i delta per indice di scelta e strumento e conserva il motivo finale di completamento e i dati di utilizzo.

Se occorre verificare la risposta originale

Conserva gli ID e le intestazioni di richiesta/risposta. Non viene fornito alcun URL generico per recuperare un’attività testuale.

Campi della risposta
CampoTipo
Campochoices[].indexTipointeger
Campochoices[].message.contentTipostring|null
Campochoices[].message.tool_callsTipotool_call[]
Campochoices[].message.reasoning_contentTipostring
Campochoices[].message.reasoning_detailsTipoobject|array
Campochoices[].finish_reasonTipostring|null
CampousageTipoobject
Errori e passaggi successivi
RispostaCondizionePassaggio successivo
Risposta400 · invalid_request_errorCondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validiPassaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione.

Alias

Alias del modello

Ailoot Ultra qwen3-8b

Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

ID di chiamata correlati

qwen3-8b

Ailoot Ultra · Anthropic Messages POST /v1/messages qwen3-8b

qwen3-8b

Alibaba /qwen3-8b

Introduzione

Qwen3-8B offre generazione testuale multilingue, programmazione e due modalità di risposta in un modello denso da 8.2 miliardi di parametri. Usare risposte dirette per il dialogo quotidiano e la modalità di ragionamento per problemi che richiedono un’analisi più approfondita.

Input accettati
Testo
Risultati
json · sse

Disponibile in Ailoot · input e metodi

Ailoot Ultra · Anthropic Messages POST /v1/messages
Tipi di input
text
Tipi di output
json, sse
Formato di output
JSON o SSE
CampoTipoRequisitoValori e limitiPredefinito
CampomodelTipostringRequisitoObbligatorioValori e limiti
qwen3-8b
Predefinito—
CampomessagesTipomessage[]RequisitoObbligatorioValori e limitiPredefinito—
Campomessages[].roleTipostringRequisitoObbligatorioValori e limiti
user, assistant
Predefinito—
Campomessages[].contentTipostringRequisitoObbligatorioValori e limitiPredefinito—
Campomax_tokensTipointegerRequisitoObbligatorioValori e limitiPredefinito—
CampostreamTipobooleanRequisitoFacoltativoValori e limitiPredefinitofalse
Combinazioni di materiali in input

Testo · Testo UTF-8

Stringa messages[].content

Parametri e ciclo di vita del metodo
ParametroContratto
Parametrocontent_typeContrattoapplication/json
ParametrorequiredContrattomodel, messages, max_tokens
Parametrooptional_controlsContrattostream
Parametromaterial_typesContrattotext
Parametrotext_file_materialContrattoLeggi il documento UTF-8 effettivo e inserisci il testo nell’ingresso indicato o nella stringa del contenuto del messaggio.

Ciclo di vita: synchronous_or_streamed

Tariffe

Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.

Modalità rapida
Non specificato Quando è selezionata la modalità rapida
Modalità flex
Non specificato Quando è selezionata la modalità flex
Sforzo massimo di ragionamento
Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)

Tariffe Ailoot

Prezzi per configurazione

ConfigurazioneListino delle tariffeCosto
ConfigurazioneTariffe di base dei tokenListino delle tariffeTariffa baseCosto
Input · Token in input $0.000144 / 1K token
Output · Token in output $0.00144 / 1K token
Input · Lettura dalla cache $0 / 1K token
Input · Scrittura nella cache $0 / 1K token
Input · Scrittura nella cache, 1 ora — / 1K token

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →

Esempi di richieste

Ailoot Ultra · Anthropic Messages

Corpo JSON minimo completocurl · usa il tuo documento UTF-8Python · salva il risultato completo
{
  "model": "qwen3-8b",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen3-8b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
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

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen3-8b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Ricevi e salva i risultati

Ailoot Ultra · Anthropic Messages

JSON o SSE

Conserva tutti i risultati completati

Conserva ogni risposta, file e parte di contenuto restituiti per intero.

Conserva tutti i blocchi di contenuto, le firme di ragionamento e gli ID effettivi di utilizzo degli strumenti. Assembla tutti i delta dei blocchi SSE; il primo blocco di testo non è l’uscita completa.

Se occorre verificare la risposta originale

Conserva gli ID e le intestazioni di richiesta/risposta. Non viene fornito alcun URL generico per recuperare un’attività testuale.

Campi della risposta
CampoTipo
CampoidTipostring
CampomodelTipostring
Campocontent[]Tipotext|thinking|tool_use|other content block
Campostop_reasonTipostring|null
CampousageTipoobject
Errori e passaggi successivi
RispostaCondizionePassaggio successivo
Risposta400 · invalid_request_errorCondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validiPassaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione.

Alias

Alias del modello

Ailoot Ultra qwen3-8b

Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

ID di chiamata correlati

qwen3-8b

FAQ · Qwen/Qwen3-8B
Quali input e risultati sono disponibili?

POST /v1/chat/completions · qwen3-8b: text → text

POST /v1/messages · qwen3-8b: text → json, sse

Quali campi usa la richiesta?

POST /v1/chat/completions · qwen3-8b: model, messages, stream, modalities, provider

POST /v1/messages · qwen3-8b: model, messages, max_tokens, stream

Quali limiti si applicano?

POST /v1/chat/completions · qwen3-8b: messages.min_items: 1

Maggiori dettagli

Collega Ailoot a Claude Code, OpenCode, Hermes o alla tua applicazione.

L’azienda e il suo portafoglio di progetti

L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.

Acquista token con uno sconto.

Sconto con abbonamento per lavoro regolare. Codici fino al 50% sull’acquisto di token.

Abbonamento
Scegli un piano scontato per richieste regolari.
Codice fino al 50%
Inserisci il codice all’acquisto. Il prezzo si aggiorna secondo la promozione.
Spese nella cronologia
Modello, token e importo sono salvati per ogni richiesta.

Scegli abbonamento · Consulta prezzi dei modelli

Collega l’API al prodotto che vendi.

SaaS, app e bot secondo offerta e accordo di licenza Ailoot. Per rivendere, richiedi una licenza reseller.

Applicazione commerciale
Integra generazione di testo, immagini, video e suono nelle funzioni a pagamento.
Licenza reseller
Invia descrizione del progetto e schema di accesso. Richiedi condizioni scritte per uso e rivendita.
Documenti sul sito
Offerta, accordo di licenza e politica sui dati sono disponibili prima della connessione.

Richiedi licenza reseller · Offerta e accordo di licenza