{"id":1481,"date":"2026-06-25T12:00:00","date_gmt":"2026-06-25T12:00:00","guid":{"rendered":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/"},"modified":"2026-06-25T14:59:41","modified_gmt":"2026-06-25T14:59:41","slug":"agentic-workflow-vs-autonomous-agent-whats-the-difference","status":"publish","type":"post","link":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/","title":{"rendered":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction?"},"content":{"rendered":"<p><br \/>\n<\/p>\n<div id=\"\">\n<p>On this article, you&#8217;ll discover ways to distinguish agentic workflows from autonomous brokers by specializing in who owns management circulation \u2014 a human writing code upfront, or a mannequin reasoning at runtime.<\/p>\n<p>Matters we are going to cowl embody:<\/p>\n<p>Why the actual axis separating these techniques is predictability versus autonomy, not whether or not an LLM is concerned.<br \/>\nHow deterministic workflows, orchestrated workflows, reactive brokers, and autonomous multi-agent techniques differ, with runnable code that makes the control-flow distinction concrete.<br \/>\nWhy workflows, not totally autonomous brokers, dominate manufacturing right now, and why hybrid architectures are the sample that holds up.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-scaled.png\" alt=\"Agentic Workflow vs. Autonomous Agent: What\u2019s the Difference?\" width=\"800\" height=\"706\"\/><\/p>\n<h2>Introduction<\/h2>\n<p>Deloitte initiatives that by 2027, as much as 50% of firms utilizing generative AI can have launched agentic AI pilots or proofs of idea. That\u2019s a wave of adoption large enough that the phrase \u201cagentic\u201d has began protecting virtually something with an LLM name in it, from a set five-step pipeline the place step three occurs to name GPT for a abstract to a totally self-directing system that plans its personal path with no script in any respect.<\/p>\n<p>These aren&#8217;t the identical factor. Treating them as interchangeable results in one among two errors: over-engineering a easy, well-understood process with pointless autonomy, or under-engineering a genuinely open-ended drawback by forcing it right into a inflexible pipeline that breaks the second actuality deviates from the plan.<\/p>\n<p>Anthropic attracts the foundational line of their broadly cited \u201cConstructing Efficient Brokers\u201d piece: workflows are techniques the place LLMs and instruments are orchestrated by way of predefined code paths. Brokers are techniques the place LLMs dynamically direct their very own course of and gear utilization, sustaining management over how they accomplish a process. Every little thing on this article is detailed beneath that one distinction.<\/p>\n<p>This piece maps the complete spectrum of deterministic workflows, orchestrated techniques, reactive single brokers, and autonomous multi-agent techniques, with code at every stage that makes the control-flow distinction concrete fairly than summary. The code right here illustrates structure, not a deployable system; the purpose of every snippet is to indicate who decides what occurs subsequent, to not ship a characteristic.<\/p>\n<h2>The Actual Axis Isn\u2019t \u201cAI vs. No AI\u201d: It\u2019s Predictability vs. Autonomy<\/h2>\n<p>Earlier than evaluating architectures, it\u2019s price changing the mistaken query. The query isn\u2019t \u201cdoes this technique use an LLM.\u201d Virtually all the things does now. The 2 questions that really matter, borrowing a framing that\u2019s gained actual traction in structure circles, are: does this course of should be repeatable, auditable, and explainable step-by-step? And: is the proper path even recognized upfront, or does the system want to find it at runtime?<\/p>\n<p>A system can lean closely on an LLM and nonetheless be totally deterministic in construction \u2014 a set pipeline the place one step occurs to name a mannequin for textual content technology, however the subsequent step is hardcoded no matter what comes again. A system can be \u201cagentic\u201d with little or no actual autonomy: a tightly scripted loop with solely two allowed actions and a tough step restrict. The presence of an LLM name will not be the sign. Possession of management circulation is.<\/p>\n<p>Google Cloud\u2019s personal design-pattern documentation attracts this precise line operationally: deterministic workflows embody duties with a clearly outlined path recognized upfront, the place the steps don\u2019t change a lot from one run to the subsequent. Workflows that require dynamic orchestration contain issues the place the agent should decide one of the simplest ways to proceed, with no predefined script. That\u2019s the spectrum this text walks by way of, one stage at a time.<\/p>\n<h2>Deterministic Workflows<\/h2>\n<p>That is the baseline. A deterministic workflow has a recognized sequence of steps determined at design time, by a human, in code. An LLM can sit inside any step \u2014 producing textual content, classifying enter, drafting a abstract \u2014 nevertheless it doesn&#8217;t select what occurs after its personal step runs. The orchestrating code does that, no matter what the mannequin returns.<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d346259191563430127\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n# deterministic_pipeline.py&#13;<br \/>\n# Stipulations: none past Python&#8217;s commonplace library&#13;<br \/>\n# Run: python deterministic_pipeline.py&#13;<br \/>\n&#13;<br \/>\ndef mock_llm_classify(textual content: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    Mock LLM name &#8212; stands in for an actual API name to maintain this instance&#13;<br \/>\n    runnable with out an API key. The purpose is structural: no matter this&#13;<br \/>\n    returns, the NEXT operate that runs is already determined under.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    if &#8220;refund&#8221; in textual content.decrease() or &#8220;cost&#8221; in textual content.decrease():&#13;<br \/>\n        return &#8220;billing&#8221;&#13;<br \/>\n    return &#8220;common&#8221;&#13;<br \/>\n&#13;<br \/>\ndef extract(raw_input: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;Step 1 &#8212; all the time runs, all the time results in step 2. No branching right here.&#8221;&#8221;&#8221;&#13;<br \/>\n    return raw_input.strip()&#13;<br \/>\n&#13;<br \/>\ndef classify(cleaned_text: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    Step 2 &#8212; calls an LLM to provide a label, however the label has no impact&#13;<br \/>\n    on which operate runs subsequent. That is the deterministic half: the mannequin&#13;<br \/>\n    fills in a chunk of information, it would not affect the route.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    label = mock_llm_classify(cleaned_text)&#13;<br \/>\n    print(f&#8221;  [classify] LLM returned label=&#8221;{label}&#8221; (informational solely)&#8221;)&#13;<br \/>\n    return cleaned_text&#13;<br \/>\n&#13;<br \/>\ndef summarize(cleaned_text: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;Step 3 &#8212; all the time runs after step 2, whatever the label from step 2.&#8221;&#8221;&#8221;&#13;<br \/>\n    return f&#8221;Abstract: {cleaned_text[:40]}&#8230;&#8221;&#13;<br \/>\n&#13;<br \/>\ndef notify(abstract: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;Step 4 &#8212; all the time runs final. The trail is mounted at design time.&#8221;&#8221;&#8221;&#13;<br \/>\n    return f&#8221;Notification despatched: {abstract}&#8221;&#13;<br \/>\n&#13;<br \/>\ndef run_deterministic_pipeline(raw_input: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    The management circulation right here is written solely by a human, upfront.&#13;<br \/>\n    Each run takes the an identical path: extract -&gt; classify -&gt; summarize -&gt; notify.&#13;<br \/>\n    The LLM name inside classify() produces a label, however that label is rarely&#13;<br \/>\n    used to resolve what operate runs subsequent &#8212; it is information flowing by way of a set pipe.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    step1 = extract(raw_input)&#13;<br \/>\n    step2 = classify(step1)&#13;<br \/>\n    step3 = summarize(step2)&#13;<br \/>\n    step4 = notify(step3)&#13;<br \/>\n    return step4&#13;<br \/>\n&#13;<br \/>\n&#13;<br \/>\nif __name__ == &#8220;__main__&#8221;:&#13;<br \/>\n    # Two inputs that the LLM would classify utterly in another way&#13;<br \/>\n    result_1 = run_deterministic_pipeline(&#8220;I desire a refund for my final cost&#8221;)&#13;<br \/>\n    result_2 = run_deterministic_pipeline(&#8220;What are your corporation hours?&#8221;)&#13;<br \/>\n&#13;<br \/>\n    print(f&#8221;nResult 1: {result_1}&#8221;)&#13;<br \/>\n    print(f&#8221;End result 2: {result_2}&#8221;)<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"urvanov-syntax-highlighter-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<p>1<\/p>\n<p>2<\/p>\n<p>3<\/p>\n<p>4<\/p>\n<p>5<\/p>\n<p>6<\/p>\n<p>7<\/p>\n<p>8<\/p>\n<p>9<\/p>\n<p>10<\/p>\n<p>11<\/p>\n<p>12<\/p>\n<p>13<\/p>\n<p>14<\/p>\n<p>15<\/p>\n<p>16<\/p>\n<p>17<\/p>\n<p>18<\/p>\n<p>19<\/p>\n<p>20<\/p>\n<p>21<\/p>\n<p>22<\/p>\n<p>23<\/p>\n<p>24<\/p>\n<p>25<\/p>\n<p>26<\/p>\n<p>27<\/p>\n<p>28<\/p>\n<p>29<\/p>\n<p>30<\/p>\n<p>31<\/p>\n<p>32<\/p>\n<p>33<\/p>\n<p>34<\/p>\n<p>35<\/p>\n<p>36<\/p>\n<p>37<\/p>\n<p>38<\/p>\n<p>39<\/p>\n<p>40<\/p>\n<p>41<\/p>\n<p>42<\/p>\n<p>43<\/p>\n<p>44<\/p>\n<p>45<\/p>\n<p>46<\/p>\n<p>47<\/p>\n<p>48<\/p>\n<p>49<\/p>\n<p>50<\/p>\n<p>51<\/p>\n<p>52<\/p>\n<p>53<\/p>\n<p>54<\/p>\n<p>55<\/p>\n<p>56<\/p>\n<p>57<\/p>\n<\/div>\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-p\"># deterministic_pipeline.py<\/span><\/p>\n<p><span class=\"crayon-p\"># Stipulations: none past Python&#8217;s commonplace library<\/span><\/p>\n<p><span class=\"crayon-p\"># Run: python deterministic_pipeline.py<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">mock_llm_classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Mock LLM name &#8212; stands in for an actual API name to maintain this instance<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0runnable with out an API key. The purpose is structural: no matter this<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0returns, the NEXT operate that runs is already determined under.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;refund&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">decrease<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;cost&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">decrease<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;billing&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;common&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">extract<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;Step 1 &#8212; all the time runs, all the time results in step 2. No branching right here.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">strip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cleaned_text<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Step 2 &#8212; calls an LLM to provide a label, however the label has no impact<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0on which operate runs subsequent. That is the deterministic half: the mannequin<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0fills in a chunk of information, it would not affect the route.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">label<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">mock_llm_classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cleaned_text<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0[classify] LLM returned label=&#8221;{label}&#8221; (informational solely)&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">cleaned_text<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">summarize<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cleaned_text<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;Step 3 &#8212; all the time runs after step 2, whatever the label from step 2.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;Abstract: {cleaned_text[:40]}&#8230;&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">notify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">abstract<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;Step 4 &#8212; all the time runs final. The trail is mounted at design time.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;Notification despatched: {abstract}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">run_deterministic_pipeline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0The management circulation right here is written solely by a human, upfront.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Each run takes the an identical path: extract -&gt; classify -&gt; summarize -&gt; notify.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0The LLM name inside classify() produces a label, however that label is rarely<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0used to resolve what operate runs subsequent &#8212; it is information flowing by way of a set pipe.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">step1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">extract<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">step2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">step1<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">step3<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">summarize<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">step2<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">step4<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">notify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">step3<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">step4<\/span><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">__name__<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;__main__&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># Two inputs that the LLM would classify utterly in another way<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">result_1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">run_deterministic_pipeline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;I desire a refund for my final cost&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">result_2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">run_deterministic_pipeline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;What are your corporation hours?&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;nResult 1: {result_1}&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;End result 2: {result_2}&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Easy methods to run: python deterministic_pipeline.py, no dependencies required.<\/p>\n<p>Output:<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d3462591a0927158830\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n  [classify] LLM returned label=&#8221;billing&#8221; (informational solely)&#13;<br \/>\n  [classify] LLM returned label=&#8221;common&#8221; (informational solely)&#13;<br \/>\n&#13;<br \/>\nEnd result 1: Notification despatched: Abstract: I desire a refund for my final cost&#8230;&#13;<br \/>\nEnd result 2: Notification despatched: Abstract: What are your corporation hours?&#8230;<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">classify<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">LLM <\/span><span class=\"crayon-e\">returned <\/span><span class=\"crayon-v\">label<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">&#8216;billing&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">informational <\/span><span class=\"crayon-v\">solely<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">classify<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">LLM <\/span><span class=\"crayon-e\">returned <\/span><span class=\"crayon-v\">label<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">&#8216;common&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">informational <\/span><span class=\"crayon-v\">solely<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-i\">End result<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Notification <\/span><span class=\"crayon-v\">despatched<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Abstract<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">need<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">a<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">refund <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">my <\/span><span class=\"crayon-e\">final <\/span><span class=\"crayon-v\">cost<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-i\">End result<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Notification <\/span><span class=\"crayon-v\">despatched<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Abstract<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">What <\/span><span class=\"crayon-e\">are <\/span><span class=\"crayon-e\">your <\/span><span class=\"crayon-e\">enterprise <\/span><span class=\"crayon-v\">hours<\/span><span class=\"crayon-sy\">?<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Discover what occurred: the mock LLM categorized the 2 inputs utterly in another way, billing versus common, and it made zero distinction to the trail both enter took. Each went by way of the very same 4 capabilities in the identical order. That\u2019s all the definition of deterministic: the route is mounted, even when an LLM is doing actual work inside one of many steps.<\/p>\n<h2>Orchestrated Workflows<\/h2>\n<p>That is the center floor that will get mislabeled most frequently as \u201cagentic,\u201d and it\u2019s price slowing down right here as a result of it\u2019s the road most individuals truly cross once they begin utilizing that phrase loosely.<\/p>\n<p>An orchestrated workflow nonetheless has a graph of potential paths outlined solely upfront, however which path will get taken now depends upon a runtime choice, steadily made by an LLM name. That is nonetheless a workflow. Each department that could possibly be taken was anticipated and written into code by a human earlier than the system ever ran. The LLM picks a department off a menu another person wrote. It doesn&#8217;t invent a brand new merchandise on that menu.<\/p>\n<p>That is exactly the \u201cdynamic orchestration\u201d class Google Cloud separates from real brokers \u2014 the system must plan and route, however inside a construction {that a} human nonetheless totally designed.<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d3462591a6140503676\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n# orchestrated_pipeline.py&#13;<br \/>\n# Stipulations: none past Python&#8217;s commonplace library&#13;<br \/>\n# Run: python orchestrated_pipeline.py&#13;<br \/>\n&#13;<br \/>\ndef mock_llm_classify(textual content: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;Mock LLM classification name.&#8221;&#8221;&#8221;&#13;<br \/>\n    text_lower = textual content.decrease()&#13;<br \/>\n    if &#8220;refund&#8221; in text_lower or &#8220;cost&#8221; in text_lower:&#13;<br \/>\n        return &#8220;billing&#8221;&#13;<br \/>\n    if &#8220;crash&#8221; in text_lower or &#8220;error&#8221; in text_lower or &#8220;bug&#8221; in text_lower:&#13;<br \/>\n        return &#8220;technical&#8221;&#13;<br \/>\n    return &#8220;common&#8221;&#13;<br \/>\n&#13;<br \/>\ndef extract(raw_input: str) -&gt; str:&#13;<br \/>\n    return raw_input.strip()&#13;<br \/>\n&#13;<br \/>\n# Three pre-defined downstream handlers. A human wrote all three of those&#13;<br \/>\n# upfront. The LLM doesn&#8217;t invent a fourth path &#8212; it might solely choose&#13;<br \/>\n# amongst branches that exist already on this code.&#13;<br \/>\ndef handle_billing(textual content: str) -&gt; str:&#13;<br \/>\n    return f&#8221;[BILLING TEAM] Routed: {textual content[:50]}&#8221;&#13;<br \/>\n&#13;<br \/>\ndef handle_technical(textual content: str) -&gt; str:&#13;<br \/>\n    return f&#8221;[TECH SUPPORT] Routed: {textual content[:50]}&#8221;&#13;<br \/>\n&#13;<br \/>\ndef handle_general(textual content: str) -&gt; str:&#13;<br \/>\n    return f&#8221;[GENERAL QUEUE] Routed: {textual content[:50]}&#8221;&#13;<br \/>\n&#13;<br \/>\n# The department map IS all the choice house. Each key right here was written&#13;<br \/>\n# by a human forward of time. The LLM&#8217;s job is to select a key &#8212; not outline one.&#13;<br \/>\nROUTE_MAP = {&#13;<br \/>\n    &#8220;billing&#8221;: handle_billing,&#13;<br \/>\n    &#8220;technical&#8221;: handle_technical,&#13;<br \/>\n    &#8220;common&#8221;: handle_general,&#13;<br \/>\n}&#13;<br \/>\n&#13;<br \/>\ndef run_orchestrated_pipeline(raw_input: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    Nonetheless a workflow, not an agent: each potential path was anticipated&#13;<br \/>\n    and coded by a human forward of time, sitting in ROUTE_MAP. The LLM name&#13;<br \/>\n    decides WHICH pre-built department executes for this particular enter, however&#13;<br \/>\n    it can not invent a department that is not already a key in ROUTE_MAP.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    cleaned = extract(raw_input)&#13;<br \/>\n    label = mock_llm_classify(cleaned)&#13;<br \/>\n    print(f&#8221;  [route] LLM categorized as &#8216;{label}&#8217; -&gt; dispatching to handle_{label}()&#8221;)&#13;<br \/>\n&#13;<br \/>\n    handler = ROUTE_MAP.get(label, handle_general)&#13;<br \/>\n    return handler(cleaned)&#13;<br \/>\n&#13;<br \/>\n&#13;<br \/>\nif __name__ == &#8220;__main__&#8221;:&#13;<br \/>\n    test_inputs = [&#13;<br \/>\n        &#8220;I was charged twice for my refund request&#8221;,&#13;<br \/>\n        &#8220;The app keeps crashing with an error on startup&#8221;,&#13;<br \/>\n        &#8220;What are your business hours?&#8221;,&#13;<br \/>\n    ]&#13;<br \/>\n    for inp in test_inputs:&#13;<br \/>\n        outcome = run_orchestrated_pipeline(inp)&#13;<br \/>\n        print(f&#8221;  End result: {outcome}n&#8221;)<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"urvanov-syntax-highlighter-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<p>1<\/p>\n<p>2<\/p>\n<p>3<\/p>\n<p>4<\/p>\n<p>5<\/p>\n<p>6<\/p>\n<p>7<\/p>\n<p>8<\/p>\n<p>9<\/p>\n<p>10<\/p>\n<p>11<\/p>\n<p>12<\/p>\n<p>13<\/p>\n<p>14<\/p>\n<p>15<\/p>\n<p>16<\/p>\n<p>17<\/p>\n<p>18<\/p>\n<p>19<\/p>\n<p>20<\/p>\n<p>21<\/p>\n<p>22<\/p>\n<p>23<\/p>\n<p>24<\/p>\n<p>25<\/p>\n<p>26<\/p>\n<p>27<\/p>\n<p>28<\/p>\n<p>29<\/p>\n<p>30<\/p>\n<p>31<\/p>\n<p>32<\/p>\n<p>33<\/p>\n<p>34<\/p>\n<p>35<\/p>\n<p>36<\/p>\n<p>37<\/p>\n<p>38<\/p>\n<p>39<\/p>\n<p>40<\/p>\n<p>41<\/p>\n<p>42<\/p>\n<p>43<\/p>\n<p>44<\/p>\n<p>45<\/p>\n<p>46<\/p>\n<p>47<\/p>\n<p>48<\/p>\n<p>49<\/p>\n<p>50<\/p>\n<p>51<\/p>\n<p>52<\/p>\n<p>53<\/p>\n<p>54<\/p>\n<p>55<\/p>\n<p>56<\/p>\n<p>57<\/p>\n<p>58<\/p>\n<p>59<\/p>\n<p>60<\/p>\n<\/div>\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-p\"># orchestrated_pipeline.py<\/span><\/p>\n<p><span class=\"crayon-p\"># Stipulations: none past Python&#8217;s commonplace library<\/span><\/p>\n<p><span class=\"crayon-p\"># Run: python orchestrated_pipeline.py<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">mock_llm_classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;Mock LLM classification name.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">text_lower<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">decrease<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;refund&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">text_lower <\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;cost&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">text_lower<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;billing&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;crash&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">text_lower <\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;error&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">text_lower <\/span><span class=\"crayon-st\">or<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;bug&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">text_lower<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;technical&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;common&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">extract<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">strip<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-p\"># Three pre-defined downstream handlers. A human wrote all three of those<\/span><\/p>\n<p><span class=\"crayon-p\"># upfront. The LLM doesn&#8217;t invent a fourth path &#8212; it might solely choose<\/span><\/p>\n<p><span class=\"crayon-p\"># amongst branches that exist already on this code.<\/span><\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">handle_billing<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;[BILLING TEAM] Routed: {textual content[:50]}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">handle_technical<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;[TECH SUPPORT] Routed: {textual content[:50]}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">handle_general<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">textual content<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;[GENERAL QUEUE] Routed: {textual content[:50]}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-p\"># The department map IS all the choice house. Each key right here was written<\/span><\/p>\n<p><span class=\"crayon-p\"># by a human forward of time. The LLM&#8217;s job is to select a key &#8212; not outline one.<\/span><\/p>\n<p><span class=\"crayon-v\">ROUTE_MAP<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;billing&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">handle_billing<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;technical&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">handle_technical<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;common&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">handle_general<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-sy\">}<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">run_orchestrated_pipeline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Nonetheless a workflow, not an agent: each potential path was anticipated<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0and coded by a human forward of time, sitting in ROUTE_MAP. The LLM name<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0decides WHICH pre-built department executes for this particular enter, however<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0it can not invent a department that is not already a key in ROUTE_MAP.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">cleaned<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">extract<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">raw_input<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">label<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">mock_llm_classify<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cleaned<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0[route] LLM categorized as &#8216;{label}&#8217; -&gt; dispatching to handle_{label}()&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">handler<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">ROUTE_MAP<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">get<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">label<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">handle_general<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">handler<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cleaned<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">__name__<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;__main__&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">test_inputs<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;I was charged twice for my refund request&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;The app keeps crashing with an error on startup&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;What are your business hours?&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">]<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">inp <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">test_inputs<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">outcome<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">run_orchestrated_pipeline<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">inp<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0End result: {outcome}n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Easy methods to run: python orchestrated_pipeline.py, no dependencies required.<\/p>\n<p>Output:<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d3462591ac826088819\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n  [route] LLM categorized as &#8216;billing&#8217; -&gt; dispatching to handle_billing()&#13;<br \/>\n  End result: [BILLING TEAM] Routed: I used to be charged twice for my refund request&#13;<br \/>\n&#13;<br \/>\n  [route] LLM categorized as &#8216;technical&#8217; -&gt; dispatching to handle_technical()&#13;<br \/>\n  End result: [TECH SUPPORT] Routed: The app retains crashing with an error on startup&#13;<br \/>\n&#13;<br \/>\n  [route] LLM categorized as &#8216;common&#8217; -&gt; dispatching to handle_general()&#13;<br \/>\n  End result: [GENERAL QUEUE] Routed: What are your corporation hours?<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">route<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">LLM <\/span><span class=\"crayon-e\">categorized <\/span><span class=\"crayon-st\">as<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;billing&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">dispatching <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">handle_billing<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">End result<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">BILLING <\/span><span class=\"crayon-v\">TEAM<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Routed<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">was <\/span><span class=\"crayon-e\">charged <\/span><span class=\"crayon-e\">twice <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">my <\/span><span class=\"crayon-e\">refund <\/span><span class=\"crayon-i\">request<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">route<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">LLM <\/span><span class=\"crayon-e\">categorized <\/span><span class=\"crayon-st\">as<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;technical&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">dispatching <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">handle_technical<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">End result<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">TECH <\/span><span class=\"crayon-v\">SUPPORT<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Routed<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">The <\/span><span class=\"crayon-e\">app <\/span><span class=\"crayon-e\">retains <\/span><span class=\"crayon-e\">crashing <\/span><span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">an <\/span><span class=\"crayon-e\">error <\/span><span class=\"crayon-e\">on <\/span><span class=\"crayon-i\">startup<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">route<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">LLM <\/span><span class=\"crayon-e\">categorized <\/span><span class=\"crayon-st\">as<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8216;common&#8217;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">dispatching <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">handle_general<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">End result<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-e\">GENERAL <\/span><span class=\"crayon-v\">QUEUE<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Routed<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">What <\/span><span class=\"crayon-e\">are <\/span><span class=\"crayon-e\">your <\/span><span class=\"crayon-e\">enterprise <\/span><span class=\"crayon-v\">hours<\/span><span class=\"crayon-sy\">?<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Three totally different inputs took three totally different paths this time \u2014 that\u2019s new in comparison with the earlier part. However take a look at ROUTE_MAP: each potential vacation spot was already written into the code earlier than any of those inputs arrived. The LLM exercised judgment about which key to make use of. It by no means had the choice to create a key that wasn\u2019t there. That distinction \u2014 a set set of potential paths versus a path that will get invented at runtime \u2014 is precisely the place the subsequent part picks up.<\/p>\n<h2>Reactive Brokers: The ReAct Loop and a Genuinely Open Path<\/h2>\n<p>That is the place actual autonomy begins. The ReAct sample \u2014 Reasoning plus Performing, launched by Yao et al. in 2022 \u2014 lets the mannequin itself resolve, at every step, what motion to take subsequent based mostly on what it noticed from the earlier motion. There is no such thing as a pre-written department protecting each case. The agent operates in an iterative loop of thought, motion, and remark till an exit situation is met, and the sequence itself \u2014 what number of steps, in what order, and which instruments \u2014 will not be knowable upfront. Solely the obtainable actions are mounted; the trail by way of them will not be.<\/p>\n<p>That is the architectural threshold the earlier two sections had been constructing towards. Within the orchestrated workflow, a human wrote each potential department into ROUTE_MAP earlier than the system ran. Right here, the mannequin decides each the trail and the sequence size at runtime, despite the fact that the toolset itself continues to be mounted.<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d3462591b3085511502\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n# react_loop.py&#13;<br \/>\n# Stipulations: none past Python&#8217;s commonplace library&#13;<br \/>\n# Run: python react_loop.py&#13;<br \/>\n&#13;<br \/>\ndef search_knowledge_base(question: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;A instrument the agent can name. Whether or not and when it will get referred to as will not be&#13;<br \/>\n    determined right here &#8212; it is determined by the mannequin, at runtime.&#8221;&#8221;&#8221;&#13;<br \/>\n    mock_kb = {&#13;<br \/>\n        &#8220;refund coverage&#8221;: &#8220;Refunds can be found inside 30 days of buy.&#8221;,&#13;<br \/>\n        &#8220;transport time&#8221;: &#8220;Normal transport takes 5-7 enterprise days.&#8221;,&#13;<br \/>\n    }&#13;<br \/>\n    for key, worth in mock_kb.objects():&#13;<br \/>\n        if key in question.decrease():&#13;<br \/>\n            return worth&#13;<br \/>\n    return &#8220;No matching data present in data base.&#8221;&#13;<br \/>\n&#13;<br \/>\ndef escalate_to_human(cause: str) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;A second instrument the agent can name &#8212; once more, the choice to name this&#13;<br \/>\n    as an alternative of the search instrument is made by the mannequin, not by this code.&#8221;&#8221;&#8221;&#13;<br \/>\n    return f&#8221;Escalated to human agent. Purpose: {cause}&#8221;&#13;<br \/>\n&#13;<br \/>\nAVAILABLE_TOOLS = {&#13;<br \/>\n    &#8220;search_knowledge_base&#8221;: search_knowledge_base,&#13;<br \/>\n    &#8220;escalate_to_human&#8221;: escalate_to_human,&#13;<br \/>\n}&#13;<br \/>\n&#13;<br \/>\ndef mock_llm_decide_next_step(observations: checklist[str], user_query: str) -&gt; dict:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    Mock LLM name standing in for the REASONING step of ReAct.&#13;<br \/>\n    In an actual system, that is an precise mannequin name that reads the complete&#13;<br \/>\n    Thought -&gt; Motion -&gt; Remark historical past and decides what occurs subsequent.&#13;<br \/>\n    Critically: this operate &#8212; not the calling loop under &#8212; decides which&#13;<br \/>\n    instrument to name and when to cease. There is no such thing as a &#8220;if question comprises X, name Y&#8221;&#13;<br \/>\n    department written anyplace in run_react_loop(). The choice is made contemporary,&#13;<br \/>\n    from accrued context, on each single iteration.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    if not observations:&#13;<br \/>\n        return {&#13;<br \/>\n            &#8220;thought&#8221;: &#8220;I have to search for the coverage earlier than I can reply.&#8221;,&#13;<br \/>\n            &#8220;motion&#8221;: &#8220;search_knowledge_base&#8221;,&#13;<br \/>\n            &#8220;action_input&#8221;: user_query,&#13;<br \/>\n        }&#13;<br \/>\n    last_observation = observations[-1]&#13;<br \/>\n    if &#8220;No matching data&#8221; in last_observation:&#13;<br \/>\n        # This department was by no means written by a human upfront &#8212; the mannequin&#13;<br \/>\n        # determined, based mostly on what it simply noticed, that escalation was wanted.&#13;<br \/>\n        return {&#13;<br \/>\n            &#8220;thought&#8221;: &#8220;The data base has no reply. I ought to escalate this.&#8221;,&#13;<br \/>\n            &#8220;motion&#8221;: &#8220;escalate_to_human&#8221;,&#13;<br \/>\n            &#8220;action_input&#8221;: &#8220;No KB match for: &#8221; + user_query,&#13;<br \/>\n        }&#13;<br \/>\n    return {&#13;<br \/>\n        &#8220;thought&#8221;: &#8220;I discovered the reply. Activity full.&#8221;,&#13;<br \/>\n        &#8220;motion&#8221;: &#8220;end&#8221;,&#13;<br \/>\n        &#8220;action_input&#8221;: last_observation,&#13;<br \/>\n    }&#13;<br \/>\n&#13;<br \/>\ndef run_react_loop(user_query: str, max_steps: int = 5) -&gt; str:&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    Thought -&gt; Motion -&gt; Remark, repeated till the mannequin itself decides&#13;<br \/>\n    to cease. Examine this straight towards run_orchestrated_pipeline() within the&#13;<br \/>\n    earlier part: there isn&#8217;t any ROUTE_MAP right here. There is no such thing as a human-written&#13;<br \/>\n    department saying &#8220;if X occurred, name Y.&#8221; Each choice about what occurs&#13;<br \/>\n    subsequent is made by the mannequin, at runtime, based mostly on what it has noticed to this point.&#13;<br \/>\n    &#8220;&#8221;&#8221;&#13;<br \/>\n    observations: checklist[str] = []&#13;<br \/>\n&#13;<br \/>\n    for step in vary(max_steps):&#13;<br \/>\n        choice = mock_llm_decide_next_step(observations, user_query)&#13;<br \/>\n        print(f&#8221;  Step {step + 1} &#8212; Thought: {choice[&#8216;thought&#8217;]}&#8221;)&#13;<br \/>\n&#13;<br \/>\n        if choice[&#8220;action&#8221;] == &#8220;end&#8221;:&#13;<br \/>\n            return f&#8221;Ultimate reply: {choice[&#8216;action_input&#8217;]}&#8221;&#13;<br \/>\n&#13;<br \/>\n        tool_fn = AVAILABLE_TOOLS.get(choice[&#8220;action&#8221;])&#13;<br \/>\n        if tool_fn is None:&#13;<br \/>\n            return f&#8221;Error: mannequin requested unknown instrument &#8216;{choice[&#8216;action&#8217;]}'&#8221;&#13;<br \/>\n&#13;<br \/>\n        remark = tool_fn(choice[&#8220;action_input&#8221;])&#13;<br \/>\n        print(f&#8221;  Step {step + 1} &#8212; Motion: {choice[&#8216;action&#8217;]}({choice[&#8216;action_input&#8217;]!r})&#8221;)&#13;<br \/>\n        print(f&#8221;  Step {step + 1} &#8212; Remark: {remark}n&#8221;)&#13;<br \/>\n        observations.append(remark)&#13;<br \/>\n&#13;<br \/>\n    return &#8220;Max steps reached with out decision.&#8221;&#13;<br \/>\n&#13;<br \/>\n&#13;<br \/>\nif __name__ == &#8220;__main__&#8221;:&#13;<br \/>\n    print(&#8220;=== Question A: answerable from the data base ===&#8221;)&#13;<br \/>\n    result_a = run_react_loop(&#8220;What&#8217;s the refund coverage?&#8221;)&#13;<br \/>\n    print(f&#8221;End result: {result_a}n&#8221;)&#13;<br \/>\n&#13;<br \/>\n    print(&#8220;=== Question B: not within the data base, ought to set off escalation ===&#8221;)&#13;<br \/>\n    result_b = run_react_loop(&#8220;Are you able to course of my worldwide tax refund in crypto?&#8221;)&#13;<br \/>\n    print(f&#8221;End result: {result_b}&#8221;)<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"urvanov-syntax-highlighter-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<p>1<\/p>\n<p>2<\/p>\n<p>3<\/p>\n<p>4<\/p>\n<p>5<\/p>\n<p>6<\/p>\n<p>7<\/p>\n<p>8<\/p>\n<p>9<\/p>\n<p>10<\/p>\n<p>11<\/p>\n<p>12<\/p>\n<p>13<\/p>\n<p>14<\/p>\n<p>15<\/p>\n<p>16<\/p>\n<p>17<\/p>\n<p>18<\/p>\n<p>19<\/p>\n<p>20<\/p>\n<p>21<\/p>\n<p>22<\/p>\n<p>23<\/p>\n<p>24<\/p>\n<p>25<\/p>\n<p>26<\/p>\n<p>27<\/p>\n<p>28<\/p>\n<p>29<\/p>\n<p>30<\/p>\n<p>31<\/p>\n<p>32<\/p>\n<p>33<\/p>\n<p>34<\/p>\n<p>35<\/p>\n<p>36<\/p>\n<p>37<\/p>\n<p>38<\/p>\n<p>39<\/p>\n<p>40<\/p>\n<p>41<\/p>\n<p>42<\/p>\n<p>43<\/p>\n<p>44<\/p>\n<p>45<\/p>\n<p>46<\/p>\n<p>47<\/p>\n<p>48<\/p>\n<p>49<\/p>\n<p>50<\/p>\n<p>51<\/p>\n<p>52<\/p>\n<p>53<\/p>\n<p>54<\/p>\n<p>55<\/p>\n<p>56<\/p>\n<p>57<\/p>\n<p>58<\/p>\n<p>59<\/p>\n<p>60<\/p>\n<p>61<\/p>\n<p>62<\/p>\n<p>63<\/p>\n<p>64<\/p>\n<p>65<\/p>\n<p>66<\/p>\n<p>67<\/p>\n<p>68<\/p>\n<p>69<\/p>\n<p>70<\/p>\n<p>71<\/p>\n<p>72<\/p>\n<p>73<\/p>\n<p>74<\/p>\n<p>75<\/p>\n<p>76<\/p>\n<p>77<\/p>\n<p>78<\/p>\n<p>79<\/p>\n<p>80<\/p>\n<p>81<\/p>\n<p>82<\/p>\n<p>83<\/p>\n<p>84<\/p>\n<p>85<\/p>\n<p>86<\/p>\n<p>87<\/p>\n<p>88<\/p>\n<p>89<\/p>\n<p>90<\/p>\n<p>91<\/p>\n<p>92<\/p>\n<p>93<\/p>\n<p>94<\/p>\n<\/div>\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-p\"># react_loop.py<\/span><\/p>\n<p><span class=\"crayon-p\"># Stipulations: none past Python&#8217;s commonplace library<\/span><\/p>\n<p><span class=\"crayon-p\"># Run: python react_loop.py<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">search_knowledge_base<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">question<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;A instrument the agent can name. Whether or not and when it will get referred to as will not be<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0determined right here &#8212; it is determined by the mannequin, at runtime.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">mock_kb<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;refund coverage&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;Refunds can be found inside 30 days of buy.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;transport time&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;Normal transport takes 5-7 enterprise days.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">key<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">worth <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">mock_kb<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">objects<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">key <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">question<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">decrease<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">worth<\/span><\/p>\n<p><span class=\"crayon-e\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;No matching data present in data base.&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">escalate_to_human<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">cause<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;A second instrument the agent can name &#8212; once more, the choice to name this<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0as an alternative of the search instrument is made by the mannequin, not by this code.&#8221;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;Escalated to human agent. Purpose: {cause}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-v\">AVAILABLE_TOOLS<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;search_knowledge_base&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">search_knowledge_base<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;escalate_to_human&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">escalate_to_human<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-sy\">}<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">mock_llm_decide_next_step<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">checklist<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">user_query<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">dict<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Mock LLM name standing in for the REASONING step of ReAct.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0In an actual system, that is an precise mannequin name that reads the complete<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Thought -&gt; Motion -&gt; Remark historical past and decides what occurs subsequent.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Critically: this operate &#8212; not the calling loop under &#8212; decides which<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0instrument to name and when to cease. There is no such thing as a &#8220;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">question <\/span><span class=\"crayon-i\">comprises<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">X<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">Y<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0department written anyplace in run_react_loop(). The choice is made contemporary,<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0from accrued context, on each single iteration.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">not<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;thought&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;I have to search for the coverage earlier than I can reply.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;motion&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;search_knowledge_base&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;action_input&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">user_query<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">last_observation<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">]<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;No matching data&#8221;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">last_observation<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># This department was by no means written by a human upfront &#8212; the mannequin<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-p\"># determined, based mostly on what it simply noticed, that escalation was wanted.<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;thought&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;The data base has no reply. I ought to escalate this.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;motion&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;escalate_to_human&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;action_input&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;No KB match for: &#8220;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">user_query<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">{<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;thought&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;I discovered the reply. Activity full.&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;motion&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;end&#8221;<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;action_input&#8221;<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">last_observation<\/span><span class=\"crayon-sy\">,<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-e\">def <\/span><span class=\"crayon-e\">run_react_loop<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">user_query<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">max_steps<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-t\">int<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">5<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-s\">&#8220;<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0Thought -&gt; Motion -&gt; Remark, repeated till the mannequin itself decides<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0to cease. Examine this straight towards run_orchestrated_pipeline() within the<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0earlier part: there isn&#8217;t any ROUTE_MAP right here. There is no such thing as a human-written<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0department saying &#8220;<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">X<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">occurred<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Y<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-s\">&#8221; Each choice about what occurs<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0subsequent is made by the mannequin, at runtime, based mostly on what it has noticed to this point.<\/span><\/p>\n<p><span class=\"crayon-s\">\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-s\">&#8220;&#8221;<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">checklist<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">str<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-sy\">]<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">step <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">vary<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">max_steps<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">choice<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">mock_llm_decide_next_step<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">user_query<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0Step {step + 1} &#8212; Thought: {choice[&#8216;thought&#8217;]}&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">choice<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-s\">&#8220;action&#8221;<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;end&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;Ultimate reply: {choice[&#8216;action_input&#8217;]}&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">tool_fn<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">AVAILABLE_TOOLS<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">get<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">choice<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-s\">&#8220;action&#8221;<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">tool_fn <\/span><span class=\"crayon-st\">is<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">None<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;Error: mannequin requested unknown instrument &#8216;{choice[&#8216;action&#8217;]}'&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">remark<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">tool_fn<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">choice<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-s\">&#8220;action_input&#8221;<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0Step {step + 1} &#8212; Motion: {choice[&#8216;action&#8217;]}({choice[&#8216;action_input&#8217;]!r})&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0Step {step + 1} &#8212; Remark: {remark}n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">observations<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">append<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">remark<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;Max steps reached with out decision.&#8221;<\/span><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-st\">if<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">__name__<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">==<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-s\">&#8220;__main__&#8221;<\/span><span class=\"crayon-o\">:<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;=== Question A: answerable from the data base ===&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">result_a<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">run_react_loop<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;What&#8217;s the refund coverage?&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;End result: {result_a}n&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;=== Question B: not within the data base, ought to set off escalation ===&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">result_b<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">run_react_loop<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;Are you able to course of my worldwide tax refund in crypto?&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">f<\/span><span class=\"crayon-s\">&#8220;End result: {result_b}&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Easy methods to run: python react_loop.py, no dependencies required.<\/p>\n<p>Output:<\/p>\n<div id=\"urvanov-syntax-highlighter-6a3d3462591c1654388046\" class=\"urvanov-syntax-highlighter-syntax crayon-theme-classic urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover disable-anim\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<p>\n=== Question A: answerable from the data base ===&#13;<br \/>\n  Step 1 &#8212; Thought: I have to search for the coverage earlier than I can reply.&#13;<br \/>\n  Step 1 &#8212; Motion: search_knowledge_base(&#8216;What&#8217;s the refund coverage?&#8217;)&#13;<br \/>\n  Step 1 &#8212; Remark: Refunds can be found inside 30 days of buy.&#13;<br \/>\n&#13;<br \/>\n  Step 2 &#8212; Thought: I discovered the reply. Activity full.&#13;<br \/>\nEnd result: Ultimate reply: Refunds can be found inside 30 days of buy.&#13;<br \/>\n&#13;<br \/>\n=== Question B: not within the data base, ought to set off escalation ===&#13;<br \/>\n  Step 1 &#8212; Thought: I have to search for the coverage earlier than I can reply.&#13;<br \/>\n  Step 1 &#8212; Motion: search_knowledge_base(&#8216;Are you able to course of my worldwide tax refund in crypto?&#8217;)&#13;<br \/>\n  Step 1 &#8212; Remark: No matching data present in data base.&#13;<br \/>\n&#13;<br \/>\n  Step 2 &#8212; Thought: The data base has no reply. I ought to escalate this.&#13;<br \/>\n  Step 2 &#8212; Motion: escalate_to_human(&#8216;No KB match for: Are you able to course of my worldwide tax refund in crypto?&#8217;)&#13;<br \/>\n  Step 2 &#8212; Remark: Escalated to human agent. Purpose: No KB match for: Are you able to course of my worldwide tax refund in crypto?&#13;<br \/>\n&#13;<br \/>\n  Step 3 &#8212; Thought: I discovered the reply. Activity full.&#13;<br \/>\nEnd result: Ultimate reply: Escalated to human agent. Purpose: No KB match for: Are you able to course of my worldwide tax refund in crypto?<\/p>\n<div class=\"urvanov-syntax-highlighter-main\" style=\"\">\n<div class=\"urvanov-syntax-highlighter-nums-content\" style=\"font-size: 12px !important; line-height: 15px !important;\">\n<p>1<\/p>\n<p>2<\/p>\n<p>3<\/p>\n<p>4<\/p>\n<p>5<\/p>\n<p>6<\/p>\n<p>7<\/p>\n<p>8<\/p>\n<p>9<\/p>\n<p>10<\/p>\n<p>11<\/p>\n<p>12<\/p>\n<p>13<\/p>\n<p>14<\/p>\n<p>15<\/p>\n<p>16<\/p>\n<p>17<\/p>\n<p>18<\/p>\n<p>19<\/p>\n<\/div>\n<div class=\"crayon-pre\" style=\"font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;\">\n<p><span class=\"crayon-o\">===<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">Question<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">A<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">answerable <\/span><span class=\"crayon-e\">from <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-v\">base<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">===<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Thought<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">want <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">look <\/span><span class=\"crayon-e\">up <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">coverage <\/span><span class=\"crayon-i\">earlier than<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">can <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Motion<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">search_knowledge_base<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;What&#8217;s the refund coverage?&#8217;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Remark<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Refunds <\/span><span class=\"crayon-e\">are <\/span><span class=\"crayon-e\">obtainable <\/span><span class=\"crayon-i\">inside<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">30<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">days <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-v\">buy<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Thought<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">discovered <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Activity <\/span><span class=\"crayon-v\">full<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-v\">End result<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">Ultimate<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Refunds <\/span><span class=\"crayon-e\">are <\/span><span class=\"crayon-e\">obtainable <\/span><span class=\"crayon-i\">inside<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">30<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">days <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-v\">buy<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-o\">===<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">Question<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">B<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">not<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-v\">base<\/span><span class=\"crayon-sy\">,<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">ought to <\/span><span class=\"crayon-e\">set off <\/span><span class=\"crayon-v\">escalation<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">===<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Thought<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">want <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">look <\/span><span class=\"crayon-e\">up <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-e\">coverage <\/span><span class=\"crayon-i\">earlier than<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">can <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Motion<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">search_knowledge_base<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;Are you able to course of my worldwide tax refund in crypto?&#8217;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Remark<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">matching <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-e\">discovered <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-v\">base<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Thought<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">The <\/span><span class=\"crayon-e\">data <\/span><span class=\"crayon-e\">base <\/span><span class=\"crayon-e\">has <\/span><span class=\"crayon-e\">no <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">ought to <\/span><span class=\"crayon-e\">escalate <\/span><span class=\"crayon-r\">this<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Motion<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">escalate_to_human<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8216;No KB match for: Are you able to course of my worldwide tax refund in crypto?&#8217;<\/span><span class=\"crayon-sy\">)<\/span><\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">2<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Remark<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Escalated <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">human <\/span><span class=\"crayon-v\">agent<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Purpose<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">KB <\/span><span class=\"crayon-e\">match <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Can <\/span><span class=\"crayon-e\">you <\/span><span class=\"crayon-e\">course of <\/span><span class=\"crayon-e\">my <\/span><span class=\"crayon-e\">worldwide <\/span><span class=\"crayon-e\">tax <\/span><span class=\"crayon-e\">refund <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">crypto<\/span><span class=\"crayon-sy\">?<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">Step<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-cn\">3<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Thought<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-i\">I<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">discovered <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Activity <\/span><span class=\"crayon-v\">full<\/span><span class=\"crayon-sy\">.<\/span><\/p>\n<p><span class=\"crayon-v\">End result<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-m\">Ultimate<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">reply<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Escalated <\/span><span class=\"crayon-st\">to<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">human <\/span><span class=\"crayon-v\">agent<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">Purpose<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">No <\/span><span class=\"crayon-e\">KB <\/span><span class=\"crayon-e\">match <\/span><span class=\"crayon-st\">for<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-e\">Can <\/span><span class=\"crayon-e\">you <\/span><span class=\"crayon-e\">course of <\/span><span class=\"crayon-e\">my <\/span><span class=\"crayon-e\">worldwide <\/span><span class=\"crayon-e\">tax <\/span><span class=\"crayon-e\">refund <\/span><span class=\"crayon-st\">in<\/span><span class=\"crayon-h\"> <\/span><span class=\"crayon-v\">crypto<\/span><span class=\"crayon-sy\">?<\/span><\/p>\n<\/div><\/div><\/div>\n<p>Take a look at what differs between the 2 runs: question A completed in two steps, question B took three, and question B took an motion \u2014 escalation \u2014 that was by no means hardcoded as \u201cwhat occurs when refund queries point out crypto.\u201d The identical loop, the identical code, produced two genuinely totally different step counts and sequences as a result of the mannequin determined the trail at runtime based mostly on what it noticed. That\u2019s the precise, concrete which means of \u201cno predefined code path\u201d \u2014 not a slogan, however a measurable distinction in what number of steps had been run and what they had been.<\/p>\n<p>Manufacturing implementations of this sample usually wrap the accrued thought\/remark historical past in a \u201cscratchpad\u201d and summarize instrument outputs earlier than feeding them again into the loop, since dumping uncooked error logs or giant API responses again into context tends to confuse the subsequent reasoning step fairly than assist it.<\/p>\n<h2>Autonomous Multi-Agent Techniques<\/h2>\n<p>The far finish of the spectrum builds straight on the ReAct loop above, simply nested. In a multi-agent setup, an orchestrator runs its personal ReAct loop, the place a few of its obtainable \u201cactions\u201d are calls to different brokers, every of which runs its personal full ReAct loop inside. The orchestrator causes about what to delegate, delegates it, observes the outcome, and continues \u2014 precisely just like the single-agent loop within the earlier part, besides a few of its \u201cinstruments\u201d are total brokers fairly than easy capabilities.<\/p>\n<p>Image the AVAILABLE_TOOLS dictionary from the earlier instance, besides as an alternative of search_knowledge_base and escalate_to_human, the entries are research_agent, finance_agent, and coding_agent \u2014 and calling one among them doesn\u2019t return a easy string; it kicks off that sub-agent\u2019s personal unbiased Thought-Motion-Remark loop, which could run for a number of steps earlier than returning something to the orchestrator. No one wrote down upfront which sub-agent will get referred to as, in what order, or what number of occasions any of them run.<\/p>\n<p>Google Cloud\u2019s documentation labels probably the most excessive model of this the \u201cswarm\u201d sample \u2014 a collaborative crew of brokers with no central orchestrator in any respect, able to producing exceptionally high-quality, inventive options exactly as a result of nothing is constraining how they work together. That very same lack of construction can also be the danger: with no human-designed sure on the interplay, a swarm can fall into unproductive loops or just fail to converge, and the price of working many brokers by way of many turns compounds rapidly.<\/p>\n<p>That is the purpose on the spectrum the place the predictability axis from the primary part swings hardest within the different path. A deterministic pipeline provides you an identical output construction each time, by building. A swarm of autonomous brokers provides you the flexibleness to deal with an issue no one anticipated, at the price of with the ability to predict, upfront, what it can do or how lengthy it can take to do it.<\/p>\n<h2>Why This Distinction Really Issues in Manufacturing<\/h2>\n<p>This isn\u2019t an educational distinction. It has a direct, measurable impact on what groups truly ship. Regardless of the amount of hype round autonomous brokers, AI workflows \u2014 not totally autonomous brokers \u2014 received the manufacturing battle in 2025: workflows stay the dominant sample behind profitable generative AI deployments, whereas totally autonomous multi-agent techniques are nonetheless largely exploratory exterior of slim domains.<\/p>\n<p>The explanation maps straight again to the predictability axis from the beginning of this text. Agentic techniques are non-deterministic by nature; an identical inputs can produce totally different outputs throughout separate runs, which is a critical legal responsibility in regulated, auditable, or in any other case high-stakes processes. If a course of have to be explainable step-by-step to a compliance crew or a regulator, that\u2019s not agent territory by default; it wants guardrails and human-in-the-loop checkpoints layered on prime earlier than it may be trusted with actual penalties.<\/p>\n<p>The sample that\u2019s truly rising in mature techniques is hybrid, not a pick-one choice. A better-level agent units objectives and orchestrates the general process, whereas crucial, well-understood computations nonetheless run inside deterministic modules {that a} human has totally specified. A medical diagnostics system, for instance, may use an agent to interpret ambiguous signs and resolve which checks to order \u2014 real autonomy, as a result of the appropriate sequence of checks isn\u2019t knowable upfront \u2014 whereas every take a look at itself runs by way of a validated, deterministic pipeline, as a result of that a part of the issue has a recognized right path and no cause to introduce variability into it.<\/p>\n<h2>Conclusion<\/h2>\n<p>\u201cAgentic workflow\u201d and \u201cautonomous agent\u201d describe two ends of 1 spectrum, not two competing applied sciences, and the 4 levels walked by way of right here \u2014 deterministic, orchestrated, reactive, and autonomous multi-agent \u2014 aren\u2019t a rating from worse to raised. They\u2019re totally different solutions to the identical query: who decides what occurs subsequent, and was that call made by a human writing code upfront, or by a mannequin reasoning at runtime?<\/p>\n<p>Deterministic workflows offer you auditability and repeatability by building; the identical enter takes the identical path each time, full cease. Reactive and multi-agent techniques hand over that assure in change for the flexibility to deal with issues whose form genuinely can&#8217;t be anticipated forward of time. Neither property is free, and neither structure is right by default.<\/p>\n<p>The techniques that maintain up properly in manufacturing don\u2019t choose one excessive of this spectrum and apply it all over the place. They place every bit of the issue on the level on the spectrum that piece truly requires \u2014 a set construction wherever a recognized right path exists and repeatability issues, with actual autonomy reserved for the elements of the issue that haven&#8217;t any predefined right path to comply with within the first place.<\/p>\n<\/p><\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/machinelearningmastery.com\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>On this article, you&#8217;ll discover ways to distinguish agentic workflows from autonomous brokers by specializing in who owns management circulation \u2014 a human writing code upfront, or a mannequin reasoning at runtime. Matters we are going to cowl embody: Why the actual axis separating these techniques is predictability versus autonomy, not whether or not an [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1483,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","fifu_image_alt":"","jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[],"jnews_override_bookmark_settings":[],"jnews_social_meta":[],"jnews_override_counter":[],"footnotes":""},"categories":[7],"tags":[457,15,291,1941,1246,107],"class_list":["post-1481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-science-mlops","tag-agent","tag-agentic","tag-autonomous","tag-difference","tag-whats","tag-workflow"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24\" \/>\n<meta property=\"og:description\" content=\"On this article, you&#8217;ll discover ways to distinguish agentic workflows from autonomous brokers by specializing in who owns management circulation \u2014 a human writing code upfront, or a mannequin reasoning at runtime. Matters we are going to cowl embody: Why the actual axis separating these techniques is predictability versus autonomy, not whether or not an [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/\" \/>\n<meta property=\"og:site_name\" content=\"Future News 24\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-25T12:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-25T14:59:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\" \/><meta property=\"og:image\" content=\"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\" \/>\n<meta name=\"author\" content=\"Future News 24\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Future News 24\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/\"},\"author\":{\"name\":\"Future News 24\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/person\\\/cecad1bde21cfc357cf70128144d6c83\"},\"headline\":\"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction?\",\"datePublished\":\"2026-06-25T12:00:00+00:00\",\"dateModified\":\"2026-06-25T14:59:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/\"},\"wordCount\":5402,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/machinelearningmastery.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\",\"keywords\":[\"Agent\",\"Agentic\",\"Autonomous\",\"Difference\",\"Whats\",\"Workflow\"],\"articleSection\":[\"Data Science &amp; MLOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/\",\"name\":\"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/machinelearningmastery.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\",\"datePublished\":\"2026-06-25T12:00:00+00:00\",\"dateModified\":\"2026-06-25T14:59:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#primaryimage\",\"url\":\"https:\\\/\\\/machinelearningmastery.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\",\"contentUrl\":\"https:\\\/\\\/machinelearningmastery.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/2026\\\/06\\\/25\\\/agentic-workflow-vs-autonomous-agent-whats-the-difference\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/futurenews24.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#website\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/\",\"name\":\"Future News 24\",\"description\":\"The Smart Hub for AI and Next-Gen Innovation\",\"publisher\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/futurenews24.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#organization\",\"name\":\"Future News 24\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/futurenews24.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/fn24-favicon.png\",\"contentUrl\":\"https:\\\/\\\/futurenews24.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/fn24-favicon.png\",\"width\":250,\"height\":250,\"caption\":\"Future News 24\"},\"image\":{\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/futurenews24.com\\\/#\\\/schema\\\/person\\\/cecad1bde21cfc357cf70128144d6c83\",\"name\":\"Future News 24\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g\",\"caption\":\"Future News 24\"},\"sameAs\":[\"https:\\\/\\\/futurenews24.com\"],\"url\":\"https:\\\/\\\/futurenews24.com\\\/index.php\\\/author\\\/mridulpahuja20\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/","og_locale":"en_US","og_type":"article","og_title":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24","og_description":"On this article, you&#8217;ll discover ways to distinguish agentic workflows from autonomous brokers by specializing in who owns management circulation \u2014 a human writing code upfront, or a mannequin reasoning at runtime. Matters we are going to cowl embody: Why the actual axis separating these techniques is predictability versus autonomy, not whether or not an [&hellip;]","og_url":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/","og_site_name":"Future News 24","article_published_time":"2026-06-25T12:00:00+00:00","article_modified_time":"2026-06-25T14:59:41+00:00","og_image":[{"url":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","type":"","width":"","height":""},{"url":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","type":"","width":"","height":""}],"author":"Future News 24","twitter_card":"summary_large_image","twitter_image":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","twitter_misc":{"Written by":"Future News 24","Est. reading time":"27 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#article","isPartOf":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/"},"author":{"name":"Future News 24","@id":"https:\/\/futurenews24.com\/#\/schema\/person\/cecad1bde21cfc357cf70128144d6c83"},"headline":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction?","datePublished":"2026-06-25T12:00:00+00:00","dateModified":"2026-06-25T14:59:41+00:00","mainEntityOfPage":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/"},"wordCount":5402,"commentCount":0,"publisher":{"@id":"https:\/\/futurenews24.com\/#organization"},"image":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#primaryimage"},"thumbnailUrl":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","keywords":["Agent","Agentic","Autonomous","Difference","Whats","Workflow"],"articleSection":["Data Science &amp; MLOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/","url":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/","name":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction? - Future News 24","isPartOf":{"@id":"https:\/\/futurenews24.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#primaryimage"},"image":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#primaryimage"},"thumbnailUrl":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","datePublished":"2026-06-25T12:00:00+00:00","dateModified":"2026-06-25T14:59:41+00:00","breadcrumb":{"@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#primaryimage","url":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png","contentUrl":"https:\/\/machinelearningmastery.com\/wp-content\/uploads\/2026\/06\/MLM-Shittu-Agentic-Workflow-vs.-Autonomous-Agent-1024x561.png"},{"@type":"BreadcrumbList","@id":"https:\/\/futurenews24.com\/index.php\/2026\/06\/25\/agentic-workflow-vs-autonomous-agent-whats-the-difference\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/futurenews24.com\/"},{"@type":"ListItem","position":2,"name":"Agentic Workflow vs. Autonomous Agent: What\u2019s the Distinction?"}]},{"@type":"WebSite","@id":"https:\/\/futurenews24.com\/#website","url":"https:\/\/futurenews24.com\/","name":"Future News 24","description":"The Smart Hub for AI and Next-Gen Innovation","publisher":{"@id":"https:\/\/futurenews24.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/futurenews24.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/futurenews24.com\/#organization","name":"Future News 24","url":"https:\/\/futurenews24.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/futurenews24.com\/#\/schema\/logo\/image\/","url":"https:\/\/futurenews24.com\/wp-content\/uploads\/2026\/06\/fn24-favicon.png","contentUrl":"https:\/\/futurenews24.com\/wp-content\/uploads\/2026\/06\/fn24-favicon.png","width":250,"height":250,"caption":"Future News 24"},"image":{"@id":"https:\/\/futurenews24.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/futurenews24.com\/#\/schema\/person\/cecad1bde21cfc357cf70128144d6c83","name":"Future News 24","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d57f07142d73cb5503ab2446ea7bc9ef3d0a5ba378d64a6157692311e42bf097?s=96&d=mm&r=g","caption":"Future News 24"},"sameAs":["https:\/\/futurenews24.com"],"url":"https:\/\/futurenews24.com\/index.php\/author\/mridulpahuja20\/"}]}},"_links":{"self":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/1481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/comments?post=1481"}],"version-history":[{"count":1,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/1481\/revisions"}],"predecessor-version":[{"id":1482,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/posts\/1481\/revisions\/1482"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/media\/1483"}],"wp:attachment":[{"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/media?parent=1481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/categories?post=1481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/futurenews24.com\/index.php\/wp-json\/wp\/v2\/tags?post=1481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}