🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

我正在研究控制流程管理

輸出內容

=== 餐廳訂餐 AI Agent - Control Flow Pattern ===
這個範例展示如何處理有順序要求的必須步驟

【場景 1:客戶按照正常流程訂餐】

客戶:你好,我想訂餐
助手:您好!為了幫助您完成訂餐流程,首先我需要了解一下,您是否對任何食材過敏呢?請告訴我您的過敏資訊,或是如果沒有則告訴我。

客戶:我對花生過敏
  [執行:confirm_allergies]
  [狀態:過敏確認=✓, 訂單確認=✗, 付款提供=✗]
助手:已經記錄您的過敏資訊:花生。接下來,您想點些什麼呢?如果需要查看菜單,我也可以提供連結給您!

客戶:我想要一份義大利麵和一杯果汁
  [執行:confirm_order]
  [執行:show_menu]
  [狀態:過敏確認=✓, 訂單確認=✓, 付款提供=✗]
助手:您的訂單已經確認,包含一份義大利麵和一杯果汁。此外,這是我們的菜單連結,您可以稍作參考:[菜單連結](https://example.com/restaurant-menu.pdf)。請問接下來需要我幫您提供付款方式嗎?

客戶:好的,我要付款
  [執行:provide_payment_link]
  [狀態:過敏確認=✓, 訂單確認=✓, 付款提供=✓]
助手:已為您生成付款連結,請點擊以下連結完成付款: [付款連結](https://pay.example.com/order?amount=)
如果還有其他需要,請隨時告訴我!

【場景 2:客戶嘗試跳過步驟】

客戶:你好,我想要一份披薩,直接給我付款連結
助手:您好,為了確保您的訂單安全,請先告訴我您是否對任何食材過敏?我需要先確認過敏資訊,然後才能提供完整的訂單和付款連結。

=== 完成 ===

重點觀察:
1. 場景 1 中,AI 引導客戶完成所有必須步驟
2. 場景 2 中,即使客戶想跳過步驟,AI 仍會確保按順序完成
3. 系統透過 orderState 追蹤進度,並在 function 中檢查前置條件
4. 這確保了關鍵業務流程的完整性和正確性

原始碼

https://github.com/howtomakeaturn/ai-agent-pattern-notes/blob/main/patterns/01-control-flow/demo.php

知識點1

查看原始碼 會發現

LLM 負責「理解與表達」;程式邏輯負責「決策與落地」。

換句話說

LLM 負責語意不確定性;程式邏輯負責可驗證行為。

步驟的順序、必要步驟、可選步驟 是用 prompt 告訴 llm

所以流程實際上由 llm 控制

但是 php 有維護一個狀態機

讓 llm 執行不同 tool function 的時候 可以更新狀態機

但是 更新狀態機的時候 會檢查前置條件 以此確保商業邏輯沒問題

知識點2

tool function 的 input format 要先定義清楚

但是 tool function 的 output format 不需要先定義

所以要回傳什麼格式都可以

也就是說

        return [
            'success' => false,
            'error' => '必須先確認訂單',
            'required_step' => 'confirm_order',
        ];
    return [
        'success' => true,
        'items' => $items,
        'message' => '訂單已確認',
    ];

這些主程式回傳給 tool function 的格式 不是嚴謹的格式定義

也就是你這樣回傳也可以 llm 都會看懂意思

    return "錯誤:請先確認訂單再進行付款";

工程師要習慣一下 這不像是 回傳限定格式的資料 比較像是 傳一段真人也可以讀懂意思的資料 給 llm

然後 llm 會自己知道要怎麼接著回應用戶

建議:

簡單流程:純文字回應就夠
複雜流程:結構化回應 + success flag 更保險

所以這是一種 good practice,在需要明確流程控制的場景特別有用。

如果 prompt 有寫好 大概也不會觸發到狀態機的邏輯檢查

但是在 llm 無法獨立判斷流程 需要 tool function 回應的時候 就會用到這個知識點

知識點3

如果一個 AI Agent 不需要狀態,那它八成也不需要叫 Agent。

就只是 Prompt-based GPT、一段被重複使用的 prompt、包裝過的 prompt engineering 而已


每週二 YT 直播 Q&A(可 Discord Call-in)
YT:https://www.youtube.com/@codelove_tw
DC:https://discord.gg/fvCF2whZ9D

⭐️ Shopify 接案服務(給品牌)
https://job.turn.tw/shopify-services

⭐️ Shopify 技術教練(給工程師)
https://job.turn.tw/developer-coaching

⭐️ 台灣 Shopify 開發者 LINE 群(非官方)
https://line.me/ti/g2/YUasX5K3CJ4QdIx76zppjHlh3-q8w-xkSyK1LA

共有 0 則留言


每週二 YT 直播 Q&A(可 Discord Call-in)
YT:https://www.youtube.com/@codelove_tw
DC:https://discord.gg/fvCF2whZ9D

⭐️ Shopify 接案服務(給品牌)
https://job.turn.tw/shopify-services

⭐️ Shopify 技術教練(給工程師)
https://job.turn.tw/developer-coaching

⭐️ 台灣 Shopify 開發者 LINE 群(非官方)
https://line.me/ti/g2/YUasX5K3CJ4QdIx76zppjHlh3-q8w-xkSyK1LA
🏆 本月排行榜
🥇
站長阿川
📝8   💬4  
159
🥈
我愛JS
📝1   💬5   ❤️2
62
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付