🏭 第二課:廠長的 SOP 進化史
【情境代入】你是一座全自動化處理廠的「廠長」。
你撰寫了名為 Action 的「SOP (程式碼)」,用來指揮廠內的「機器人」運作。
在開始詳細的課程前,我們先來看看「原本的程式碼」跟「升級後的程式碼」長什麼樣子。
掌握了這個進化框架,後面的細節你就能秒懂!
# 1. 拿取最新包裹
messages = body.get("messages", [])
last_message = messages[-1]
# 2. ❌ 沒過濾氣泡紙,直接算字數
msg_len = len(last_message.get("content", ""))
# 3. ❌ 直接奇異筆塗鴉,客戶沒看到進度
last_message["content"] += f"\n長度:{msg_len}"
return body
import re, tiktoken
async def action(self, body: dict, __event_emitter__):
last_message = body.get("messages", [])[-1]
# ✅ 1. 啟用廣播:UI 顯示 Loading
await __event_emitter__({"type": "status", "data": {"done": False}})
# ✅ 2. 拆解氣泡紙,精準算 Token
display_txt = re.sub(r'<think>.*?</think>', '', ...)
tokens = len(tiktoken...encode(display_txt))
# ✅ 3. 附加結果,並廣播完成
last_message["content"] += f"\nTokens:{tokens}"
await __event_emitter__({"type": "status", "data": {"done": True}})
return body
起草一份 SOP
廠長在筆記本上寫下這三個字,表示接下來要寫一段標準作業程序供機器人執行。
不卡單的聰明員工
廠長賦予機器人多工能力,如果這個任務要等很久,機器人會先去處理下一件。
檢查貨車與拿取包裹
工人查看貨車有沒有包裹。沒有的話,觸發 return 緊急下班鍵,直接把空車退回碼頭,絕不浪費時間!
工廠災難現場:IndentationError
新手常不小心混入全形空白。對 Python 機器人來說,縮排就像工廠的地板,如果地板不平整(縮排不一致),機器人會直接摔倒當機!
# 防呆機制:沒包裹就按下緊急下班鍵 (return)
if not messages:
return body
last_message = messages[-1]
傳統磅秤與奇異筆塗鴉
把包裹內容放在基礎磅秤 len() 上算字數,然後直接拿奇異筆 +=,把重量硬生生塗寫在客人的包裹外箱上。
last_message["content"] += f"\n長度是 {message_len}"
為了解決客訴,廠長引進了新機台與廣播系統,並且架設了除錯監視器:
啟用工廠廣播系統
__event_emitter__ 就像是對外大廳的廣播器。發送 {"done": False} 就像是廣播「請稍候」,前端畫面會開始轉圈圈,提升 UX 體驗!
"type": "status",
"data": {"description": "處理中...", "done": False}
})
監視器 vs 廣播器
新手在除錯時最常問:「我要怎麼知道發生了什麼錯誤?」
📺 廠長監視器 print(): 印出的字只會顯示在後台 Console,客人看不到。這是廠長自己抓蟲用的神器!
📻 大廳廣播 __event_emitter__: 對著前台大廳發送,客人的視窗會彈出通知或轉圈圈。
print(f"目前算出來的 Token 是: {tokens}")