+1 I often get requests for such a feature. Not in the Gen AI space specifically, but for simply having more human control over pipeline execution, to get a human review/approval before starting an important task.
There also have been prior discussions on Airflow’s GitHub: https://github.com/apache/airflow/issues/27162 https://github.com/apache/airflow/discussions/27400 Bas > On 21 May 2025, at 16:38, Buğra Öztürk <ozturkbugr...@gmail.com> wrote: > > +1 I like the idea. I think this can expand Apache Airflow usage in > different areas. It can enable lots of different possibilities via > orchestrating the business workflows. > > On Wed, 21 May 2025, 16:43 Jarek Potiuk, <ja...@potiuk.com> wrote: > >> +1. Sounds pretty useful to have it in Airflow. >> >> On Wed, May 21, 2025 at 4:24 PM Vincent Beck <vincb...@apache.org> wrote: >> >>> +1 as well. I can see this feature useful in many different cases (and >> not >>> only AI/ML related in my opinion). Happy to read the AIP and give >> feedbacks >>> :) >>> >>> On 2025/05/21 07:37:01 Tom Rutter wrote: >>>> +1 here!. As part of our Airflow deployment, we have built a layer on >> top >>>> to do review/approve and branching. It would be great for more of this >> to >>>> be standardised (and managed in the community by developers who are >> more >>>> skilled than me!). >>>> >>>> On Wed, 21 May 2025 at 09:12, Ankit Chaurasia <sunank...@gmail.com> >>> wrote: >>>> >>>>> +1 for this. From an ML/LLM-Ops standpoint, the introduction of a >>> "human in >>>>> the loop" operator appears exceptionally valuable. I can envision >> this >>>>> operator being effectively integrated into ML pipelines, allowing for >>>>> dynamic adjustments to model training parameters based on user >> feedback >>>>> received during the workflow execution. >>>>> >>>>> Furthermore, the utility of such an operator extends beyond ML >>>>> applications. There are numerous use cases within standard data and >>>>> infrastructure workflows where this functionality could be >> beneficial, >>> such >>>>> as implementing data quality overrides, securing compliance >> sign-offs, >>> or >>>>> even pausing incident response pipelines for human intervention. >>>>> >>>>> Best regards, >>>>> *Ankit Chaurasia* >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, May 21, 2025 at 12:42 PM Aritra Basu < >> aritrabasu1...@gmail.com >>>> >>>>> wrote: >>>>> >>>>>> I'm +0 for it, I like the broad strokes of the idea but actual >>> experience >>>>>> will very much depend on how we implement it. >>>>>> >>>>>> I do very much agree for it to have api support and if it would be >>> good >>>>> if >>>>>> we can design it with some thought to what future extensions might >> be >>>>>> needed on this feature. >>>>>> -- >>>>>> Regards, >>>>>> Aritra Basu >>>>>> >>>>>> On Wed, 21 May 2025, 11:51 am Amogh Desai, < >> amoghdesai....@gmail.com >>>> >>>>>> wrote: >>>>>> >>>>>>> I really like the idea and see it to be a window for some AI use >>> cases >>>>> to >>>>>>> be onboarded with >>>>>>> the orchestration capabilities of Airflow. >>>>>>> >>>>>>> I also concur with what Jens mentioned, it should be an opt-in / >>>>> opt-out >>>>>>> feature without >>>>>>> impacting how Airflow works with schedule today. >>>>>>> >>>>>>> As I see it, it's a special case of "event" driven scheduling >>> where the >>>>>>> "event" is a human input. >>>>>>> We should clearly define what happens to the task or the dag run >>> if the >>>>>>> human responsible for >>>>>>> the input doesn't respond in a timely manner. Either escalate, >>> fail, or >>>>>>> make an educated guess >>>>>>> would be some of the thoughts I have in mind. >>>>>>> >>>>>>> I really like the idea and the inputs from others here and I >> would >>> love >>>>>> to >>>>>>> join the party for this. >>>>>>> >>>>>>> Thanks & Regards, >>>>>>> Amogh Desai >>>>>>> >>>>>>> >>>>>>> On Wed, May 21, 2025 at 10:07 AM Avi <a...@astronomer.io.invalid> >>>>> wrote: >>>>>>> >>>>>>>> +1 for the opt-in feature. Can clearly see the need for this to >>>>> exist. >>>>>>> And >>>>>>>> for both UI and APIs. +1 with Julian's idea of Dags waiting for >>>>> input. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> - Avi >>>>>>>> >>>>>>>> On Wed, May 21, 2025 at 3:42 AM Kalyan Reddy < >> kaly...@apache.org >>>> >>>>>> wrote: >>>>>>>> >>>>>>>>> I'm +1 on the idea. There should probably be notifications >> when >>>>>>> approval >>>>>>>>> is needed to continue a task. Additionally, a dashboard would >>> be >>>>>>> helpful >>>>>>>>> for viewing the tasks awaiting my approval. It kind of makes >> me >>>>>>> remember >>>>>>>>> approval gates on Azure DevOps pipelines. Even integrations >> to >>>>>>>>> Slack/PagerDuty to get alerts and approve/deny externally >> sound >>>>>>>>> interesting. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Kalyan R >>>>>>>>> >>>>>>>>> On 2025/05/21 02:07:55 Wei Lee wrote: >>>>>>>>>> I like this idea. As Jens mentioned, this should be an >> opt-in >>>>>>> feature, >>>>>>>>> and starting with providers seems reasonable. After that, we >>> could >>>>>>>> probably >>>>>>>>> get feedback from users and see how we could improve UI/UX. >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Wei >>>>>>>>>> >>>>>>>>>>> On May 21, 2025, at 5:36 AM, Jens Scheffler >>>>>>>> <j_scheff...@gmx.de.INVALID> >>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi All, >>>>>>>>>>> >>>>>>>>>>> oh I am a bit "envy" on receiving the email because I am >>>>> thinking >>>>>>>>> about EXACTLY the same propsal but did not file an AIP to >>> discuss >>>>>> about >>>>>>>>> this... as a matter of personal capacity and I wanted to >>> finish off >>>>>>>>> existing obligations before dropping new ideas. >>>>>>>>>>> >>>>>>>>>>> The very same idea for me was called "Human Interaction" >>>>> provider >>>>>>>>> package (maybe shot name "apache-airflow-providers-human" >> with >>> a >>>>> set >>>>>> of >>>>>>>>> operators/sensors to be integrated in a DAG (if needed) to >>>>>>> Approve/Rejct >>>>>>>>> ==ShortCircuit Operator, an Operator to select by Human as a >>>>>>>>> "HumanBranchOprator" and also if data is missing allowing to >>>>> request >>>>>>> more >>>>>>>>> data with the TriggerForm component. >>>>>>>>>>> >>>>>>>>>>> So nobody is forcing to have this but it can be easily a >>>>> provider >>>>>>>>> package w/o need to change main parts in core. Everybod is >>> free to >>>>>>> decide >>>>>>>>> whether it is a good thing to "block" (with a sensor) a >>> workflow to >>>>>>>> approve >>>>>>>>> - for example you make a Terraform Plan and sombody need to >>> double >>>>>>> check >>>>>>>>> before you Terraform Apply. Maybe you run an AI traning set >>> and if >>>>>> the >>>>>>>>> threshold of data is exceeded somebody need to approve >> budget. >>> Or >>>>> you >>>>>>>> build >>>>>>>>> an AI model and based on the metrics somebody need to approve >>>>>>> deployment. >>>>>>>>> Many cases possible. >>>>>>>>>>> >>>>>>>>>>> I was also a bit reluctant to push this topic now >>> (myself... >>>>> but >>>>>>> now >>>>>>>>> the idea is un-bottled :-D) bcause I assume AIP-68 would need >>> to be >>>>>>>>> implemented first with allowing the UI to extnd with UI >>> widgets in >>>>>>> React >>>>>>>>> allowing the human forms being seamlessly integrated in the >>> new UI. >>>>>> So >>>>>>> I >>>>>>>>> see AIP-68 as a dependency. >>>>>>>>>>> >>>>>>>>>>> I think it might be good to document details on an AIP to >>> align >>>>>>> idas >>>>>>>>> and scope. Would like to join the party. (with my currentl >>> limited >>>>>>>> capacity >>>>>>>>> that aims to complete more tasks than opening more) >>>>>>>>>>> >>>>>>>>>>> Jens >>>>>>>>>>> >>>>>>>>>>> On 20.05.25 22:02, Constance Martineau wrote: >>>>>>>>>>>> I like the idea! We built something similar where a task >>> would >>>>>>> send >>>>>>>> an >>>>>>>>>>>> email with a report attached (Excel, of course). The >> user >>> had >>>>> to >>>>>>>>> either >>>>>>>>>>>> approve the report or flag an issue. If they didn't >>> respond >>>>> in 2 >>>>>>>>> hours, it >>>>>>>>>>>> escalated to a backup, then to the department lead. If >> no >>> one >>>>>>>>> responded, >>>>>>>>>>>> the DAG failed. It was pretty effective for >>> business-critical >>>>>>>>> approvals, >>>>>>>>>>>> and we had clear timeouts and fallback logic. >>>>>>>>>>>> >>>>>>>>>>>> That said, I think this pattern works best when it's >> used >>>>>>> sparingly >>>>>>>>> and >>>>>>>>>>>> with good defaults. Echoing Alexander, human input is >>>>> inherently >>>>>>>>>>>> unreliable, but sometimes you really do it, whether it's >>> for >>>>>>>>> validating a >>>>>>>>>>>> data quality issue, resolving a content flag, or signing >>> off >>>>> on >>>>>>>>> something >>>>>>>>>>>> before moving forward. I don't think that breaks the >>> Airflow >>>>>> model >>>>>>>> as >>>>>>>>> long >>>>>>>>>>>> as: >>>>>>>>>>>> >>>>>>>>>>>> - You can define what happens if no one responds >>> (timeout, >>>>>>> fail, >>>>>>>>>>>> escalate, etc.) >>>>>>>>>>>> - There's an API so you're not forcing people into >> the >>> UI >>>>>>>>>>>> - There's a centralized view of all "waiting for >> input" >>>>> tasks >>>>>>> to >>>>>>>>> avoid >>>>>>>>>>>> hunting them down >>>>>>>>>>>> >>>>>>>>>>>> It shouldn't become a crutch for manual processes, but >> I'd >>>>> love >>>>>> to >>>>>>>> see >>>>>>>>>>>> first-class support for this kind of interaction. It >>>>> definitely >>>>>>>> comes >>>>>>>>> up in >>>>>>>>>>>> the wild. >>>>>>>>>>>> >>>>>>>>>>>> On Tue, May 20, 2025 at 3:46 PM Alexander Shorin < >>>>>>> kxe...@apache.org >>>>>>>>> >>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> While this is an understandable idea, I think it's >> wrong >>> to >>>>>>> involve >>>>>>>>> humans >>>>>>>>>>>>> to take a part into Airflow workflow. >>>>>>>>>>>>> Run with parameters. Read the logs. Retry. >>>>>>>>>>>>> Blocking the whole pipeline could not be acceptable: >>> humans >>>>> are >>>>>>> not >>>>>>>>> stable >>>>>>>>>>>>> resource for input, they may be sick or on vacation and >>> who >>>>>> will >>>>>>> be >>>>>>>>>>>>> operator for this branch? >>>>>>>>>>>>> Better strategy to collect metrics and logs and do >>>>> post-review >>>>>> of >>>>>>>>> tasks >>>>>>>>>>>>> results. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> ,,,^..^,,, >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, May 20, 2025 at 10:15 PM Vikram Koka >>>>>>>>> <vik...@astronomer.io.invalid >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hey everyone, >>>>>>>>>>>>>> >>>>>>>>>>>>>> This is a small technical change, but conceptually it >> is >>>>>>>>> significant and >>>>>>>>>>>>>> therefore bringing it to the devlist. >>>>>>>>>>>>>> >>>>>>>>>>>>>> As we have been having conversations with Airflow >>> users, who >>>>>> are >>>>>>>>> using >>>>>>>>>>>>>> Airflow for Gen AI applications, there are a couple of >>>>>> features >>>>>>>>> that have >>>>>>>>>>>>>> been brought up as being desirable. As context, based >>> on the >>>>>>> most >>>>>>>>> recent >>>>>>>>>>>>>> Airflow survey, over 8% of Airflow users are now using >>>>> Airflow >>>>>>> for >>>>>>>>> Gen AI >>>>>>>>>>>>>> use cases. >>>>>>>>>>>>>> >>>>>>>>>>>>>> One of the desired features is to have "human >>> interaction" >>>>>>> within >>>>>>>>> the >>>>>>>>>>>>>> context of the overall orchestration flow. Here are >> the >>> most >>>>>>>> common >>>>>>>>>>>>> flows: >>>>>>>>>>>>>> 1. Choose a branch in the workflow: This is like a >>> "human >>>>>>>> branch >>>>>>>>>>>>>> operator", where the human gets to pick one of the >>> paths >>>>> to >>>>>>>> move >>>>>>>>>>>>>> forward. >>>>>>>>>>>>>> This is a common pattern for business use cases >> such >>> as >>>>>>> content >>>>>>>>>>>>>> moderation, >>>>>>>>>>>>>> when the automated sentiment analysis is unsure if >>> the >>>>>>> content >>>>>>>> is >>>>>>>>>>>>>> "appropriate" and requires human judgement. >>>>>>>>>>>>>> 2. Approve / Reject: This is a specialized form of >>> the >>>>>> above, >>>>>>>>> where >>>>>>>>>>>>> the >>>>>>>>>>>>>> human approves or rejects the output from the prior >>>>> tasks, >>>>>>>>> thereby >>>>>>>>>>>>>> triggering a different branch in the flow. >>>>>>>>>>>>>> 3. Provide input: The human is expected to provide >>>>> textual >>>>>>>> input, >>>>>>>>>>>>> which >>>>>>>>>>>>>> can then be used for subsequent steps. This is >>> intended >>>>> to >>>>>> be >>>>>>>>> used >>>>>>>>>>>>>> within >>>>>>>>>>>>>> LLM workflows, where a human supplied context / >>> guidance >>>>>> may >>>>>>> be >>>>>>>>>>>>>> critical. >>>>>>>>>>>>>> >>>>>>>>>>>>>> All of these above operations are expected to be >>> performed >>>>>>> through >>>>>>>>> the >>>>>>>>>>>>>> Airflow UI. >>>>>>>>>>>>>> >>>>>>>>>>>>>> 4. A distinct variation of the above could be an API >>>>>> interaction >>>>>>>>> for the >>>>>>>>>>>>>> above workflows without using the UI. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Technical notes: >>>>>>>>>>>>>> a. While the above tasks are being run (or rather >>> waiting >>>>> for >>>>>>>> human >>>>>>>>>>>>> input), >>>>>>>>>>>>>> the DAG will be treated as a continued DAG run. >>>>>>>>>>>>>> >>>>>>>>>>>>>> b. The Airflow UI for these tasks would be a standard >> UI >>>>> form >>>>>>>>> similar to >>>>>>>>>>>>>> the Trigger DAG form. >>>>>>>>>>>>>> For flows (1) and (2) above, this would be populated >>> based >>>>> on >>>>>>> the >>>>>>>>>>>>> follow-on >>>>>>>>>>>>>> task options. >>>>>>>>>>>>>> For flow (3) above, this would be a UI form similar to >>> DAG >>>>>>> params. >>>>>>>>>>>>>> >>>>>>>>>>>>>> c. Each of the above operations will be treated as a >>> "task". >>>>>>>>>>>>>> The task state while waiting for human input will >>> probably >>>>> be >>>>>> a >>>>>>>>> variation >>>>>>>>>>>>>> of the "deferred task state". TBD as we get closer to >>>>>>>>> implementation. >>>>>>>>>>>>>> For flow (3), the input data will be passed using XCom >>> to >>>>>>>> subsequent >>>>>>>>>>>>> tasks. >>>>>>>>>>>>>> >>>>>>>>>>>>>> As detailed above, the technical changes are fairly >>> small. >>>>> Any >>>>>>>>> feedback >>>>>>>>>>>>> is >>>>>>>>>>>>>> welcome. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>> Vikram >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> >>>>>>>>>>>>>> Vikram Koka >>>>>>>>>>>>>> Chief Strategy Officer >>>>>>>>>>>>>> Email: vik...@astronomer.io >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> <https://www.astronomer.io/> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>> >>> --------------------------------------------------------------------- >>>>>>>>>>> To unsubscribe, e-mail: >> dev-unsubscr...@airflow.apache.org >>>>>>>>>>> For additional commands, e-mail: >>> dev-h...@airflow.apache.org >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>> >> --------------------------------------------------------------------- >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org >>>>>>>>>> For additional commands, e-mail: >> dev-h...@airflow.apache.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>> --------------------------------------------------------------------- >>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org >>>>>>>>> For additional commands, e-mail: dev-h...@airflow.apache.org >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org >>> For additional commands, e-mail: dev-h...@airflow.apache.org >>> >>> >>