Hallucination
什麼是 AI 幻覺不知道要求它說明依據把問題改成「可驗證」的形式列出不確定性評級提供實測方法AI 產生了看起來合理、語氣很肯定,但其實不正確、沒有根據,或與事實不一致的內容,更精確來說,生成式 AI 在缺乏可靠依據、理解錯誤、推理失準或資料不足的情況下,產生錯誤、虛構、誤導性或無法驗證的輸出
例如
編出不存在的論文、書籍、網址
說某個 API 有某個參數,但其實文件裡沒有
把兩個相似概念混在一起
明明不知道,卻用很肯定的語氣回答
對你的程式碼做出錯誤判斷
引用不存在的法律、規格、版本資訊
把「可能」講成「一定」
但現在的 AI 沒有聰明到可以「故意說謊」,事實上是模型在「預測下一段最像答案的文字」時,產生了形式上像答案、實質上卻錯誤的結果,大型語言模型的核心能力是根據上下文,預測接下來最合理的文字,但「最合理的文字」不等於「最真實的文字」,這就像一個人很會接話、很會寫文章、很會模仿專業語氣,但他其實他,一定真的知道答案
所以本質上它比較像是看過大量文字後,學會「什麼樣的問題通常會接什麼樣的回答」,當它不知道答案時,可能會根據語言模式補出一個「看起來合理」的答案
例如你問某某冷 ...
Bookingtime Job 跨日誤判
背景說明BookingTime 的用途正流程(給點)如何設定 BookingTime稽核器如何驗證 BookingTime原因HasDelayBookingTime 判斷邏輯各情境演練案件
.pr-flow{--pr-ink:#493b2d;--pr-muted:#71624e;--pr-line:#e4d8bf;--pr-panel:#fbf7ef;--pr-accent:#57753f;--pr-bear:#a06a41;--pr-diagram-bg:#fffdf7;--pr-danger:#bb765f;--pr-danger-bg:#f9e9e3;color:var(--pr-ink);line-height:1.9;overflow-wrap:anywhere}
.pr-flow *{box-sizing:border-box}
.pr-flow h2,.pr-flow h3,.pr-flow h4{color:var(--pr-ink)}
.pr-flow h2{margin-top:2.4em;margin-bottom:1em;font-size:1.28em}
...
Bookingtime Job 本身的記憶體累積問題
案件現況定位與觸發條件記憶體累積來源討論過的方案與優缺點為什麼「滿 1000 筆再建立自己」不夠為什麼 Dispatched 不會自然變簡單Next Token 的能力與限制新舊流程隔離設計單頁資料合約查詢與派送順序同會員分組與順序:啟用前待確認重複派送、漏讀與失敗恢復測試資料
.pr-flow{--pr-ink:#493b2d;--pr-muted:#71624e;--pr-line:#e4d8bf;--pr-panel:#fbf7ef;--pr-bear:#a06a41;--pr-diagram-bg:#fffdf7;--pr-danger:#bb765f;--pr-danger-bg:#f9e9e3;color:var(--pr-ink);line-height:1.9;overflow-wrap:anywhere}
.pr-flow *{box-sizing:border-box}
.pr-lead{position:relative;overflow:hidden;padding:28px 72px 28px 26px;border-radius:24px;backgro ...
凌晨0101的記憶體尖峰問題
問題現象與根因BookingTime 從哪裡來CronJob 與完整派工三桶分配實作雜湊與整數安全Auditor 相容性三桶為何可能不如預期
.pr-flow{--pr-ink:#493b2d;--pr-muted:#71624e;--pr-line:#e4d8bf;--pr-panel:#fbf7ef;--pr-accent:#57753f;--pr-bear:#a06a41;--pr-diagram-bg:#fffdf7;--pr-danger:#bb765f;--pr-danger-bg:#f9e9e3;color:var(--pr-ink);line-height:1.9;overflow-wrap:anywhere}
.pr-flow *{box-sizing:border-box}
.pr-flow h2,.pr-flow h3,.pr-flow h4{color:var(--pr-ink)}
.pr-flow h2{margin-top:2.4em;margin-bottom:1em;font-size:1.28em}
.pr-flow h3{margin-top:2 ...
回饋活動 - 為何用 DynamoDB
架構選用 Ddb 有哪些好處如果用其他 solution 呢為什麼 高併發 key-based 就適合 ddb?其他活動類型呢DynamoDB 空值注意事項
.pr-flow{--pr-ink:#493b2d;--pr-muted:#71624e;--pr-line:#e4d8bf;--pr-panel:#fbf7ef;--pr-accent:#57753f;--pr-bear:#a06a41;--pr-diagram-bg:#fffdf7;color:var(--pr-ink);line-height:1.9;overflow-wrap:anywhere}
.pr-flow *{box-sizing:border-box}
.pr-flow h2,.pr-flow h3,.pr-flow h4{color:var(--pr-ink)}
.pr-flow h3{margin-top:2.5em;margin-bottom:1.1em;font-size:1.15em;border-bottom:1px dashed var(--pr-line);padding-bottom:12p ...
pay api 1 - 設計現狀
架構Provider 檢查是做什麼的虛擬購物車建立付款 context付款信用卡定期購怎麼建單貨到付款定期購怎麼建單建單差異RegularOrderTracing
.rpa{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:#1a1a2e;background:#f0f2f5;padding:22px;border-radius:12px;font-size:16px;line-height:1.8;overflow:hidden}
.rpa *{box-sizing:border-box}
#article-container .rpa p{color:#4a5568;margin:10px 0;line-height:1.85}
#article-container .rpa code{font-family:"Fira Code",Consolas,monospace;background:#f1f3f5;color:#d63384;padding:1px ...
migration-process
Migration Process 架構設計Manage 如何續跑一次 migration 怎麼跑怎麼記住搬到哪裡失敗與修復細節支援補同步舊資料刪除了怎麼辦是相容不是複製
.rma{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:#1a1a2e;background:#f0f2f5;padding:22px;border-radius:12px;font-size:16px;line-height:1.8;overflow:hidden}
.rma *{box-sizing:border-box}
#article-container .rma p{color:#4a5568;margin:10px 0;line-height:1.85}
#article-container .rma code{font-family:"Fira Code",Consolas,monospace;background:#f1f3f5;color:#d63384;padding ...
CalculateShoppingCartCheckoutPayShippingProcessor
01.處理什麼問題02.API 與流程定位03.DisplayPayTypeList04.CalculateCheckoutPayTypeAsync05.cheapestFeeShippingProfile06.預選與 canDefaultSelectedCheapest07.DisplayShippingTypeList
#article-container .cps-paper{--ink:#1f2430;--sub:#5b6472;--line:#ece7dc;--card:#fff;background:#fbf9f4;color:var(--ink);border:1px solid var(--line);border-radius:20px;padding:24px;font-family:"Segoe UI","Microsoft JhengHei",sans-serif;line-height:1.85;}
#article-container .cps-paper *{box-sizing:border-box;}
#article-container .cps-p ...
定期購通知 Queue 設計
需求把「通知」記錄下來雙層 Queue不同通知要拆成不同 Job重複發送問題
.rqa{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:#1a1a2e;background:#f0f2f5;padding:22px;border-radius:12px;font-size:16px;line-height:1.8;overflow:hidden}
.rqa *{box-sizing:border-box}
#article-container .rqa p{color:#4a5568;margin:10px 0;line-height:1.85}
#article-container .rqa h2{font-size:22px;color:#1a1a2e;margin:34px 0 16px;padding:0 0 9px;border-bottom:2px solid #e2e8f0}
#article-container .rqa h2:before,# ...
in
測試情境直接使用 DateTime.Now注入 TimeProvider一次驗證三種情境要測試什麼規則?假設通知發送失敗後,必須等待 至少 5 分鐘,才可以重新發送。
我們希望驗證以下三種情境:
上次失敗時間
現在時間
經過多久
預期結果
10:00:00
10:04:59
4 分 59 秒
不可重試
10:00:00
10:05:00
剛好 5 分鐘
可以重試
10:00:00
10:05:01
5 分 1 秒
可以重試
要驗證這條規則,測試需要控制兩個時間:
上次失敗時間:可以直接建立測試資料指定。
現在時間:如果程式直接使用 DateTime.Now,就會讀取電腦當下的時間,無法由測試直接指定。
為什麼「現在時間」需要可以控制?測試設定資料後,到實際呼叫方法進行判斷,中間仍然會經過時間。
12345測試設定資料 ↓ 時間持續前進呼叫實際方法 ↓ 時間持續前進方法讀取 DateTime.Now
如果測試的是「已經過了 10 分鐘」,這點時間差通常不影響結果。
但如果測試的是「還差 1 毫秒才滿 5 分鐘」,判斷結果就可能因為執行速度而改變。 ...





