Tingkatkan Python titik pemeriksaan alur kerja ke 1.13.0

Agent Framework 1.13.0 berisi perubahan pemecahan kecil pada eksekusi alur kerja Python. Sebagian besar aplikasi tidak memerlukan perubahan. Perubahan memengaruhi aplikasi yang bergantung pada jumlah superstep atau nomor iterasi yang tepat, diatur max_iterations pada batas konvergensi, memeriksa ID sumber pesan awal, atau membuat asumsi tentang penempatan dan pemesanan titik pemeriksaan.

Latar belakang

Sebelum 1.13.0, titik pemeriksaan tidak sepenuhnya memenuhi janjinya untuk menangkap status alur kerja yang diperlukan untuk melanjutkan eksekusi dari batas yang direkam. Pelaksana mulai berjalan sebelum perulangan superstep dan titik pemeriksaan, sehingga titik pemeriksaan paling awal berisi output pelaksana awal dan status yang diperbarui, tetapi bukan input alur kerja asli. Demikian pula, respons terhadap peristiwa permintaan dikirimkan dan diproses tanpa terlebih dahulu direkam di titik pemeriksaan. Akibatnya, tidak ada titik pemeriksaan yang dapat memutar ulang pelaksana mulai dari input asli atau mereproduksi kelanjutan human-in-the-loop dari respons yang dikirimkan.

Perubahan perilaku

Versi 1.13.0 menutup celah ini. Pelaksana mulai sekarang berjalan di superstep pertama, titik pemeriksaan entri mencatat input awal sebelum superstep tersebut, dan catatan titik pemeriksaan entri respons mengirimkan respons sebelum diproses. Bersama-sama, perubahan ini membuat alur kerja yang di-checkpoint berjalan sepenuhnya dapat diputar ulang dari inputnya, termasuk kelanjutan human-in-the-loop.

Important

Perubahan ini tidak memengaruhi titik pemeriksaan yang dibuat sebelum versi 1.13.0. Titik pemeriksaan yang ada tetap didukung dan masih dapat dipulihkan setelah pemutakhiran.

Perubahan yang mungkin memerlukan tindakan

Area Sebelum 1.13.0 Dalam 1.13.0 dan yang lebih baru Dampak terhadap pengguna
Mulai pelaksana Pelaksana awal berjalan sebelum loop superstep. Input diantrekan untuk pelaksana mulai, yang berjalan di superstep pertama. Setiap eksekusi baru memancarkan satu tambahan superstep_started dan superstep_completed peristiwa.
Jumlah perulangan Iterasi 1 mewakili superstep pertama setelah pelaksana mulai berjalan. Iterasi 1 menjalankan pelaksana mulai. Kemudian bekerja bergeser oleh satu iterasi. Alur kerja yang sebelumnya membutuhkan perulangan $N$ sekarang membutuhkan $N + 1$.
Sumber pesan input Pesan awal memiliki ID "Workflow"sumber yang dikodekan secara permanen . Pesan awal dikirimkan melalui tepi internal pelaksana awal dan memiliki ID INTERNAL_SOURCE_ID(start_executor.id)sumber . Kode yang membaca atau memfilter ID sumber pesan awal harus menggunakan nilai baru.

Penyempurnaan pemutaran ulang

Area Sebelum 1.13.0 Dalam 1.13.0 dan yang lebih baru Penyempurnaan
Titik pemeriksaan awal Titik pemeriksaan iterasi-0 dibuat setelah pelaksana mulai berjalan. Ini menangkap pesan output pelaksana dan status yang diperbarui, tetapi bukan input asli. Titik pemeriksaan entri dibuat sebelum superstep 1. Ini merekam input asli yang diantrekan untuk pelaksana mulai. Memulihkan titik pemeriksaan entri memutar ulang eksekusi lengkap, termasuk pelaksana mulai.
Titik pemeriksaan respons Respons terhadap peristiwa permintaan dikirimkan tanpa terlebih dahulu direkam di titik pemeriksaan. Titik pemeriksaan entri respons dibuat setelah respons dikirimkan dan sebelum mengonsumsi superstep berjalan. Memulihkan titik pemeriksaan entri respons memutar ulang kelanjutan yang menggunakan respons.

Memperbarui penanganan peristiwa superstep

Eksekusi alur kerja baru sekarang menghasilkan satu lagi sepasang peristiwa superstep karena pelaksana mulai berjalan di superstep 1:

  • superstep_started dengan iteration == 1
  • superstep_completed dengan iteration == 1

Pelaksana kerja berikutnya bergeser oleh satu superstep. Memperbarui pengujian, telemetri, indikator kemajuan, atau kode lain yang mengasumsikan jumlah peristiwa yang tepat atau memetakan pelaksana tertentu ke perulangan tetap.

Kode yang merespons jenis peristiwa tanpa mengandalkan jumlah atau iterasinya tidak perlu berubah.

Tinjau batas perulangan maksimum

Batas max_iterations sekarang mencakup superstep yang menjalankan pelaksana mulai. Jika alur kerja sebelumnya menggunakan batas penuhnya, tingkatkan nilai yang dikonfigurasi dengan satu:

from agent_framework import WorkflowBuilder

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

Tidak ada perubahan yang diperlukan jika alur kerja sudah bertemu sebelum mencapai batas yang dikonfigurasi.

Memperbarui pemeriksaan sumber pesan awal

Jika pelaksana awal menggunakan ID sumber pesan awal, ganti nilai yang dikodekan "Workflow" secara permanen dengan ID sumber untuk tepi internal pelaksana awal.

Sebelum 1.13.0:

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

Dalam 1.13.0 dan yang lebih baru:

from agent_framework import INTERNAL_SOURCE_ID

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

INTERNAL_SOURCE_ID(executor_id) saat ini mengembalikan "internal:<executor_id>". Gunakan pembantu alih-alih membuat string ini sehingga kode Anda mengikuti format ID sumber kerangka kerja.

Memperbarui penanganan titik pemeriksaan

Titik pemeriksaan input awal

Ketika titik pemeriksaan diaktifkan, setiap proses baru sekarang membuat titik pemeriksaan entri di iteration_count == 0. Titik pemeriksaan ini berisi input asli sebagai pesan dalam penerbangan yang ditujukan ke pelaksana mulai. Memulihkannya menjalankan ulang pelaksana mulai dan mereproduksi eksekusi alur kerja lengkap.

Setelah setiap selesai superstep, kerangka kerja terus membuat titik pemeriksaan. Untuk menjalankan dengan supersteps $N$, harapkan $N + 1$ titik pemeriksaan: titik pemeriksaan entri diikuti oleh satu titik pemeriksaan untuk setiap superstep yang selesai.

Tinjau kode yang mengasumsikan titik pemeriksaan iterasi-0 berisi status yang dihasilkan oleh pelaksana mulai. Status itu sekarang muncul di titik pemeriksaan yang dibuat setelah superstep 1.

Titik pemeriksaan permintaan-respons

Saat Anda melanjutkan alur kerja dengan workflow.run(responses=...), kerangka kerja sekarang membuat titik pemeriksaan entri respons setelah mengantrekan respons dan sebelum menjalankan superstep yang mengonsumsinya. Memulihkan titik pemeriksaan ini memberikan kembali respons yang direkam dan memutar ulang sisa alur kerja.

Titik pemeriksaan entri respons memiliki hal yang sama iteration_count dengan titik pemeriksaan sebelumnya yang berisi permintaan yang tertunda. Ini adalah titik pemeriksaan terpisah yang poinnya previous_checkpoint_id ke titik pemeriksaan permintaan tertunda tersebut.

Important

iteration_count Tidak dijamin unik dalam riwayat titik pemeriksaan human-in-the-loop. previous_checkpoint_id Ikuti rantai untuk menentukan urutan titik pemeriksaan. Jika Anda memerlukan titik pemeriksaan terbaru, gunakan API penyimpanan titik pemeriksaan alih-alih memilih yang terbesar iteration_count.

Daftar periksa migrasi

  • Perbarui pernyataan dan konsumen peristiwa yang bergantung pada jumlah superstep atau nomor iterasi yang tepat.
  • Tambah max_iterations satu hanya untuk alur kerja yang mencapai batas sebelumnya.
  • Ganti pemeriksaan ID sumber awal dengan "Workflow"INTERNAL_SOURCE_ID(start_executor.id).
  • Perlakukan titik pemeriksaan iterasi-0 sebagai titik pemeriksaan input pra-eksekusi.
  • Pesan titik pemeriksaan human-in-the-loop berdasarkan silsilah daripada mengasumsikan iteration_count unik.
  • Verifikasi bahwa memutar ulang titik pemeriksaan entri dan titik pemeriksaan entri respons menghasilkan output dan efek samping yang diharapkan.

Untuk detail implementasi, lihat Mengizinkan pemutaran ulang penuh titik pemeriksaan alur kerja.