+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
>
>

Reply via email to