Source: https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/
Canonical: https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/
Language: ar

# Qwen: Qwen3 VL 30B A3B Instruct

[Markdown](https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/index.md) · [JSON](https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/facts.json)

## [Qwen: Qwen3 VL 30B A3B Instruct](https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/)

Qwen3-VL-30B-A3B-Instruct هو إصدار Qwen للرؤية واللغة القائم على خليط الخبراء والمركّز على التعليمات، للنص والصور والفيديو. يعيد نصًا أو شيفرة لسير عمل الوكلاء المرئيين وقراءة المستندات والأسئلة المكانية والبرمجة المرئية، مع OCR في 32 لغة وسياق أصلي من 262,144 توكن.

- [**Ailoot Ultra · محادثة OpenAI** `POST /v1/chat/completions` `qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/#method-0)
- [**Ailoot Ultra · رسائل Anthropic** `POST /v1/messages` `qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/qwen-qwen3-vl-30b-a3b-instruct/#method-1)

عن النموذج

يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.

إصدار 30B-A3B Instruct

Qwen3-VL-30B-A3B-Instruct هو إصدار Qwen3-VL القائم على خليط الخبراء والمركّز على التعليمات. يجمع النص مع الصور أو الفيديو وينتج النص، بما فيه الشيفرة. احتفظ بهوية Instruct الدقيقة هذه بدلًا من استبدالها بإصدار Thinking المعزّز للاستدلال أو حجم آخر من العائلة. يحدّد طلب مفيد الأدلة المرئية والسؤال والناتج المحدّد المتوقّع في الإجابة.

الوكلاء المرئيون والبرمجة المرئية

يصف المطوّر التعرّف على عناصر واجهات الكمبيوتر أو الهاتف المحمول وفهم وظائفها واستدعاء الأدوات في سير عمل وكيل مرئي. قدّم لقطة الشاشة والهدف المقصود، ثم اسأل عن عنصر التحكّم المرئي الموافق للمهمة وما يدعم الاختيار. ينفّذ التطبيق المتّصل الإجراءات ويعيد نتائجها؛ ولا يتحكّم التعرّف المرئي وحده في الجهاز.

تشمل البرمجة المرئية محتوى الرسوم التخطيطية وHTML أو CSS أو JavaScript المولّد من الصور أو الفيديو. قدّم مرجع تخطيط مع القيود الوظيفية واطلب مصدرًا قابلًا للتحرير. لتغيير واجهة موجودة، أدرج الشيفرة ذات الصلة وحالات التفاعل المتوقّعة. افصل الناتج عن التفسير حتى يستطيع سير عمل تطوير عرضه وفحصه. المصدر المولّد مقترح للمراجعة، وليس دليلًا على تطبيق يعمل.

الإدراك المكاني والسياق والفيديو

يوثّق Qwen أحكامًا عن مواضع الكائنات ووجهات النظر والحجب، مع تحديد مواضع الكائنات في بُعدين ودعم تحديد مواضعها في ثلاثة أبعاد. حدّد الهدف واطلب الإشارات المرئية التي تدعم العلاقة. ينبغي أن تظلّ العلاقة المستندة إلى صورة منفصلة عن قياس فيزيائي مُعاير.

يبلغ السياق الأصلي 262,144 توكن. تصف العائلة الكتب والفيديو الممتد لساعات، مع فهرسة أحداث على مستوى الثواني وتمديد إلى نحو مليون توكن عبر الإعداد. احتفظ بالتوقيت وترتيب الإطارات عند السؤال عن تسلسل. تحدّد ميزانية التمثيل المضبوطة المواد التي تُعالَج، ولذلك ينبغي ألا يصبح وصف العائلة الواسع للفيديو الطويل وعدًا بتذكّر مثالي لكل إطار.

الاستدلال متعدد الوسائط والتعرّف وOCR

يدعم النموذج أسئلة مرئية في STEM والرياضيات والتحليل السببي والتفسيرات القائمة على الأدلة. قدّم المسألة كاملة وتسميات الرسم واطلب القيم المستخدمة قبل الاستنتاج النهائي. وتوسّع العائلة أيضًا التعرّف ليشمل الأشخاص والمنتجات والمعالم والنباتات والحيوانات والشخصيات الإعلامية. تحقّق من نتيجة التعرّف عندما تهمّ الهوية الدقيقة.

يشمل OCR عددًا يبلغ 32 لغة، وصُمّم لتحسين القراءة في الإضاءة المنخفضة أو الضبابية أو الميل، بما فيها المفردات المتخصّصة وبنية المستندات. قدّم صفحات مقروءة واطلب حقولًا أو اقتباسات أو جدولًا يمكن فحصه وفق المصدر. يجتمع فهم النص والرؤية، ولذلك يمكن للسؤال ربط مقطع بشكله وتعليمات المستخدم.

البنية

يحدّد الإعداد المنشور نموذج رؤية ولغة قائمًا على خليط الخبراء، مع 48 طبقة نصية و128 خبيرًا وثمانية خبراء يُختارون لكل توكن. يمثّل Interleaved-MRoPE الوقت والعرض والارتفاع؛ ويجمع DeepStack ميزات من مستويات متعددة لمشفّر الرؤية؛ وتربط محاذاة النص والطوابع الزمنية الأحداث بمراجع زمنية. استخدم إصدار 30B-A3B Instruct هذا باتّساق عند إعداد المهام المرئية ومقارنة نتائجها.

إعداد المدخلات

تغطّي أمثلة العائلة المهام النصية فقط والصور المفردة أو المتعددة والفيديو. ضع تسميات للمدخلات المرئية واحتفظ بعلاقتها. ميزانيتا بكسلات الصور والفيديو منفصلتان، وتُحتسب ميزانية الفيديو على أساس بكسلات الإطارات المأخوذة كعينات. تُضبط أبعاد الصور الصريحة على مضاعفات 32. الإعداد الافتراضي الموثّق للفيديو إطاران في الثانية، مع عناصر تحكّم في المعدّل أو عدد الإطارات في مسارات العمل المدعومة.

يمكن لأداة الوسائط المساعدة الاحتفاظ ببيانات الفيديو الوصفية، وتنصح بتجنّب تغيير الحجم مرة ثانية عندما تكون قد غيّرت حجم المادة بالفعل. لمقارنة مستندات، نظّم الإجابة حسب تسمية الصفحة. لمقطع، اطلب الحدث وفترته ذات الصلة والأدلة الداعمة. قارن الحقول والمقاطع وأوقات الأحداث المعادة بالصفحات أو المقطع الأصلي.

إرشادات التوليد والقيود

يستخدم ملف توليد نسخة الأوزان افتراضيًا temperature من 0.7 وtop\_p من 0.8 وtop\_k من 20 وعقوبة تكرار من 1.0. وتستخدم طريقة Instruct للعائلة أيضًا عقوبة حضور من 1.5 ومساحة مخرجات من 32,768 توكن. هذه المساحة ميزانية طريقة استخدام لدى المطوّر، وليست حدًا أقصى صارمًا منفصلًا ومثبتًا للمخرجات. لا ينبغي إسناد المساحات المنفصلة للمهام في بطاقة 8B Instruct تلقائيًا إلى هذا الإصدار.

تستخدم إجراءات تمديد العائلة YaRN، وتقترح عاملًا من اثنين أو ثلاثة عند توسيع مخطّط المواضع المتداخل من 256K إلى نحو 1M. خصّص مساحة للنتيجة إلى جانب النص والمواد المرئية الممثّلة، وتحقّق من OCR والاستنتاجات المحسوبة والشيفرة المولّدة وفق الأدلة الأصلية. أبقِ خصائص توليد Instruct منفصلة عن إعدادات نسخة Thinking؛ ولا يثبت اسم الإصدار وحده وجود مفتاح هجين خاص بتطبيق.

مهمة عملية

### مهمة عملية

مثال تقني باللغة الإنجليزية

```
Generate source from a written layout

Produce self-contained HTML and CSS from this written layout: a heading “Upload report”, a file input and a status line below it. On screens narrower than 480 pixels, controls fill the available width. Include empty, selected-file and error text examples, accessible labels and no external assets. Return editable source with a short state explanation.
```

#### النتيجة المتوقعة

```
An HTML/CSS source artifact and a short explanation of the three requested states.
```

#### التحقق من النتيجة

```
Check that the file input has an associated label, narrow layouts fit their container and every requested state has distinct text.
```

**Ailoot Ultra · محادثة OpenAI** `POST /v1/chat/completions` `qwen/qwen3-vl-30b-a3b-instruct`

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

Alibaba /`qwen/qwen3-vl-30b-a3b-instruct`

### البداية

Qwen3-VL-30B-A3B-Instruct هو إصدار Qwen للرؤية واللغة القائم على خليط الخبراء والمركّز على التعليمات، للنص والصور والفيديو. يعيد نصًا أو شيفرة لسير عمل الوكلاء المرئيين وقراءة المستندات والأسئلة المكانية والبرمجة المرئية، مع OCR في 32 لغة وسياق أصلي من 262,144 توكن.

المدخلات المقبولة

النص

النتائج

النص

### متاح في Ailoot · المدخلات والطرائق

**Ailoot Ultra · محادثة OpenAI** `POST /v1/chat/completions`

الإدخال

`text`

الإخراج

`text`

صيغة الإخراج

json أو SSE

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود qwen/qwen3-vl-30b-a3b-instruct | القيمة الافتراضية— |
| الحقل`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** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |
| الإعداداتالشريحة 1 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من⁦0⁩ | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال **$0.0003** / 1K من الرموز الإخراج · رموز الإخراج **$0.0012** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot Ultra · محادثة OpenAI

curlPython SDKالبث باستخدام Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen/qwen3-vl-30b-a3b-instruct", "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
```

```python
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='qwen/qwen3-vl-30b-a3b-instruct',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"))
```

```python
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='qwen/qwen3-vl-30b-a3b-instruct',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** [`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

#### الأسماء البديلة لمسارات الطرائق

استخدم مسارات الطرائق المعروضة أعلاه.

#### معرّفات النماذج ذات الصلة IDs

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

**Ailoot Ultra · رسائل Anthropic** `POST /v1/messages` `qwen/qwen3-vl-30b-a3b-instruct`

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

Alibaba /`qwen/qwen3-vl-30b-a3b-instruct`

### البداية

Qwen3-VL-30B-A3B-Instruct هو إصدار Qwen للرؤية واللغة القائم على خليط الخبراء والمركّز على التعليمات، للنص والصور والفيديو. يعيد نصًا أو شيفرة لسير عمل الوكلاء المرئيين وقراءة المستندات والأسئلة المكانية والبرمجة المرئية، مع OCR في 32 لغة وسياق أصلي من 262,144 توكن.

المدخلات المقبولة

النص

النتائج

json · sse

### متاح في Ailoot · المدخلات والطرائق

**Ailoot Ultra · رسائل Anthropic** `POST /v1/messages`

الإدخال

`text`

الإخراج

`json`, `sse`

صيغة الإخراج

JSON أو SSE

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود qwen/qwen3-vl-30b-a3b-instruct | القيمة الافتراضية— |
| الحقل`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** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |
| الإعداداتالشريحة 1 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من⁦0⁩ | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال **$0.0003** / 1K من الرموز الإخراج · رموز الإخراج **$0.0012** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot Ultra · رسائل Anthropic

جسم طلب JSON مكتمل بالحد الأدنىcurl · استخدم مستندك بترميز UTF-8Python · احفظ النتيجة كاملة

```json
{
  "model": "qwen/qwen3-vl-30b-a3b-instruct",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
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': 'qwen/qwen3-vl-30b-a3b-instruct', '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
```

```python
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': 'qwen/qwen3-vl-30b-a3b-instruct', '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** [`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

#### الأسماء البديلة لمسارات الطرائق

استخدم مسارات الطرائق المعروضة أعلاه.

#### معرّفات النماذج ذات الصلة IDs

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/ar/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

FAQ · Qwen: Qwen3 VL 30B A3B Instruct

ما المدخلات والنتائج المتاحة؟

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `text` → `text` `POST /v1/messages` · `qwen/qwen3-vl-30b-a3b-instruct`: `text` → `json`, `sse`

ما الحقول التي يستخدمها الطلب؟

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3-vl-30b-a3b-instruct`: `model`, `messages`, `max_tokens`, `stream`

ما الحدود المطبقة؟

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `messages.min_items`: `1`

اربط Ailoot بخدمة Claude Code أوOpenCode أوHermes أوتطبيقك.

## الشركة ومحفظة مشاريعها

الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.

## اشتر الرموز بخصم.

خصم اشتراك للعمل المنتظم. الرموز الترويجية حتى 50% على شراء الرموز.

الاشتراك

اختر خطة بخصم لطلباتك المنتظمة.

رمز خصم حتى 50%

أدخل الرمز عند الشراء. يعاد حساب السعر وفق العرض الساري.

المصروفات في السجل

يحفظ النموذج والرموز والمبلغ لكل طلب.

[اختر اشتراكا](https://ailoot.ai/docs/ar/billing/subscriptions/) · [اعرض أسعار النماذج](https://ailoot.ai/models/ar/)

## اربط API بالمنتج الذي تبيعه.

SaaS والتطبيقات والبوتات وفق العرض واتفاقية ترخيص Ailoot. لإعادة البيع، اطلب ترخيص موزع.

تطبيق تجاري

أضف توليد النص والصور والفيديو والصوت إلى ميزات خدمتك المدفوعة.

ترخيص إعادة البيع

أرسل وصف المشروع وطريقة توفير الوصول. اطلب شروط استخدام وإعادة بيع مكتوبة.

المستندات على الموقع

العرض واتفاقية الترخيص وسياسة معالجة البيانات متاحة قبل الربط.

[اطلب ترخيص إعادة بيع](mailto:support@ailoot.ai) · [العرض واتفاقية الترخيص](https://ailoot.ai/legal/offer?lang=ar)

## Ailoot · الشركة ومحفظة مشاريعها





تستند Ailoot إلى خبرة تشغيلية متراكمة وقاعدة عملاء واسعة وخدمة مستقرة ومراقبة مستمرة لمؤشرات الأداء KPI.





الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.





توظف Ailoot هذه الخبرة التشغيلية لإتاحة الوصول عبر API إلى قدرات الذكاء الاصطناعي في منتجات العملاء ووكلائهم وتطبيقاتهم وعمليات الأتمتة.
