Source: https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/
Canonical: https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/
Language: ar

# OpenAI: GPT-6 Luna Pro (batch)

[Markdown](https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/index.md) · [JSON](https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/facts.json)

## [OpenAI: GPT-6 Luna Pro (batch)](https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/)

GPT-6 Luna مع استدلال Pro للمهام المركّزة التي تحتاج إلى تحليل إضافي قبل الإجابة النهائية. يقبل النموذج الأساسي النص والصور، ما يجعله مفيدًا لمعالجة المستندات وفق القواعد والأسئلة البصرية والنتائج المكتوبة الموجزة.

- [**Ailoot Ultra · المعالجة الدفعية** `POST /v1/batches` `openai/gpt-6-luna-pro:batch`](https://ailoot.ai/models/ar/openai-gpt-6-luna-pro-u003a-batch/#method-0)

عن النموذج

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

يشير GPT-6 Luna Pro إلى GPT-6 Luna من OpenAI مع استدلال Pro. صُمّم Luna للمهام المركّزة وأحمال العمل كبيرة الحجم؛ ومدخلاته نصوص وصور ومخرجاته نص. يضيف Pro عملًا للنموذج عند تطوير الإجابة النهائية. وهو نمط تنفيذ يطبّق على النموذج الأساسي المختار، ويختلف عن إعداد جهد الاستدلال الذي يتحكم في مقدار التحليل داخل ذلك النمط.

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

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

تحدّد OpenAI لنافذة سياق GPT-6 Luna حجمًا يبلغ 1,050,000 رمز، مع مدخلات قصوى تبلغ 922,000 رمز ومخرجات قصوى تبلغ 128,000 رمز. الحد الزمني الموثّق للمعرفة هو 18 مايو 2026. يدعم النموذج الأساسي مستويات جهد الاستدلال none وlow وmedium وhigh وxhigh وmax، مع medium بوصفه المستوى الافتراضي. يشغل الاستدلال مساحة من الرموز إلى جانب الإجابة النهائية، لذا ينبغي لموجز المهمة والمادة المقدّمة ترك مساحة للتحليل والنتيجة المطلوبة.

توثّق الشركة المنتجة نمط Pro في Responses API للطلبات الصعبة التي تسمح بتأخر إضافي ونشاط إضافي للنموذج. تستخدم أدوات GPT-6 Luna المدمجة والاستدلال مع استدعاءات الدوال Responses؛ وفي واجهة Chat Completions التابعة للشركة المنتجة، لا يُدعَم استدعاء الدوال إلا مع ضبط جهد الاستدلال على none. يسرد النموذج الأساسي البث وStructured Outputs والبحث في الويب والملفات واستدعاء الدوال والتخزين المؤقت للموجّهات. تشمل أدواته أيضًا توليد الصور وتفسير الشيفرة وعمليات shell وpatch والمهارات واستخدام الحاسوب واتصالات MCP والبحث عن الأدوات. يحدّد تطبيقك العمليات التي يتيحها وينفذها.

استخدم عقد مخرجات دقيقًا للمهمة النهائية: القرار، والحقول التي تدعمه، وأي معلومات لا تزال مفقودة. اطلب، مثلًا، فئة واحدة وتعليلًا موجزًا مرتبطًا بالقاعدة المقدّمة والسؤال التالي الذي ينبغي إرساله إلى القارئ. راجع النتيجة وفق تلك القواعد بدل إضافة نقاش غير مقيّد. يستخدم هذا المسار دور Luna في المهام المركّزة، مع تخصيص العمل الإضافي لـPro لطلب تحتاج اعتمادياته أو استثناءاته إلى فحص أوسع.

**Ailoot Ultra · المعالجة الدفعية** `POST /v1/batches` `openai/gpt-6-luna-pro:batch`

[`openai/gpt-6-luna-pro:batch`](https://ailoot.ai/models/ar/#m=openai%2Fgpt-6-luna-pro%3Abatch&route=Ultra&caller=openai%2Fgpt-6-luna-pro%3Abatch&fmt=batches)

OpenAI /`openai/gpt-6-luna-pro:batch`

### البداية

GPT-6 Luna مع استدلال Pro للمهام المركّزة التي تحتاج إلى تحليل إضافي قبل الإجابة النهائية. يقبل النموذج الأساسي النص والصور، ما يجعله مفيدًا لمعالجة المستندات وفق القواعد والأسئلة البصرية والنتائج المكتوبة الموجزة.

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

النص

النتائج

النص

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

**Ailoot Ultra · المعالجة الدفعية** `POST /v1/batches`

الإدخال

`text`

الإخراج

`text`

صيغة الإخراج

محتوى JSON مضمّن في results\[\].response.body

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`endpoint` | النوع`string` | المتطلبمطلوب | القيم والحدود /v1/chat/completions | القيمة الافتراضية— |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود openai/gpt-6-luna-pro:batch | القيمة الافتراضية— |
| الحقل`requests` | النوع`batch_item[]` | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: ⁦1⁩ | القيمة الافتراضية— |
| الحقل`requests[].custom_id` | النوع`string` | المتطلبمطلوب | القيم والحدود | القيمة الافتراضية— |
| الحقل`requests[].body.messages` | النوع`message[]` | المتطلبمطلوب | القيم والحدود | القيمة الافتراضية— |
| الحقل`completion_window` | النوع`string` | المتطلباختياري | القيم والحدود 24h | القيمة الافتراضية— |
| الحقل`provider` | النوع`object\|null` | المتطلباختياري | القيم والحدود | القيمة الافتراضية— |
| الحقل`requests[].body.model` | النوع`string` | المتطلباختياري | القيم والحدود openai/gpt-6-luna-pro:batch, openai/gpt-6-luna-pro | القيمة الافتراضية— |
| الحقل`provider.only` | النوع`string[]` | المتطلباختياري | القيم والحدود openai | القيمة الافتراضية— |
| الحقل`provider.allow_fallbacks` | النوع`boolean\|null` | المتطلباختياري | القيم والحدود false, null | القيمة الافتراضية— |

معلمات الطريقة ودورة حياتها

| المعلمة | المواصفات |
| --- | --- |
| المعلمة`content_type` | المواصفاتapplication/json |
| المعلمة`required` | المواصفاتendpoint, model, requests |
| المعلمة`material_types` | المواصفاتtext |
| المعلمة`representation` | المواصفاتطلبات requests\[\] مضمّنة؛ يحتوي كل عنصر على custom\_id وbody |
| المعلمة`request_endpoint_profile` | المواصفات/v1/chat/completions |
| المعلمة`file_material` | المواصفاتيمكن للمستدعي قراءة محتوى JSONL الفعلي بترميز UTF-8 محليًا إلى requests\[\]. لا يُستخدم غرض للرفع ولا input\_file\_id ولا مرجع إلى ملف. إذا كانت مواد العميل مفقودة أو فارغة، يتوقف التحضير قبل POST. |
| المعلمة`serialization_order` | المواصفاتendpoint, model, provider (إذا تم توفيره), completion\_window (إذا تم توفيره), requests في النهاية |
| المعلمة`optional_controls` | المواصفاتprovider.only, provider.allow\_fallbacks, completion\_window |
| المعلمة`schema_scope` | المواصفاتأجسام طلبات Text Chat Completions ضمن غلاف Batch المضمّن الموثّق. |

دورة الحياة: `asynchronous`

`GET /v1/batches/{operation_id}` · قيمة response.id الفعلية من استجابة الإنشاء الأصلية؛ مع المستخدم والمفتاح والمجموعة نفسها

### الباقات

مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.

الوضع السريع

غير محدد عند اختيار الوضع السريع

الوضع المرن

غير محدد عند اختيار وضع flex

أقصى جهد للاستدلال

غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال

تسعير التخزين المؤقت الصريح

غير مفعّل عند طلب التخزين المؤقت الصريح

#### تعرفات Ailoot

#### الأسعار حسب الإعدادات

طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.

| الإعدادات | جدول التعرفة | رموز السياق، أكثر من | رموز السياق، حتى القيمة شاملةً | الرسوم |
| --- | --- | --- | --- | --- |
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | رموز السياق، أكثر من— | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال **$0.0001** / 1K من الرموز الإخراج · رموز الإخراج **$0.0005** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت **$0.00001** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0.000125** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |
| الإعداداتالشريحة 1 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من⁦0⁩ | رموز السياق، حتى القيمة شاملةً⁦272,000⁩ | الرسوم الإدخال · رموز الإدخال **$0.0001** / 1K من الرموز الإخراج · رموز الإخراج **$0.0005** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت **$0.00001** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0.000125** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |
| الإعداداتالشريحة 2 لطول الطلب | جدول التعرفة— | رموز السياق، أكثر من⁦272,000⁩ | رموز السياق، حتى القيمة شاملةًلا يوجد حد أقصى | الرسوم الإدخال · رموز الإدخال **$0.0002** / 1K من الرموز الإخراج · رموز الإخراج **$0.00075** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت **$0.00002** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت **$0.00025** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة **—** / 1K من الرموز |

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

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

#### Ailoot Ultra · المعالجة الدفعية

curl · عينة الاختبار المحفوظةPython HTTP · بيانات العميل الفعلية بصيغة JSONLPython · احفظ كل نتيجة مكتملة

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"openai/gpt-6-luna-pro:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
```

```python
import json, os
from pathlib import Path
from urllib.request import Request, urlopen

def prepare_requests(customer_path):
    path = Path(customer_path)
    if not path.is_file(): raise ValueError("Customer JSONL file is missing")
    items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
    if not items: raise ValueError("Customer JSONL contains no requests")
    ids = set()
    for item in items:
        if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
        cid = item["custom_id"]
        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
        ids.add(cid)
        if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
        supplied_model = item["body"].get("model")
        if supplied_model is not None and supplied_model not in ['openai/gpt-6-luna-pro:batch', 'openai/gpt-6-luna-pro']: raise ValueError("body.model must be an exact documented caller or wire ID")
    return {"endpoint":"/v1/chat/completions", "model":"openai/gpt-6-luna-pro:batch", "requests":items}

if __name__ == "__main__":
    material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
    if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
    body = prepare_requests(material)
    key = os.environ.get("AILOOT_API_KEY", "")
    if not key: raise SystemExit("Set AILOOT_API_KEY")
    request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
    with urlopen(request) as response:
        raw = response.read()
        Path("batch-create-response.json").write_bytes(raw)
        print(raw.decode("utf-8"))
```

```python
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
    raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
    raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
```

### استلام النتائج وحفظها

#### Ailoot Ultra · المعالجة الدفعية

محتوى JSON مضمّن في results\[\].response.body

- `GET /v1/batches/{operation_id}`

##### التحقق من حالة المهمة

curl · حالة العملية الأصلية

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
```

##### الاحتفاظ بكل النتائج المكتملة

احتفظ بكل استجابة كاملة وكل ملف وجزء محتوى تم إرجاعه.

احتفظ بمحتوى JSON الكامل للحالة الأصلية، وبكل نتيجة وcustom\_id، وبجسم الاستجابة أو الخطأ كاملًا. احفظ results\[\] المكتملة بصيغة JSONL دون تصفية.

##### عند الحاجة إلى التحقق من الاستجابة الأصلية

احتفظ بمعرّف العملية الأصلي. تتضمن الاستجابة 503 result\_pending\_check الترويسة X-Should-Retry:false؛ لا تُعِد إرسال الدفعة الأصلية التي لا تُعرف نتيجتها مطلقًا.

حقول الاستجابة

| الحقل | النوع |
| --- | --- |
| الحقل`results[].custom_id` | النوعstring |
| الحقل`results[].response.body.choices[].message.content` | النوعstring\|null |
| الحقل`results[].error` | النوعobject\|null |
| الحقل`usage` | النوعobject\|null |
| الحقل`id` | النوعstring |
| الحقل`model` | النوعstring |
| الحقل`endpoint` | النوعstring |
| الحقل`status` | النوعstring |
| الحقل`request_counts` | النوعobject |
| الحقل`results[].id` | النوعstring |
| الحقل`results[].response.status_code` | النوعinteger |
| الحقل`results[].response.request_id` | النوعstring |

الأخطاء والخطوات التالية

| الاستجابة | الشرط | الخطوة التالية |
| --- | --- | --- |
| الاستجابة⁦400⁩ · `invalid_request_error` | الشرطالغلاف المضمّن الموثّق غير صالح، أو توجد مفاتيح مكررة أو مشكلة في هوية العناصر، أو تعارض مع قدرات النموذج المضبوطة. | الخطوة التاليةصحح الحقول المحددة قبل أي إرسال جديد. |
| الاستجابة⁦401⁩ · `authentication_error` | الشرطمفتاح API غير صالح. | الخطوة التاليةاستخدم مفتاح Ailoot المصرّح به. |
| الاستجابة⁦403⁩ · `permission_error` | الشرطمجموعة المعالجة الدفعية غير متاحة. | الخطوة التاليةتحقق من صلاحية الوصول الممنوحة للمفتاح والمجموعة. |
| الاستجابة⁦422⁩ · `invalid_request_error` | الشرطتستخدم المعالجة الدفعية الفوترة من الرصيد؛ ويُرفض إنشاؤها عبر الاشتراك. | الخطوة التاليةاستخدم المجموعة المصرّح بها التي تُخصم رسومها من الرصيد. |
| الاستجابة⁦422⁩ · `price_unavailable` | الشرطلا يمكن تقديم تقدير تكلفة لمدخلات المعالجة الدفعية. | الخطوة التاليةاحتفظ بالاستجابة؛ واستخدم المدخلات الموثّقة لعائلة الواجهات. |
| الاستجابة⁦402⁩ · `billing_error` | الشرطحجز الرصيد للمعالجة الدفعية غير متاح. | الخطوة التاليةعالج ما يمنع قبول الطلب قبل إرسال طلب جديد. |
| الاستجابة⁦503⁩ · `price_unavailable` | الشرطسعر طريقة المعالجة الدفعية أو تعرفاتها الأصلية غير متاحة. | الخطوة التاليةاحتفظ بالاستجابة؛ ولا تستبدل الأسعار. |
| الاستجابة⁦503⁩ · `api_error` | الشرطمسار المورّد المحدد غير متاح. | الخطوة التاليةاحتفظ بالاستجابة لإصلاح المسار. |
| الاستجابة⁦503⁩ · `result_pending_check` | الشرطالنتيجة الأصلية تتطلب التحقق؛ X-Should-Retry:false. | الخطوة التاليةاحتفظ بقيمة operation\_id/id الأصلية واقرأ حالتها؛ ولا تُكرر POST الأصلي مطلقًا. |
| الاستجابة⁦404⁩ · `not_found` | الشرطعملية حالة المعالجة الدفعية غير موجودة أو مملوكة لهوية أخرى. | الخطوة التاليةاستخدم id الأصلي كما هو، والمستخدم والمفتاح والمجموعة نفسها. |

### الأسماء البديلة

#### الأسماء البديلة للنموذج

**Ailoot Ultra** [`openai/gpt-6-luna-pro:batch`](https://ailoot.ai/models/ar/#m=openai%2Fgpt-6-luna-pro%3Abatch&route=Ultra&caller=openai%2Fgpt-6-luna-pro%3Abatch&fmt=batches)

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

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

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

[`openai/gpt-6-luna-pro:batch`](https://ailoot.ai/models/ar/#m=openai%2Fgpt-6-luna-pro%3Abatch&route=Ultra&caller=openai%2Fgpt-6-luna-pro%3Abatch&fmt=batches)

FAQ · OpenAI: GPT-6 Luna Pro (batch)

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

`POST /v1/batches` · `openai/gpt-6-luna-pro:batch`: `text` → `text`

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

`POST /v1/batches` · `openai/gpt-6-luna-pro:batch`: `endpoint`, `model`, `requests`, `completion_window`, `provider`

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

`POST /v1/batches` · `openai/gpt-6-luna-pro:batch`: `requests.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 إلى قدرات الذكاء الاصطناعي في منتجات العملاء ووكلائهم وتطبيقاتهم وعمليات الأتمتة.
