DeepSeek R1 Distill Qwen 7B
DeepSeek-R1-Distill-Qwen-7B je kompaktni gosti model podjetja DeepSeek za sklepanje, dodatno učen iz Qwen2.5-Math-7B s primeri, ki jih je ustvaril R1. Sprejema in ustvarja besedilo za matematične, programerske in logične naloge, z navodili za pozive, specifičnimi za to kontrolno točko modela.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsPro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B - Ailoot Ultra · Anthropic Messages
POST /v1/messagesPro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
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.
Uvod: manjši model za sklepanje, izpeljan iz R1
DeepSeek-R1-Distill-Qwen-7B prenaša primere sklepanja iz DeepSeek-R1 v gosti model, ki temelji na Qwen2.5-Math-7B. Sprejema in ustvarja besedilo, vključno z razdelanimi rešitvami, programerskimi razlagami in odgovori na logične probleme. Ta natančno določena destilirana različica 7B je ločena kontrolna točka od polnega DeepSeek-R1, izvirnega Qwen2.5-Math-7B in večjih destiliranih izdaj. Njeno ime navaja tako proizvajalca podatkov za sklepanje kot osnovno družino modelov.
Kaj prispeva destilacija
Raziskava R1 podjetja DeepSeek razlikuje med učenjem velikega učiteljskega modela za sklepanje in dodatnim učenjem njegovih manjših učencev. Postopek učitelja uporablja učenje z ojačevanjem in nadzorovane faze; objavljeni destilirani modeli so dodatno učeni z vzorci, ki jih ustvari R1. Proizvajalec za te izdaje opisuje 800.000 skrbno izbranih primerov. Ne predpostavljajte, da ima učenec 7B sam arhitekturo mešanice strokovnjakov polnega modela ali da je opravil vsako fazo učenja učitelja. Destilacija temu modelu daje naučen slog sklepanja; njegovih sklepov ne izenači s sklepi učitelja.
Natančni model in njegova konfiguracija
Uradna tabela modelov kot osnovo te izdaje navaja Qwen2.5-Math-7B. DeepSeek spremeni konfiguracijo in nastavitve razčlenjevalnika žetonov, zato sta pomembni natančna objavljena kontrolna točka in pogovorna predloga. Objavljena konfiguracija uporablja arhitekturo vzročnega jezikovnega modela Qwen2 z 28 plastmi in utežmi bfloat16. Največje število položajev določa na 131.072. Ta konfiguracijska vrednost ni ločeno preverjanje natančnosti pri dolgih dokumentih: tabela konteksta 128K na skupni kartici R1 opisuje polne modele R1, tabela destiliranih modelov pa navaja izvor brez objave preverjene kontekstne tabele za posameznega učenca.
Uporabite ga za nalogo s preverljivim izidom. Pri matematiki predložite celotno besedilo naloge, definicije in enote. Pri kodi vključite ustrezno funkcijo, vhod, opaženi rezultat in želeno vedenje. Pri logičnem vprašanju naštejte dejstva in razlikujte med zahtevanim sklepom in predpostavko. Zahtevajte končni rezultat, ki ga je mogoče neodvisno preveriti, na primer uokvirjeno vrednost, jedrnat oris dokaza ali pojasnjen popravek. Ti primeri uporabljajo proizvajalčev dokumentirani obseg sklepanja; ne trdijo, da model samodejno izvaja kodo ali preverja dokaze.
Kako pripraviti poziv
DeepSeek za to izdajo R1 priporoča, da vsa navodila postavite v uporabniški poziv in se izognete sistemskemu pozivu. Pri matematičnem problemu zahtevajte sklepanje po korakih in jasno razmejen končni odgovor. V istem pozivu vključite tudi morebitno izhodno strukturo: na primer kratek sklep, ki mu sledijo predpostavke in podporni izračuni. Aplikacija naj uporablja učenčev lastni razčlenjevalnik žetonov in oblikovanje, namesto da bi ju brez preverjanja proizvajalčevih sprememb nadomestila z osnovno predlogo Qwen.
Proizvajalec opozarja, da lahko nekatere poizvedbe ustvarijo prazen blok razmišljanja in obidejo predvideni vzorec sklepanja. Priporočena rešitev je v združljivem poteku dela začeti ustvarjanje z začetnim označevalnikom razmišljanja in novo vrstico. To je dokumentirano priporočilo za format ustvarjanja, ne obljuba, da vsaka aplikacija ponuja takšno nastavitev. Pri predstavitvi rezultata ločite končni odgovor od daljšega besedila sklepanja.
Nastavitve ustvarjanja in razpoložljivi prostor
DeepSeek priporoča temperaturo med 0.5 in 0.7, z 0.6 kot prednostnim izhodiščem, da zmanjša ponavljajoč se ali neskladen izhod. Njegova postavitev za vrednotenje uporablja proračun ustvarjanja 32.768 žetonov in top_p 0.95. Te izbire za vrednotenje niso univerzalna stroga omejitev. Sklepanje, izvorno besedilo in končni odgovor vsi potrebujejo prostor v nastavljenem kontekstu, zato mora zahteva z dolgim dokazom ali izpisom kode še vedno pustiti prostor za dokončanje.
Omejitve, ki vplivajo na izbiro modela
Majhen destilirani model ostaja posebna izbira s kompromisi pri sklepanju. Proizvajalčevo gradivo ob izdaji za to kontrolno točko ne potrjuje slikovnega, zvočnega ali videovhoda niti namenskega protokola za klice orodij. Izvajanje orodij ali dostop do aktualnih podatkov bi potrebovala ločeno nastavljen potek dela aplikacije. Izdaja tudi ne podeduje poznejših sprememb pravil pozivanja DeepSeek-R1-0528 zgolj zaradi imena R1. Preverite številčne odgovore, preglejte predlagane spremembe kode in preverite, ali končni sklep sledi predloženim dejstvom; dolg zapis sklepanja sam po sebi ni dokaz pravilnosti.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7BZačetek
DeepSeek-R1-Distill-Qwen-7B je kompaktni gosti model podjetja DeepSeek za sklepanje, dodatno učen iz Qwen2.5-Math-7B s primeri, ki jih je ustvaril R1. Sprejema in ustvarja besedilo za matematične, programerske in logične naloge, z navodili za pozive, specifičnimi za to kontrolno točko modela.
- Dovoljeni vhodi
- Besedilo
- Rezultati
- Besedilo
Na voljo v Ailoot · vhodi in metode
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Vhod
text- Izhod
text- Izhodni format
- json ali SSE
| Polje | Vrsta | Zahteva | Vrednosti in omejitve | Privzeto |
|---|---|---|---|---|
Poljemodel | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | Privzeto— |
Poljemessages | Vrstamessage[] | ZahtevaObvezno | Vrednosti in omejitve Najmanjše število elementov: 1 | Privzeto— |
Poljemessages[].role | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
Poljemessages[].content | Vrstastring | ZahtevaIzbirno | Vrednosti in omejitve Velja, ko: Besedilni pogovor | Privzeto— |
Poljestream | Vrstaboolean | ZahtevaIzbirno | Vrednosti in omejitve | Privzetofalse |
Kombinacije vhodnih gradiv
Besedilo · Besedilo UTF8
messages[].content
Parametri in življenjski cikel metode
| Parameter | Specifikacija |
|---|---|
Parametercontent_type | Specifikacijaapplication/json |
Parameterrequired | Specifikacijamodel, messages |
Parametermaterial_types | Specifikacijatext |
Parametermessages | Specifikacijapolje sporočil s strukturo role/content |
Parameterfile_material | Specifikacijadejanski dokument UTF-8 je vstavljen kot dobesedno besedilo; ID datoteke se ne izpeljuje |
Parameteroptional_controls | Specifikacijastream |
Parametercontrol_scope | SpecifikacijaBesedilni pogovor; stream je logična vrednost in je privzeto false. |
Parameteroutput_modalities | Specifikacijatext |
Parameterhosted_operations | Specifikacijafalse |
Parametermultimodal_input_binding | Specifikacijanull |
Druga imena metode: /chat/completions
Življenjski cikel: synchronous_or_streamed
Pošljite natančen ID modela skupaj z messages.
Dolžina konteksta ni zgornja meja izhoda.
Besedilna datoteka lahko poda dobesedno besedilo; slikovni, zvočni vhodi in vhodi z datotečnimi objekti potrebujejo natančno vezavo.
Cenik
Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.
- Hitri način
- Ni navedeno Ko je izbran hitri način
- Način flex
- Ni navedeno Ko je izbran način flex
- Najvišja raven razmišljanja
- Ni navedeno Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)
Cene Ailoot
Cene po nastavitvah
| Nastavitev | Cenovna lestvica | Strošek |
|---|---|---|
| NastavitevOsnovne cene za žetone | Cenovna lestvicaOsnovna cena | Strošek Vhod · Vhodni žetoni $0.0001 / 1K žetonov Izhod · Izhodni žetoni $0.0001 / 1K žetonov Vhod · Branje predpomnilnika $0 / 1K žetonov Vhod · Zapis v predpomnilnik $0 / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov |
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 Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B","messages":[{"role":"user","content":"hello"}],"stream":false}')
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="Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", messages=[{"role":"user","content":"hello"}], stream=False)
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"))
Prejmi in shrani rezultate
Ailoot Ultra · 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
| Polje | Vrsta |
|---|---|
Poljechoices[].index | Vrstainteger |
Poljechoices[].message.content | Vrstastring|null |
Poljechoices[].message.tool_calls | Vrstatool_call[] |
Poljechoices[].message.reasoning_content | Vrstastring |
Poljechoices[].message.reasoning_details | Vrstaobject|array |
Poljechoices[].finish_reason | Vrstastring|null |
Poljeusage | Vrstaobject |
Napake in naslednji koraki
| Odgovor | Pogoj | Naslednji korak |
|---|---|---|
Odgovor400 · invalid_request_error | PogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametra | Naslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja. |
Druga imena
Druga imena modelov
Ailoot Ultra Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Druga imena poti metod
/chat/completions
Povezani ID-ji za klic
Ailoot Ultra · Anthropic Messages POST /v1/messages Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7BZačetek
DeepSeek-R1-Distill-Qwen-7B je kompaktni gosti model podjetja DeepSeek za sklepanje, dodatno učen iz Qwen2.5-Math-7B s primeri, ki jih je ustvaril R1. Sprejema in ustvarja besedilo za matematične, programerske in logične naloge, z navodili za pozive, specifičnimi za to kontrolno točko modela.
- Dovoljeni vhodi
- Besedilo
- Rezultati
- json · sse
Na voljo v Ailoot · vhodi in metode
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Vhod
text- Izhod
json,sse- Izhodni format
- JSON ali SSE
| Polje | Vrsta | Zahteva | Vrednosti in omejitve | Privzeto |
|---|---|---|---|---|
Poljemodel | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | Privzeto— |
Poljemessages | Vrstamessage[] | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
Poljemessages[].role | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve user, assistant | Privzeto— |
Poljemessages[].content | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
Poljemax_tokens | Vrstainteger | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
Poljestream | Vrstaboolean | ZahtevaIzbirno | Vrednosti in omejitve | Privzetofalse |
Kombinacije vhodnih gradiv
Besedilo · Besedilo UTF-8
niz messages[].content
Parametri in življenjski cikel metode
| Parameter | Specifikacija |
|---|---|
Parametercontent_type | Specifikacijaapplication/json |
Parameterrequired | Specifikacijamodel, messages, max_tokens |
Parameteroptional_controls | Specifikacijastream |
Parametermaterial_types | Specifikacijatext |
Parametertext_file_material | SpecifikacijaPreberite dejanski dokument UTF-8 in njegovo besedilo vstavite v navedeni vhodni niz ali niz vsebine sporočila. |
Življenjski cikel: synchronous_or_streamed
Cenik
Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.
- Hitri način
- Ni navedeno Ko je izbran hitri način
- Način flex
- Ni navedeno Ko je izbran način flex
- Najvišja raven razmišljanja
- Ni navedeno Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)
Cene Ailoot
Cene po nastavitvah
| Nastavitev | Cenovna lestvica | Strošek |
|---|---|---|
| NastavitevOsnovne cene za žetone | Cenovna lestvicaOsnovna cena | Strošek Vhod · Vhodni žetoni $0.0001 / 1K žetonov Izhod · Izhodni žetoni $0.0001 / 1K žetonov Vhod · Branje predpomnilnika $0 / 1K žetonov Vhod · Zapis v predpomnilnik $0 / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura — / 1K žetonov |
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 Ultra · Anthropic Messages
{
"model": "Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
"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': 'Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', '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': 'Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', '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))
Prejmi in shrani rezultate
Ailoot Ultra · 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
| Polje | Vrsta |
|---|---|
Poljeid | Vrstastring |
Poljemodel | Vrstastring |
Poljecontent[] | Vrstatext|thinking|tool_use|other content block |
Poljestop_reason | Vrstastring|null |
Poljeusage | Vrstaobject |
Napake in naslednji koraki
| Odgovor | Pogoj | Naslednji korak |
|---|---|---|
Odgovor400 · invalid_request_error | PogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametra | Naslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja. |
Druga imena
Druga imena modelov
Ailoot Ultra Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
Druga imena poti metod
/chat/completions
Povezani ID-ji za klic
FAQ · Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
- Kateri vhodi in rezultati so na voljo?
POST /v1/chat/completions·Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:text→textPOST /v1/messages·Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:text→json,sse- Katera polja uporablja zahteva?
POST /v1/chat/completions·Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:model,messages,streamPOST /v1/messages·Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:model,messages,max_tokens,stream- Katere omejitve veljajo?
POST /v1/chat/completions·Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:messages.min_items:1