ترقية نقاط التحقق Python سير العمل إلى 1.13.0

يحتوي Agent Framework 1.13.0 على تغييرات كسر طفيفة لتنفيذ سير العمل Python. لا تتطلب معظم التطبيقات تغييرات. تؤثر التغييرات على التطبيقات التي تعتمد على عدد الفوقية الدقيقة أو أرقام التكرار، أو تعيينها max_iterations على حد التقارب، أو فحص معرف مصدر الرسالة الأولي، أو وضع افتراضات حول موضع نقطة التحقق وترتيبها.

خلفية

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

تغييرات السلوك

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

مهم

لا تؤثر هذه التغييرات على نقاط التحقق التي تم إنشاؤها قبل الإصدار 1.13.0. تظل نقاط التحقق الموجودة مدعومة ولا يزال من الممكن استعادتها بعد الترقية.

التغييرات التي قد تتطلب إجراء

Area قبل 1.13.0 في 1.13.0 والإحدث تأثير المستخدم
بدء المنفذ تم تشغيل منفذ البدء قبل حلقة الفوقية. يتم وضع الإدخال في قائمة الانتظار لمنفذ البدء، والذي يعمل في الخطوة الأولى. يصدر كل تشغيل جديد حدثا وحدثا superstep_completed إضافيا superstep_started واحدا.
عدد التكرارات يمثل التكرار 1 أول خطوة فائقة بعد تشغيل منفذ البدء. يقوم التكرار 1 بتشغيل منفذ البدء. تحولات العمل اللاحقة بمقدار تكرار واحد. يحتاج سير العمل الذي كان في السابق بحاجة إلى تكرارات $N$ الآن $N + 1$.
مصدر رسالة الإدخال تحتوي الرسالة الأولية على معرف "Workflow"المصدر المشفرة. يتم تسليم الرسالة الأولية من خلال الحافة الداخلية لمنفذ البدء ولها معرف INTERNAL_SOURCE_ID(start_executor.id)المصدر . يجب أن تستخدم التعليمات البرمجية التي تقرأ معرف مصدر الرسالة الأولي أو تصفيته القيمة الجديدة.

تحسينات إمكانية إعادة التشغيل

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

تحديث معالجة حدث superstep

ينتج الآن تشغيل سير عمل جديد زوجا آخر من أحداث superstep لأن منفذ البدء يعمل في علامة فائقة 1:

  • superstep_started مع iteration == 1
  • superstep_completed مع iteration == 1

ينتقل عمل المنفذ اللاحق بمقدار حرف واحد. تحديث الاختبارات أو بيانات تتبع الاستخدام أو مؤشرات التقدم أو التعليمات البرمجية الأخرى التي تفترض عدد أحداث دقيق أو تعين منفذا معينا إلى تكرار ثابت.

لا تحتاج التعليمات البرمجية التي تستجيب لأنواع الأحداث دون الاعتماد على عددها أو التكرار إلى التغيير.

مراجعة الحد الأقصى للتكرار

max_iterations يتضمن الحد الآن الفوقية التي تقوم بتشغيل منفذ البدء. إذا كان سير العمل يستخدم حده الكامل مسبقا، فقم بزيادة القيمة المكونة بمقدار واحد:

from agent_framework import WorkflowBuilder

workflow = WorkflowBuilder(
    start_executor=start_executor,
    max_iterations=previous_max_iterations + 1,
).build()

لا يلزم إجراء أي تغيير إذا كان سير العمل يتقارب بالفعل قبل الوصول إلى الحد الذي تم تكوينه.

تحديث عمليات التحقق الأولية من مصدر الرسالة

إذا كان منفذ البداية يستهلك معرف المصدر للرسالة الأولية، فاستبدل القيمة المشفرة "Workflow" بمعرف المصدر للحافة الداخلية لمنفذ البدء.

قبل 1.13.0:

is_workflow_input = ctx.source_executor_ids != ["Workflow"]

في 1.13.0 والإحدث:

from agent_framework import INTERNAL_SOURCE_ID

is_workflow_input = ctx.source_executor_ids != [INTERNAL_SOURCE_ID(self.id)]

INTERNAL_SOURCE_ID(executor_id) إرجاع "internal:<executor_id>"حاليا . استخدم المساعد بدلا من إنشاء هذه السلسلة بحيث تتبع التعليمات البرمجية تنسيق معرف مصدر إطار العمل.

تحديث معالجة نقاط التحقق

نقاط التحقق الأولية من الإدخال

عند تمكين نقاط التفتيش، يقوم كل تشغيل جديد الآن بإنشاء نقطة تفتيش إدخال في iteration_count == 0. تحتوي نقطة التحقق هذه على الإدخال الأصلي كرسالة أثناء الطيران موجهة إلى منفذ البدء. تعمل استعادته على إعادة تشغيل منفذ البدء وإعادة إنتاج تشغيل سير العمل الكامل.

بعد كل خطوة فائقة مكتملة، يستمر إطار العمل في إنشاء نقطة تحقق. للتشغيل باستخدام $N$ من العلامات الفائقة، توقع نقاط التحقق $N + 1$ : نقطة التحقق المدخلة متبوعة بنقطة تفتيش واحدة لكل نقطة فائقة مكتملة.

راجع التعليمات البرمجية التي تفترض أن نقطة التحقق التكرار-0 تحتوي على الحالة التي ينتجها منفذ البدء. تظهر هذه الحالة الآن في نقطة التحقق التي تم إنشاؤها بعد superstep 1.

نقاط التحقق من الاستجابة للطلب

عند متابعة سير عمل باستخدام workflow.run(responses=...)، يقوم إطار العمل الآن بإنشاء نقطة تحقق لإدخال الاستجابة بعد وضع الاستجابات في قائمة الانتظار وقبل تشغيل الفوقية التي تستهلكها. استعادة نقطة التحقق هذه تعيد تسليم الاستجابات المسجلة وتعيد تشغيل بقية سير العمل.

تحتوي نقطة التحقق لإدخال الاستجابة على نفس iteration_count نقطة التحقق السابقة التي تحتوي على الطلب المعلق. إنها نقطة تفتيش previous_checkpoint_id منفصلة تشير إلى نقطة التحقق المعلقة هذه.

مهم

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

قائمة التحقق من الترحيل

  • تحديث التأكيدات ومستهلكي الأحداث التي تعتمد على عدد الفوقية الدقيقة أو أرقام التكرار.
  • زيادة max_iterations بمقدار واحد فقط لسير العمل الذي وصل إلى الحد السابق.
  • استبدل عمليات التحقق الأولية من معرف المصدر ب "Workflow"INTERNAL_SOURCE_ID(start_executor.id).
  • تعامل مع نقطة التحقق التكرار-0 كنقطة فحص إدخال ما قبل التنفيذ.
  • ترتيب نقاط التفتيش البشرية في التكرار الحلقي حسب دورة الحياة بدلا من افتراض iteration_count أنها فريدة.
  • تحقق من أن إعادة تشغيل نقطة تفتيش إدخال ونقطة تحقق إدخال استجابة ينتج الإخراج المتوقع والآثار الجانبية.

للحصول على تفاصيل التنفيذ، راجع السماح بإعادة التشغيل الكامل لنقطة التحقق من سير العمل.