OpenAI
OpenAI تربط GPT-Live بواجهة Decisions مباشرة: تطبيقك يقرّر ومستخدمك ما زال يتكلّم
فُحص آلياً على صفحة OpenAI في .
أضافت OpenAI إلى GPT-Live تكاملاً أصيلاً مع واجهة Decisions، للنموذجين gpt-live-1 وgpt-6-luna على v1/live/sessions، ويُدرجه سجلّ تغييرات واجهتها في 15 تشرين الأول 2026. صار Live يستطيع أن يستدعي Decisions بنفسه عبر ما تسمّيه OpenAI التفويض الأصيل (native delegation)، أو أن يطلق القرارات كلّما وصلت مقاطع جديدة من النصّ المفرَّغ لكلام مستخدمك أو لردّ Live نفسه. والدليل يختصر الفكرة في سطر واحد: قرارات سريعة الاستجابة ومستخدمك ما زال يتكلّم. وإن كنت قرأت خبرنا السابقOpenAI تُطلق واجهة Decisions في نسخة تجريبية، فهذه هي الواجهة نفسها، لكنّك تصل إليها الآن من داخل جلسة صوتية، من غير أن يقف خادمك في المنتصف.
ما الذي تغيّر
التفويض (delegation) معناه أن يسلّم Live جزءاً من المحادثة إلى جهة أخرى لتتولّاه. والدليل يميّز بين نوعين: في التفويض المخصّص (custom delegation) يُبلغ Live تطبيقَك، وتطبيقك هو الذي يستدعي Decisions؛ وفي التفويض الأصيل يستدعي Live واجهة Decisions مباشرة. والنوع الأصيل يوفّر عليك رحلة ذهاب وإياب كاملة عبر تطبيقك.
وللقرار طريقان يبدأ منهما. الأول أن تحدّد الخيارات في session.delegationوتقول لـLive متى يفوّض. والثاني، حين تريد أن تتفاعل مع المحادثة وهي تجري، ومستخدمك يتكلّم أو Live يردّ، أن تضبطsession.triggersعلى مقاطع النصّ المفرَّغ الداخلة أو الخارجة (transcript deltas)، أي القطع الصغيرة من النصّ المكتوب لما يُقال، تصلك أوّلاً بأوّل قبل أن تكتمل الجملة. ونوع التفويض تختاره عند إنشاء الجلسة (session)، ويبقى ثابتاً طوال تلك الجلسة. أمّا الأسئلة نفسها فيمكن تغييرها والجلسة قائمة: أرسلsession.update، ثمّ انتظر session.updatedالمطابق قبل أن تضيف عنصر قرار لتلك الخطوة.
وفي طلب واحد يستطيع Live أن يطلب من Decisions أن يختار من بين أفعال تعرّفها أنت، وأن يقرّر هل يجب أن يستدعي تطبيقك واجهة Responses. ومثال الدليل مساعد صوتيّ لسيّارة: يستطيع السائق أن يطلب رفع الحرارة أو خفضها، أو تشغيل مزيل الضباب عن الزجاج الأماميّ أو إطفاءه، أو أن يسأل عن الطريق ويبحث عن مكان يأكل فيه. وطلب قرار أصيل واحد يجيب عن أسئلة المثال الثلاثة، كلٌّ على حدة ، والخيارnoneيترك أداة التحكّم تلك في المقصورة على حالها. وفي إعدادات المثال تعمل الجلسة علىgpt-live-1والقرارات علىgpt-6-luna. ولا تحتاج أن تمرّر المحادثة بنفسك: Live يرسل النصّ المفرَّغ إلى Decisions تلقائيّاً.
والمُحفِّزات (triggers) المبنيّة على النصّ المفرَّغ تعمل مستقلّة عن التفويض، وLive هو الذي يحدّد نموذجها ومعرّفها. تستخدم المُحفِّز حين يجب أن يتبع التوقيتُ مجرى المحادثة ؛ وفي مثال الدليل يستطيع شخص رقميّ، أي شخصية متحرّكة على الشاشة، أن يبتسم ويومئ برأسه ومستخدمك ما زال يتكلّم.
ما معناه لك
إن كان تطبيقك الصوتيّ اليوم يمرّر الطلبات إلى Decisions عبر خادمك، فالتفويض الأصيل يُسقط هذه المحطّة من الطريق. وهذه خطوات التحويل، بالترتيب الذي يعرضه الدليل.
الصلاحيات أوّلاً. تحتاج اتّصال Live يعمل، ومفتاحاً معه صلاحية api.decisions.write. وأبقِ ترويسات اتّصال Live المعتادة كما هي، فلا حاجة إلى ترويسة alpha خاصّة بـDecisions.
القرار عند الإنشاء. في طلب إنشاء جلسة WebRTC يوضع كائن التفويض تحت session، بجانب إعدادات النقل (transport) التي عندك. أعطِdelegation النوع decisions، وضع داخل كائن decisions النموذجَ وقائمة أسئلتك questions. واستعمل تعليمات الجلسةinstructionsلتقول لـLive متى يفوّض، وأسئلة الاختيار لتقول لـDecisions ماذا يعيد. ولأنّ النوع يبقى ثابتاً طوال الجلسة ، فالانتقال من التفويض المخصّص إلى الأصيل يعني أن تفتح جلسة جديدة.
استمع إلى الإجابة. احفظ delegation.id من الحدث session.delegation.created. ثمّ في الحدثdecision.event الذي يحمل ذلك delegation_id، ابحث عن decision.completed واقرأ كلّ اختيار باسم سؤاله في event.decision.answers؛ والإجابةnoneمعناها ألّا تفعل شيئاً لذلك الفعل. وإن كنت تصفّي أحداث WebRTC، أي تختار أيّ الأحداث تصلك، فاسمح بالحدثين معاً:session.delegation.created وdecision.event.
نفّذ، ثمّ أبلغ. نفّذ الفعل، واقرأ الحالة الفعلية بعده، وأرسلها إلى Decisions بـdecision.item.create. أضف لقطة مختصرة من الحالة كاملة فقط حين تتغيّر، واعتبر الأحدث هي الحالية؛ فإبقاء المدخلات السابقة في مكانها يحفظ بداية الطلب ثابتة، فيستفيد منها التخزين المؤقّت للتعليمات (prompt caching). انتظرdecision.item.created، ثمّ أرسل النتيجة إلى Live بـsession.commentary.appendمع معرّف التفويض نفسه.
سلّم الباقي. حين يقول أحد الأسئلة إنّ الطلب يتجاوز أفعالك أنت، استدعِ Responses من خادمك بصلاحية api.responses.write، ولا ترسل إلى Live إلّا الإجابة النهائية المختصرة والحالة المؤكَّدة. وهذا الاستدعاء هو الطلب الأوّل في مسار استدعاء الدوالّ (function calling) ، وهي الحلقة التي يشرحها دليلناما هو استخدام الأدوات.
المُحفِّزات، إن أردت ردود فعل لا أفعالاً. أضف إلى session.triggers مُحفِّزاً نوعه decisions، وقيمة event_type فيه session.input_transcript.delta، ومعه أسئلتك ؛ واترك النموذج، فـLive يحدّده. ومُحفِّز ثانٍ علىsession.output_transcript.deltaيتفاعل مع الكلمات التي ينطقها Live. واسمح بحدث النصّ المفرَّغ في التصفية أيضاً، فـLive لا يسلّم نتيجة المُحفِّز إلّا إذا كان حدث النصّ الذي أطلقه مسموحاً به. وقد تصل النتائج بغير ترتيبها، وقد يدمج Live عدّة مقاطع معلّقة في واحد، فطابِقsource_event_idمع المقطع وطبّق أحدث نتيجة مناسبة لكلّ اتّجاه.
المصدر
سجلّ تغييرات واجهة OpenAI، مدخل 15 تشرين الأول 2026، ودليلها لربط الصوت بواجهة Decisions.