Mistral: Mistral Small 4
Mistral Small 4 نموذج هجين للنصوص والصور بقدرات التعليمات والاستدلال والبرمجة. يفعّل إصدار مزيج الخبراء، البالغ إجماليه 119 مليار معلمة، 6٫5 مليار معلمة لكل رمز، ويدعم سياقًا تحدده الشركة المطوّرة بطول 256 ألف رمز وجهد استدلال قابلًا للاختيار وJSON واستدعاءات الدوال.
- Ailoot Ultra · محادثة OpenAI
POST /v1/chat/completionsmistralai/mistral-small-2603 - Ailoot Ultra · رسائل Anthropic
POST /v1/messagesmistralai/mistral-small-2603
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.
يجمع Mistral Small 4 اتباع التعليمات العامة والاستدلال والبرمجة في نموذج واحد متعدد الوسائط. تصفه الشركة المطوّرة بأنه يوحّد عائلات Instruct وMagistral للاستدلال وDevstral للبرمجة. يقبل النصوص والصور ويعيد نصوصًا، مع إتاحة استدعاءات الدوال ومخرجات JSON للتطبيقات التي تستخدم الأدوات.
البنية والميزات الرئيسية
يضم الإصدار 119 مليار معلمة إجمالية ويفعّل 6٫5 مليار لكل رمز. تحتوي بنيته من مزيج الخبراء على 128 خبيرًا، منهم 4 نشطون، وتوثّق الشركة المطوّرة نافذة سياق بطول 256 ألف رمز. يصف عدد المعلمات النشطة والخبراء تنظيم النموذج؛ وهما منفصلان عن كمية المحتوى النصي أو الصوري المدرج في مهمة واحدة.
يوفّر النموذج وظائف التعليمات والاستدلال في نقطة التحقق نفسها. وتحدّد الشركة المطوّرة أيضًا الرؤية والالتزام بموجّه النظام والدعم متعدد اللغات بعشرات اللغات، منها الإنجليزية والفرنسية والإسبانية والألمانية والإيطالية والبرتغالية والهولندية والصينية واليابانية والكورية والعربية. لذلك يمكن لتعليمة نصية السؤال عن صورة أو الجمع بين متطلب مكتوب ودليل مرئي، مع إعادة الإجابة كنص.
يمكن لمهمة بصرية تقديم صفحة مستند وطلب القيم المرتبطة بشرط مسمّى. أبقِ التسميات والوحدات مقروءة، واذكر ما إذا كانت النتيجة يجب أن تحفظ الصياغة الأصلية أو تلخّصها أو تقارنها بمصدر آخر. ويمكن لمهمة واجهة إرفاق لقطة شاشة بهدف المستخدم وطلب عنصر التحكم المرئي ذي الصلة والدليل الذي يدعم خطوة تالية مقترحة.
اختيار وضع التعليمات أو الاستدلال
توثّق البطاقة المنشورة جهد استدلال none لإجابة فورية بأسلوب التعليمات، وhigh للاستدلال، مع التوصية بـhigh للموجّهات المعقّدة. يُختار ذلك لكل طلب ضمن نموذج Small 4 نفسه. يمكن لتصنيف عادي أو إعادة صياغة قصيرة أن يكون له تعاقد إجابة مختلف عن مسألة رياضية أو بصرية أو برمجية تحتاج إلى شرح مفصّل.
توصي الشركة المطوّرة بدرجة حرارة 0.7 لجهد الاستدلال high. وللقيمة none، تحدّد درجات حرارة بين 0.0 و0.7 بحسب المهمة. تصف هذه الإعدادات الأوضاع الموثّقة، ولا تجعل جهد الاستدلال ضمانًا لصحة النتيجة. عرّف الافتراضات وشكل المخرجات والمادة المصدرية ذات الصلة قبل اختيار مقدار الاستدلال الذي تحتاجه المهمة.
لمسألة محلولة، قدّم الشرط كاملًا واطلب الخطوات المهمة المبرّرة يتبعها التعبير النهائي. ولمهمة شيفرة، قدّم المتطلب والدالة المتأثرة ومدخلًا ملموسًا؛ واطلب التنفيذ المقترح منفصلًا عن الشرح والأمثلة. تشمل عروض الاستخدام لدى الشركة المطوّرة اتباع التعليمات وأداة حساب مطبّقة على صورة والاستدلال البصري، بما يوضّح دخول النص والأدلة البصرية في هذه المهام المختلفة.
البرمجة والمستندات والأدوات
يُقدَّم النموذج لاستكشاف قواعد الشيفرة ووكلاء الهندسة البرمجية والمساعدين العامّين وفهم المستندات والبحث. يمكن لطلب وكيل برمجي تسمية الوحدة المطلوب تغييرها والواجهة الواجب الحفاظ عليها والسلوك الذي ينبغي أن ينتج. قدّم المصدر ذا الصلة وأدلة الفشل. يستطيع النموذج اقتراح العملية التالية أو تغيير شيفرة، بينما يوفّر التطبيق الوصول إلى المستودع والتنفيذ والتغذية الراجعة.
لاستخراج مستندات، حدّد الحقول المطلوبة وكيفية تمثيل المعلومات المفقودة. يمكن لسجل مفيد فصل معرّف المستند وعبارة المصدر والمتطلب المفسَّر والسؤال غير المحسوم. تسرد بطاقة خدمة الشركة المطوّرة المخرجات المنظّمة المخصّصة والإجابة عن أسئلة المستندات؛ وتستخدم الأخيرة معالجة المستندات وOCR لإعداد النص والبنية قبل تحليل النموذج اللغوي. وينبغي أن يحتفظ سؤال الصورة المباشر وسير المستندات بمساعدة OCR بإعداد المدخلات الخاص بكل منهما.
يتطلب استدعاء الدوال أدوات موصوفة بوضوح. يختار النموذج دالة وينشئ الوسائط؛ وينفّذ التطبيق العملية ويعيد نتيجتها للإجابة اللاحقة. ينطبق المنطق نفسه سواء كانت المهمة بحثًا أو حسابًا أو عملية برمجية. ينظّم تنسيق JSON إجابة، بينما يطلب استدعاء أداة إجراءً خارجيًا؛ وينبغي عدم التعامل معهما كنتيجتين قابلتين للاستبدال.
تسرد بطاقة الخدمة أيضًا المخرجات المتوقعة وبوادئ الإجابات والمعالجة الدفعية ومحادثات الوكلاء. تفيد المخرجات المتوقعة حين يجب إعادة توليد مستند أو ملف شيفرة بتغيير محدود فقط مع معرفة بقية المحتوى. حدّد التعديل والمواد الواجب الحفاظ عليها. يستخدم الاستكمال من بادئة بداية معروفة للاستجابة، بينما تتعلق المعالجة الدفعية بإرسال العمل، لا بوضع استدلال إضافي.
حدود السياق والإصدار
خطّط المهمة المكتوبة والمواد البصرية والمحادثة والإجابة المرغوبة حول السياق الموثّق البالغ 256 ألف رمز. يضبط مثال الاستخدام المنشور سياقًا من 262٬144 رمزًا، بينما مثال التوليد من 1٬024 رمزًا ليس سعة قصوى منفصلة للمخرجات. لا تقدّم المصادر التي جرت قراءتها حدًا صارمًا مستقلًا لطول الإجابة يُستعاض به عن طول المهمة المختار.
لـSmall 4 بنية خاصة من مزيج الخبراء بإجمالي 119 مليار معلمة وأوضاع هجينة خاصة به. وينبغي ألا يرث بنية Medium 3.5 الكثيفة بحجم 128 مليار معلمة أو إصداري Instruct وReasoning المنفصلين من Ministral 3. وتنشر الشركة المطوّرة أيضًا مُنتَجات منفصلة مكمّمة وأخرى لفك الترميز التخميني؛ وهي مُنتَجات نشر منفصلة، لا وسائط محتوى مختلفة. حافظ على إصدار Small 4 المسمّى والوضع المطلوب للشرح الفعلي أو السجل المنظّم أو نتيجة الشيفرة.
مهمة عملية
مهمة عملية
مثال تقني باللغة الإنجليزية
Repair a last-line parser
This Python parser loses a final line without a trailing newline: def lines(text):
return text.split("\n")[:-1]
Return a corrected function that preserves nonempty final lines, avoids an artificial last empty line when text ends in a newline and returns [] for empty text. Include tests for all three cases.النتيجة المتوقعة
A corrected Python function, a short explanation and tests for newline, no-newline and empty input.التحقق من النتيجة
Check that the last real line is retained and that only a trailing separator’s artificial empty entry is removed.Ailoot Ultra · محادثة OpenAI POST /v1/chat/completions mistralai/mistral-small-2603
mistralai/mistral-small-2603البداية
Mistral Small 4 نموذج هجين للنصوص والصور بقدرات التعليمات والاستدلال والبرمجة. يفعّل إصدار مزيج الخبراء، البالغ إجماليه 119 مليار معلمة، 6٫5 مليار معلمة لكل رمز، ويدعم سياقًا تحدده الشركة المطوّرة بطول 256 ألف رمز وجهد استدلال قابلًا للاختيار وJSON واستدعاءات الدوال.
- المدخلات المقبولة
- النص
- النتائج
- النص
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · محادثة OpenAI POST /v1/chat/completions
- الإدخال
text- الإخراج
text- صيغة الإخراج
- json أو SSE
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود mistralai/mistral-small-2603 | القيمة الافتراضية— |
الحقلmessages | النوعmessage[] | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: 1 | القيمة الافتراضية— |
الحقلmessages[].role | النوعstring | المتطلبمطلوب | القيم والحدود أمثلة: system, user, assistant, tool, function الشروط: تُمثَّل هذه الأدوار صراحةً بأنواع التوافق في الشيفرة المصدرية؛ وتظل مجموعة الأدوار الدقيقة خاصة بكل نموذج. يعتمد على النموذج | القيمة الافتراضية— |
الحقلmessages[].content | النوعstring|content_part[]|null | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
الحقلmessages[].tool_calls | النوعtool_call[] | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
الحقلmessages[].tool_call_id | النوعstring | المتطلباختياري | القيم والحدود ينطبق عندما: role=tool؛ استخدم المعرّف الفعلي المُرجع | القيمة الافتراضية— |
الحقلmessages[].name | النوعstring | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
الحقلmessages[].reasoning_content | النوعstring | المتطلباختياري | القيم والحدود ينطبق عندما: أعِد تمرير الاستدلال الفعلي المُرجع حيث يستخدمه هذا النموذج | القيمة الافتراضية— |
الحقلmessages[].reasoning_details | النوعobject|array | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلmax_tokens | النوعinteger | المتطلباختياري | القيم والحدود الحد الأدنى: 1 يعتمد على النموذج | القيمة الافتراضية— |
الحقلmax_completion_tokens | النوعinteger | المتطلباختياري | القيم والحدود الحد الأدنى: 1 يعتمد على النموذج | القيمة الافتراضية— |
الحقلstream | النوعboolean | المتطلباختياري | القيم والحدود | القيمة الافتراضيةfalse |
الحقلstream_options.include_usage | النوعboolean | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلtemperature | النوعnumber | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلtop_p | النوعnumber | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلstop | النوعstring|string[] | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلtools | النوعfunction_tool[] | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلtools[].type | النوعstring | المتطلباختياري | القيم والحدود function يعتمد على النموذج | القيمة الافتراضية— |
الحقلtools[].function.name | النوعstring | المتطلبمطلوب | القيم والحدود ينطبق عندما: أداة دالة مقدّمة | القيمة الافتراضية— |
الحقلtools[].function.description | النوعstring | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
الحقلtools[].function.parameters | النوعJSON_schema | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
الحقلtool_choice | النوعstring|object | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلparallel_tool_calls | النوعboolean | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلresponse_format | النوعobject | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلreasoning_effort | النوعstring | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلreasoning | النوعobject | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلservice_tier | النوعstring | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلinstructions | النوعstring | المتطلباختياري | القيم والحدود حقل للتوافق | القيمة الافتراضية— |
الحقلfunctions | النوعfunction[] | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلfunction_call | النوعstring|object | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلprompt_cache_options | النوعobject | المتطلباختياري | القيم والحدود يعتمد على النموذج | القيمة الافتراضية— |
الحقلmodalities | النوعstring[] | المتطلباختياري | القيم والحدود text | القيمة الافتراضية— |
الحقلprovider | النوعobject | المتطلباختياري | القيم والحدود الشروط: يُرفَض provider.options في مسار Ultra النصي هذا | القيمة الافتراضية— |
الحقلcache_control.ttl | النوعstring | المتطلباختياري | القيم والحدود الشروط: تُرفَض 1h في المواضع الفعلية للتخزين المؤقت للموجّه | القيمة الافتراضية— |
تركيبات مواد الإدخال
النص · نص UTF8
messages[].content
معلمات الطريقة ودورة حياتها
| المعلمة | المواصفات |
|---|---|
المعلمةcontent_type | المواصفاتapplication/json |
المعلمةrequired | المواصفاتmodel, messages |
المعلمةmaterial_types | المواصفاتtext |
المعلمةmessages | المواصفاتمصفوفة رسائل ببنية role/content |
المعلمةfile_material | المواصفاتمستند UTF-8 الفعلي مُدرج كنص حرفي؛ لا يُستنتَج معرّف ملف |
المعلمةoptional_controls | المواصفاتstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
المعلمةcontrol_scope | المواصفاتخاص بالنموذج؛ أدوات الدوال التي يقدّمها المستخدم تختلف عن الأدوات المستضافة |
المعلمةoutput_modalities | المواصفاتtext |
المعلمةhosted_operations | المواصفاتfalse |
المعلمةmultimodal_input_binding | المواصفاتnull |
دورة الحياة: synchronous_or_streamed
أرسل معرّف النموذج الدقيق مع messages.
طول السياق ليس حدًا أقصى للإخراج.
يمكن لملف نصي تقديم نص حرفي؛ وتحتاج مدخلات الصور/الصوت/كائنات الملفات إلى ربط دقيق.
الباقات
مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.
- الوضع السريع
- التعرفة القياسية عند اختيار الوضع السريع
- الوضع المرن
- التعرفة القياسية عند اختيار وضع flex
- أقصى جهد للاستدلال
- التعرفة القياسية عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
- جهد الاستدلال · مرتفع
- التعرفة القياسية عندما يكون جهد الاستدلال مرتفعًا
- جهد الاستدلال · معدوم
- التعرفة القياسية عندما لا يُستخدم جهد للاستدلال
تعرفات Ailoot
الأسعار حسب الإعدادات
طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.
| الإعدادات | جدول التعرفة | رموز السياق، أكثر من | رموز السياق، حتى القيمة شاملةً | الرسوم |
|---|---|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | رموز السياق، أكثر من— | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال $0.0003 / 1K من الرموز الإخراج · رموز الإخراج $0.0012 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0.00003 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
| الإعداداتالشريحة 1 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من0 | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال $0.0003 / 1K من الرموز الإخراج · رموز الإخراج $0.0012 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0.00003 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
أمثلة للطلبات
Ailoot Ultra · محادثة OpenAI
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "mistralai/mistral-small-2603", "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='mistralai/mistral-small-2603',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='mistralai/mistral-small-2603',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")
استلام النتائج وحفظها
Ailoot Ultra · محادثة OpenAI
json أو SSE
الاحتفاظ بكل النتائج المكتملة
احتفظ بكل استجابة كاملة وكل ملف وجزء محتوى تم إرجاعه.
احتفظ بكل اختيار ومحتواه واستدعاءات أدواته واستدلاله. في SSE، جمّع التحديثات بحسب فهرس الاختيار/الأداة، واحتفظ بسبب الإنهاء النهائي والاستخدام.
عند الحاجة إلى التحقق من الاستجابة الأصلية
احتفظ بمعرّفات الطلبات/الاستجابات والترويسات. لا يُقدَّم URL عام لاسترجاع مهمة نصية.
حقول الاستجابة
| الحقل | النوع |
|---|---|
الحقلchoices[].index | النوعinteger |
الحقلchoices[].message.content | النوعstring|null |
الحقلchoices[].message.tool_calls | النوعtool_call[] |
الحقلchoices[].message.reasoning_content | النوعstring |
الحقلchoices[].message.reasoning_details | النوعobject|array |
الحقلchoices[].finish_reason | النوعstring|null |
الحقلusage | النوعobject |
الأخطاء والخطوات التالية
| الاستجابة | الشرط | الخطوة التالية |
|---|---|---|
الاستجابة400 · invalid_request_error | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot Ultra mistralai/mistral-small-2603
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
Ailoot Ultra · رسائل Anthropic POST /v1/messages mistralai/mistral-small-2603
mistralai/mistral-small-2603البداية
Mistral Small 4 نموذج هجين للنصوص والصور بقدرات التعليمات والاستدلال والبرمجة. يفعّل إصدار مزيج الخبراء، البالغ إجماليه 119 مليار معلمة، 6٫5 مليار معلمة لكل رمز، ويدعم سياقًا تحدده الشركة المطوّرة بطول 256 ألف رمز وجهد استدلال قابلًا للاختيار وJSON واستدعاءات الدوال.
- المدخلات المقبولة
- النص
- النتائج
- json · sse
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · رسائل Anthropic POST /v1/messages
- الإدخال
text- الإخراج
json,sse- صيغة الإخراج
- JSON أو SSE
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود mistralai/mistral-small-2603 | القيمة الافتراضية— |
الحقلmessages | النوعmessage[] | المتطلبمطلوب | القيم والحدود | القيمة الافتراضية— |
الحقلmessages[].role | النوعstring | المتطلبمطلوب | القيم والحدود user, assistant | القيمة الافتراضية— |
الحقلmessages[].content | النوعstring | المتطلبمطلوب | القيم والحدود | القيمة الافتراضية— |
الحقلmax_tokens | النوعinteger | المتطلبمطلوب | القيم والحدود | القيمة الافتراضية— |
الحقلstream | النوعboolean | المتطلباختياري | القيم والحدود | القيمة الافتراضيةfalse |
تركيبات مواد الإدخال
النص · نص UTF-8
سلسلة نصية messages[].content
معلمات الطريقة ودورة حياتها
| المعلمة | المواصفات |
|---|---|
المعلمةcontent_type | المواصفاتapplication/json |
المعلمةrequired | المواصفاتmodel, messages, max_tokens |
المعلمةoptional_controls | المواصفاتstream |
المعلمةmaterial_types | المواصفاتtext |
المعلمةtext_file_material | المواصفاتاقرأ مستند UTF-8 الفعلي وضع نصه في الإدخال المحدد أو السلسلة النصية لمحتوى الرسالة. |
دورة الحياة: synchronous_or_streamed
الباقات
مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.
- الوضع السريع
- التعرفة القياسية عند اختيار الوضع السريع
- الوضع المرن
- التعرفة القياسية عند اختيار وضع flex
- أقصى جهد للاستدلال
- التعرفة القياسية عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
- جهد الاستدلال · مرتفع
- التعرفة القياسية عندما يكون جهد الاستدلال مرتفعًا
- جهد الاستدلال · معدوم
- التعرفة القياسية عندما لا يُستخدم جهد للاستدلال
تعرفات Ailoot
الأسعار حسب الإعدادات
طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.
| الإعدادات | جدول التعرفة | رموز السياق، أكثر من | رموز السياق، حتى القيمة شاملةً | الرسوم |
|---|---|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | رموز السياق، أكثر من— | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال $0.0003 / 1K من الرموز الإخراج · رموز الإخراج $0.0012 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0.00003 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
| الإعداداتالشريحة 1 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من0 | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال $0.0003 / 1K من الرموز الإخراج · رموز الإخراج $0.0012 / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت $0.00003 / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة — / 1K من الرموز |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
أمثلة للطلبات
Ailoot Ultra · رسائل Anthropic
{
"model": "mistralai/mistral-small-2603",
"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': 'mistralai/mistral-small-2603', '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': 'mistralai/mistral-small-2603', '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))
استلام النتائج وحفظها
Ailoot Ultra · رسائل Anthropic
JSON أو SSE
الاحتفاظ بكل النتائج المكتملة
احتفظ بكل استجابة كاملة وكل ملف وجزء محتوى تم إرجاعه.
احتفظ بكل كتل المحتوى وتوقيعات التفكير ومعرّفات استخدام الأدوات الفعلية. جمّع جميع تحديثات كتل SSE؛ فأول كتلة نصية ليست الإخراج الكامل.
عند الحاجة إلى التحقق من الاستجابة الأصلية
احتفظ بمعرّفات الطلبات/الاستجابات والترويسات. لا يُقدَّم URL عام لاسترجاع مهمة نصية.
حقول الاستجابة
| الحقل | النوع |
|---|---|
الحقلid | النوعstring |
الحقلmodel | النوعstring |
الحقلcontent[] | النوعtext|thinking|tool_use|other content block |
الحقلstop_reason | النوعstring|null |
الحقلusage | النوعobject |
الأخطاء والخطوات التالية
| الاستجابة | الشرط | الخطوة التالية |
|---|---|---|
الاستجابة400 · invalid_request_error | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot Ultra mistralai/mistral-small-2603
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
FAQ · Mistral: Mistral Small 4
- ما المدخلات والنتائج المتاحة؟
POST /v1/chat/completions·mistralai/mistral-small-2603:text→textPOST /v1/messages·mistralai/mistral-small-2603:text→json,sse- ما الحقول التي يستخدمها الطلب؟
POST /v1/chat/completions·mistralai/mistral-small-2603:model,messages,stream,modalities,providerPOST /v1/messages·mistralai/mistral-small-2603:model,messages,max_tokens,stream- ما الحدود المطبقة؟
POST /v1/chat/completions·mistralai/mistral-small-2603:messages.min_items:1