← Financial Cloud Cloud Cloud Club · 建構文章

極點宏觀|Financial Cloud Cloud · 建構文章

使用 Kiro 建置:他加祿語 學習 App 中可審查的獨特額外例句工作坊

系列: Kiro 工作坊

文章: 06

文章
Kiro 工作坊
01 使用 Kiro 建置:他加祿語學習 App 的提示優先產品設計工作坊
Kiro 工作坊
02 使用 Kiro 建置:他加祿語 學習 App 的教育優先開發技巧工作坊
Kiro 工作坊
03 使用 Kiro 建置:他加祿語 學習 App 的深入開發流程工作坊
Kiro 工作坊
04 使用 Kiro 建置:將 他加祿語 學習 App 在地化為中文變體工作坊
Kiro 工作坊
05 使用 Kiro 建置:他加祿語 卡片的文法與發音補強管線工作坊
Kiro 工作坊
06 使用 Kiro 建置:他加祿語 學習 App 中可審查的獨特額外例句工作坊
Kiro 工作坊
07 與 Kiro 同行:晶圓廠工程健康度 Hook 工作坊
Kiro 工作坊
08 與 Kiro 同行:蝕刻製程視窗風險測試自動化工作坊
Kiro 工作坊
09 與 Kiro 同行:黃光微影漂移風險開發工作坊
Kiro 工作坊
10 工程團隊入門 — 日常工廠值班使用 fab spc drift sync portal
Kiro 工作坊
11 工程團隊附錄 — fab spc drift sync portal 的日常工廠值班使用
Kiro 工作坊
12 Kiro:規格驅動工廠軟體的現場工程工作坊
Kiro 工作坊
13 Kiro:實作 Lab — 從零建置具型別的 Factory Risk Portal
Kiro 工作坊
14 Kiro:工程開發人員的提示、程式碼和型別標準手冊
Kiro 工作坊
15 Kiro:為什麼強 React 提示可以防止型別宣告錯誤啟動
Kiro 工作坊
17 與 Kiro 一起建構:建立工廠自動化入口網站 React UI
Kiro 工作坊
18 與 Kiro 一同建構:打造工廠自動化入口網站背後的自動化分析引擎
Kiro 工作坊
19 與 Kiro 一起實作:將 AI 工廠自動化輔助程式新增至工廠自動化入口網站
Kiro 工作坊
21 Kiro:2 小時專業開發人員工作坊指南
Kiro 工作坊
22 Kiro:從零建置 Fab SPC Drift Synchronization Portal
Kiro 工作坊
23 Kiro:提示詞庫與深度程式碼說明附錄
Kiro 工作坊
30 與 Kiro 一同建構:建立工廠自動化入口網站 UI
Kiro 工作坊
31 與 Kiro 一同建構:打造工廠自動化入口網站背後的自動化分析引擎
Kiro 工作坊
32 與 Kiro 一起實作:為工廠自動化入口網站增添 AI 工廠自動化助理
Kiro 工作坊
33 與 Kiro 一起開發:重建 CME Direct 風格的量化損益排行榜 UI
Kiro 工作坊
34 與 Kiro 一起開發:重建損益排行榜背後的量化分析引擎
Kiro 工作坊
35 與 Kiro 一起建構:適用於量化排行榜的 AWS AI 驅動交易台助理
Kiro 工作坊
36 單頁交易平台 SOP
Kiro 工作坊
AgentCore
A1 使用 AgentCore 與 Strands 建構:Gateway MCP 工具織網開發者工作坊
AgentCore
A2 使用 AgentCore 與 Strands 建構:受治理的多 Agent 風險系統開發者工作坊
AgentCore
A3 使用 AgentCore 與 Strands 建構:執行期主權風險代理人開發者工作坊
AgentCore
模擬考場
E1 用 Vibe Coding 打造多語言 AWS 證照模擬試題上線系統
模擬考場
E2 利用 Vibe Coding 開發技巧打造 AWS 證照模擬練習室
模擬考場
E3 打造靜態 AWS 模擬考場背後的練習引擎
模擬考場
Amazon Q
Q1 Amazon Q:ACM 憑證自動更新的CloudShell優先開發人員工作坊
Amazon Q
Tagalog 練習室
T1 為 AWS Manila Community Day 打造 Tagalog 學習 App:提示詞優先的產品設計
Tagalog 練習室
T2 為 AWS Manila Community Day 打造 Tagalog 學習 App,採用教育優先的開發提示
Tagalog 練習室
T3 為 AWS Manila Community Day 打造 Tagalog 學習 App 的開發流程深度解析
Tagalog 練習室
T4 將 Tagalog 學習 App 在 AWS Manila Community Day 情境中在地化為中文版本
Tagalog 練習室
T5 為 AWS Manila Community Day 打造 Tagalog 卡片打造文法與發音補強流程
Tagalog 練習室
T6 為 AWS Manila Community Day 打造 Tagalog 學習 App 的 Extra Examples 更獨特且可審閱
Tagalog 練習室
路線圖
R1 企業級 Data Analytics Roadmap 一百個深度情境題
路線圖
R2 前端開發路線圖:真實企業場景
路線圖
香港 Community Day
C1 伴隨 AWS Community Day 的香港週末:從雲端技術論壇到維港璀璨夜景
香港 Community Day
C2 講者的奢華週末:分享您的 AWS 故事,讓香港成為您的專屬舞台
香港 Community Day
C3 香港七十二小時:AWS Community Day 講者的極致之旅
香港 Community Day
馬尼拉 Community Day
C4 AWS Community Day Manila:一場連結雲端技術、城市文化與真摯友誼的快樂週末
馬尼拉 Community Day
C5 AWS Community Day Manila:雲端建立者在菲律賓感受最幸福的精神
馬尼拉 Community Day
C6 AWS Community Day Manila:在快樂之城建構、打破、重來,並找到歸屬
馬尼拉 Community Day
C7 菲律賓馬尼拉初次造訪建議
馬尼拉 Community Day
菲律賓 × 香港
C8 菲律賓香港資本市場升級
菲律賓 × 香港
回測
B1 使用 Bedrock AgentCore 與 Strands Agents 建立機構級 Amazon 純做多 (Long-Only) 回測代理
純做多 AMZN 代理:AgentCore、Strands 與可稽核的 Backtrader 帳本。
B2 使用 Backtrader、AgentCore 與 Strands Agents 建立具市況感知能力的 Amazon 部位管理
把市況當成部位控制,而不是圖表註解。
B3 使用 Nasdaq、S&P 500、Dow、AgentCore 與 Strands 建立相對於基準的 Amazon 進出場時機系統
相對 Nasdaq、S&P 500 與道瓊來判斷 AMZN 時機。
B4 使用 Bedrock AgentCore、Strands Agents 與 Backtrader 建立受治理的 Amazon 交易歷史工廠(Trade-History Factory)
把回測做成可稽核的交易歷史工廠。
B5 使用 Bedrock AgentCore 與 Strands Agents 建立智慧代理型 (Agentic) Amazon 回測營運模型 [Part 1]
先建立營運模型,再爭論結果。
B6 為 Amazon 擇時與部位管理建立客製化 Cerebro 程式碼說明 [第 2 部分]
先講 Cerebro 引擎,再講圖表。
B7 為 Amazon 策略結果與經驗教訓建立交易員審閱紀錄 [Part 3]
把策略排名寫成交易員審閱紀錄。
B8 使用 AgentCore 與 Strands 建立受治理的 FSI Amazon 部位管理 Playbook [Part 4]
受治理的 FSI Amazon 部位管理手冊。
B9 使用 Amazon Bedrock AgentCore 建立主權風險交易代理,分析殖利率差、FX 避險與債務重新定價
主權風險代理:殖利率差、外匯避險與債務重定價。
B11 建置現代波動率交易與合法泰國復原規劃代理程式:記憶體驅動的 Strands 多代理程式風險防護系統
記憶驅動的 Strands 代理:波動率與泰國復原規劃。
B12 使用 Amazon Bedrock AgentCore Memory 建構空頭跨式部位交易風險治理
空頭跨式部位的交易風險治理。
B13 在 Amazon EKS 上建構生產環境就緒的信用與收益質押 AI 智能體
在 EKS 上跑生產級信用與收益質押代理。
挑戰
01 週末生產力挑戰:Fab SPC 漂移同步入口網站
Fab SPC 漂移審查與建議入口網站。
02 週末生產力挑戰:Quant P&L Commander — AWS 上由 AI 驅動的交易生產力入口網站
AWS 上由 AI 驅動的交易生產力入口網站。
03 週末煩人的任務挑戰:交易台在雲端、鏈上、空中執行摘要
DeskPulse 日常交易執行摘要。
04 週末 Agent 挑戰:上午 6 點交易風險審查
無人值守、以證據為基礎的晨間交易風險簡報。
05 Weekend Creative Challenge: Leadership Card Game
瀏覽器版創意引導卡牌。
06 Full Stack Challenge: Community Day Board App
瀏覽器版活動溝通空間。
領導力卡牌
01 Leadership Card Game: 雲端還沒自動化的最後一項本事:像領導者一樣說話
寫給 建構者的現場隨筆——談語言、勇氣,以及 Leadership Card Game
02 領導力回合的解剖:Leadership Card Game 實際怎麼玩
給 建構者的引導員實地指南——讓演練嵌進真實會議
03 Leadership Card Game: 當機會不再屬於主辦者
寫給 建構者的現場隨筆:權力轉移、多語領導力練習夜,以及走完入口、資源、敘事的職涯弧線
04 週末創意挑戰:Leadership Card Game
一篇建構者手記:願景、架構,以及週末創意挑戰教會我的事
05 從週末挑戰專案到 $1,386 群眾募資:改變你在職場現身方式的領導力練習
一個週末做出的作品,變成 600 張卡的線上領導力練習室,並募到 $1,386。
06 從週末挑戰專案到 $1,386 群眾募資:進入科技產業的第一天路徑
一個週末挑戰如何變成具備 600 張卡、由 AWS 驅動的多語產品,並募到 $1,386?
07 從週末挑戰專案到 $1,386 群眾募資:用轉移機會建立專業品牌
一個週末挑戰把領導想法做成能跑的多語產品,並募到 $1,386。
08 Leadership Card Game — 群眾募資活動
募資目標: HKD 5,000 已募金額: HKD 1,386 距目標還差: HKD 3,614 進度: 28% 創作者: D.C. Dan · L.L. Diana · L.K. Lva 所在地: 日本、香港、新加坡 投資人權益: 即期價值、私密會員卡牌編輯器雲(Private Membership Card…
09 PR/FAQ 01 — Leadership Card Game 面向社群建構者正式推出
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 社群經理、志願組織者、職涯早期建構者
10 PR/FAQ 02 — 企業引導員採用 Leadership Card Game 進行現場領導力演練
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 學習與發展負責人、人員管理者、敏捷教練、企業引導員
10 PR/FAQ 03 — 多語 Leadership Card Game 為建構者擁有權開放全球練習室
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 全球 建構者、雙語社群、跨境產品團隊、開源導師
AWS Builder Center
01 AWS Builder Center、社群精神與 AWS Builder Jacket
霓虹訊號、共享創意,以及為建構者打造的外套。
02 走進 AWS Builder Center:一座能學習、貢獻,也讓人有歸屬感的全球技術平台
一段精彩旅程,不一定從機場開始。
03 AWS Community Builder 的巨大成功
當建構者公開分享,整個社群就會一起前進。
04 AWS Builder Center 的巨大成功
一座為好奇心打造、充滿活力的全球街區。
05 週末走進 AWS Builder Center:從社群靈感到令人難忘的 AWS Builder Jacket
星期五晚上,開始於建構者熟悉的感覺:有一個點子,正卡在問題與可能性之間。

目標受眾: 負責建置內容 QA 管線與 AI 輔助教育應用程式的專業開發人員

時長: 2 小時

主要 AWS AI 服務: Kiro

專案產出: 一個由 Kiro 引導的 QA 管線,用於重寫、去重、驗證並匯出可審查的額外範例。

僅限教育工程研討會。這是一項軟體架構練習,而非流程發佈建議。

工作坊摘要

本工作坊旨在協助開發人員透過結構化的 QA,改善他加祿語(Tagalog)學習 App 中的額外範例。參與者將使用 Kiro 定義範例合約、生成多樣化的練習句子、偵測重複項目、加入可追溯的背景資訊、匯出審查員報告並驗證數量。此工作流程可將鬆散的輔助範例轉化為獨特、可稽核的學習資產,讓審查員能在發布或安全擴展至未來課程前進行檢查。

工作坊目標

開發人員將建置一個用於額外範例的內容 QA 管線。該管線將擷取主要的原生他加祿語(Natural Tagalog)句子、生成三個相關範例、偵測整個網站中的重複項目、加入可追溯的背景資訊、匯出審查員報告,並驗證卡片與範例的數量。

2 小時議程

時間 模組 開發人員產出
0–10 分鐘 Kiro 設定 準備好 QA 導向與規格書
10–25 分鐘 範例合約 定義可審查的範例資料
25–45 分鐘 生成機制 從每個來源句子建立三個範例
45–65 分鐘 去重機制 偵測重複項目並加入可追溯的背景資訊
65–90 分鐘 報告匯出 為審查員產生 JSON 或 CSV
90–110 分鐘 驗證機制 強制每個卡片具備三個範例
110–120 分鐘 Hook 與審查 自動化 QA 並建立交付檔案

步驟 1 — 建立用於額外範例 QA 的 Kiro 導向設定

開發人員任務

● 在 Kiro 中生成導向文件(steering docs)。

● 加入額外範例的 QA 規則。

● 要求 Kiro 列出內容風險。

● 在撰寫腳本前提交(commit)導向設定。

Kiro 提示詞範例

建立一個用於額外範例品質的導向文件。每張卡片必須包含三個相關範例。範例必須具備足夠的獨特性以供審查,並能透過文章與句子編號進行追溯,且在審查完成前須標記為草稿(draft)。

系統設計決策

● 在編碼前使「步驟 1 — 建立用於額外範例 QA 的 Kiro 導向設定」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。這能讓生成的程式碼更具一致性,為審查員提供具體的檢查依據,並避免在每次對話中重複解釋。此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性(deterministic)且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複性。具備確定性的腳本、明確的組態、穩定的綱要(schemas)與驗證報告能讓結果更容易除錯。當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異(diffs)、重新執行檢查,並向其他工程師解釋該系統。這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — .kiro/steering/extra-example-qa.md

# 額外範例 QA 導向設定

- 每個句子卡片必須恰好包含三個額外範例。
- 範例必須與該卡片的原生他加祿語(Natural Tagalog)句子相關。
- 追溯文章編號、句子編號與範例編號。
- 偵測整個網站中重複的他加祿語範例文字。
- 為每個生成的範例加入審查狀態與審查員筆記。
- 若卡片數量或範例數量錯誤,則驗證失敗。

程式碼說明

● 業務邏輯: 導向設定檔案將額外範例定義為可審查的學習內容。

● 程式碼邏輯: Kiro 在生成規格書、模型、重寫腳本、驗證器、Hook 與文件時會使用這些規則。

● 預期結果: 未來的程式碼將包含可追溯性、重複偵測與審查中繼資料。


步驟 2 — 定義可審查的額外範例紀錄

開發人員任務

● 建立 example_model.py。

● 加入審查狀態與可追溯性欄位。

● 驗證必填文字。

● 序列化紀錄以用於報告。

Kiro 提示詞範例

建立一個用於可審查額外範例的 Python dataclass 模型。欄位包括:articleNumber, sentenceNumber, exampleNumber, sourceNaturalTagalog, tagalog, english, naturalTagalog, politeTagalog, duplicateGroup, reviewStatus, reviewNotes。

系統設計決策

● 在編碼前使「步驟 2 — 定義可審查的額外範例紀錄」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。這能讓生成的程式碼更具一致性,為審查員提供具體的檢查依據,並避免在每次對話中重複解釋。此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複性。具備確定性的腳本、明確的組態、穩定的綱要與驗證報告能讓結果更容易除錯。當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異、重新執行檢查,並向其他工程師解釋該系統。這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — example_model.py

from dataclasses import dataclass, asdict

ALLOWED_REVIEW_STATUS = {"draft", "native-reviewed", "blocked"}

@dataclass
class ExtraExample:
    articleNumber: int
    sentenceNumber: int
    exampleNumber: int
    sourceNaturalTagalog: str
    tagalog: str
    english: str
    naturalTagalog: str
    politeTagalog: str
    duplicateGroup: str | None = None
    reviewStatus: str = "draft"
    reviewNotes: str = "Needs native-speaker review."

    def validate(self):
        if self.reviewStatus not in ALLOWED_REVIEW_STATUS:
            raise ValueError(f"Invalid reviewStatus: {self.reviewStatus}")
        required = [self.sourceNaturalTagalog, self.tagalog, self.english, self.naturalTagalog, self.politeTagalog]
        if any(not value.strip() for value in required):
            raise ValueError("ExtraExample has empty required text")

    def to_dict(self):
        self.validate()
        return asdict(self)

程式碼說明

● 業務邏輯: 資料類別(dataclass)使每個額外範例皆可追溯與審查。

● 程式碼邏輯: 它會驗證必填文字、控制審查狀態,並將其序列化為字典,以便用於 JSON 報告。

● 預期結果: 呼叫 to_dict() 將回傳經過驗證的紀錄,或擲出明確的驗證錯誤。


步驟 3 — 從每個卡片生成三個相關範例

開發人員任務

● 擷取主要的原生他加祿語句子。

● 生成用於使用、重複與練習的範例。

● 加入客氣/禮貌(polite)變體。

● 驗證每筆紀錄。

Kiro 提示詞範例

建立一個具備確定性的生成器,從卡片的原生他加祿語句子產生三個範例。每個範例皆須包含他加祿語、英語、原生他加祿語、禮貌他加祿語、來源句子、文章編號、句子編號與範例編號。

系統設計決策

● 在編碼前使「步驟 3 — 從每個卡片生成三個相關範例」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。這能讓生成的程式碼更具一致性,為審查員提供具體的檢查依據,並避免在每次對話中重複解釋。此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複性。具備確定性的腳本、明確的組態、穩定的綱要與驗證報告能讓結果更容易除錯。當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異、重新執行檢查,並向其他工程師解釋該系統。這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — generate_examples.py

from example_model import ExtraExample

def generate_examples(article_number, sentence_number, natural_tagalog):
    templates = [
        (f'Gagamitin ko rin ang linyang "{natural_tagalog}" mamaya.', f'I will also use the line "{natural_tagalog}" later.', f'Uulitin ko ang linyang "{natural_tagalog}" nang dahan-dahan.', f'Pakisuyo, uulitin ko po ang linyang "{natural_tagalog}" nang dahan-dahan.'),
        (f'Sasabihin ko ang linyang "{natural_tagalog}" sa kausap ko.', f'I will say the line "{natural_tagalog}" to the person I am talking to.', f'Ipapaliwanag ko ang linyang "{natural_tagalog}" sa simpleng paraan.', f'Pakisuyo, ipapaliwanag ko po ang linyang "{natural_tagalog}" sa simpleng paraan.'),
        (f'Magsanay tayo gamit ang linyang "{natural_tagalog}" ngayon.', f'Let us practice using the line "{natural_tagalog}" now.', f'Isusulat ko ang linyang "{natural_tagalog}" sa notes ko.', f'Pakisuyo, isusulat ko po ang linyang "{natural_tagalog}" sa notes ko.')
    ]
    output = []
    for i, (tagalog, english, natural, polite) in enumerate(templates, start=1):
        example = ExtraExample(article_number, sentence_number, i, natural_tagalog, tagalog, english, natural, polite)
        example.validate()
        output.append(example)
    return output

程式碼說明

● 業務邏輯: 生成器會建立三個與主卡片句子綁定的可審查範例。

● 程式碼邏輯: 它會填入具備確定性的範本、建立資料類別紀錄、對其進行驗證並回傳結構化輸出。

● 預期結果: 呼叫 generate_examples(4, 10, 'Paki-check kung pumasok ang bayad.') 會回傳三個帶有可追溯性的草稿範例。


步驟 4 — 偵測重複項目並匯出審查員 CSV

開發人員任務

● 正規化(Normalize)他加祿語文字。

● 對所有範例中的重複項目進行分組。

● 為非開發人員審查員匯出審查用 CSV。

● 要求 Kiro 摘要重複分組。

Kiro 提示詞範例

建立重複偵測功能與 CSV 匯出器。正規化他加祿語文字、將重複項目分組、指派 duplicateGroup ID,並輸出 articleNumber, sentenceNumber, sourceNaturalTagalog, tagalog, english, politeTagalog, duplicateGroup, reviewStatus 與 reviewNotes。

系統設計決策

● 在編碼前使「步驟 4 — 偵測重複項目並匯出審查員 CSV」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。這能讓生成的程式碼更具一致性,為審查員提供具體的檢查依據,並避免在每次對話中重複解釋。此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複性。具備確定性的腳本、明確的組態、穩定的綱要與驗證報告能讓結果更容易除錯。當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異、重新執行檢查,並向其他工程師解釋該系統。這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — export_review_csv.py

import csv
import json
from pathlib import Path

COLUMNS = ["articleNumber", "sentenceNumber", "exampleNumber", "sourceNaturalTagalog", "tagalog", "english", "politeTagalog", "duplicateGroup", "reviewStatus", "reviewNotes"]

def export_csv(json_path="example-review-report.json", csv_path="example-review-report.csv"):
    payload = json.loads(Path(json_path).read_text(encoding="utf-8"))
    with open(csv_path, "w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=COLUMNS)
        writer.writeheader()
        for example in payload["examples"]:
            writer.writerow({column: example.get(column, "") for column in COLUMNS})
    return csv_path

if __name__ == "__main__":
    print(export_csv())

程式碼說明

● 業務邏輯: 匯出器透過與試算表相容的 CSV,讓非開發人員審查員也能輕鬆進行範例審查。

● 程式碼邏輯: 它會讀取 JSON 報告、以穩定的順序寫入指定的欄位,並回傳 CSV 路徑。

● 預期結果: 執行 python export_review_csv.py 會建立 example-review-report.csv 以供語言審查使用。


附加實作開發實驗室

這些實驗室是 工作坊 6 — 獨特且可審查額外範例 所特有的。它們透過語意獨特性檢查、可追溯的範例身分、重寫佇列、審查員匯入以及批次級別的品質報告,來擴展額外範例的 QA 管線。其核心重點在於範例的多樣性與可審查性,而非泛用的驗證執行器。

實作實驗室 A — 加入穩定的範例 ID 與歷程中繼資料

開發人員任務

● 要求 Kiro 為每個額外範例生成穩定的 ID。

● 包含文章編號、句子編號、範例編號以及來源句子的雜湊值(hash)。

● 加入歷程中繼資料(lineage metadata),以記錄生成策略與範本名稱。

● 驗證整個網站中每個範例 ID 的唯一性。

Kiro 提示詞範例

為額外範例加入穩定的範例身分識別與歷程資訊(lineage)。
從 articleNumber, sentenceNumber, exampleNumber 與 sourceNaturalTagalog 的短雜湊值建立 exampleId。
加入 generatedBy, generationStrategy, templateName 與 sourceHash 欄位。
若有重複的 exampleId 數值,則驗證失敗。

系統設計決策

● 審查意見需要穩定的 ID: 審查員必須能夠在重新生成後,依然指向同一個範例。

● 歷程資訊解釋了範例存在的原因: 生成的範例應顯示其來自練習範本、情境重寫還是手動覆蓋。

● 身分識別支援去重機制: 當每筆紀錄都有穩定的鍵值與來源雜湊時,重複偵測會變得更容易。

程式碼範例 — example_identity.py

import hashlib


def short_hash(value: str) -> str:
    return hashlib.sha1(value.encode("utf-8")).hexdigest()[:8]


def example_id(article_number: int, sentence_number: int, example_number: int, source_natural_tagalog: str) -> str:
    return f"a{article_number:03d}-s{sentence_number:03d}-e{example_number:02d}-{short_hash(source_natural_tagalog)}"


def lineage(template_name: str, strategy: str = "deterministic-template") -> dict:
    return {
        "generatedBy": "workshop-6-extra-example-pipeline",
        "generationStrategy": strategy,
        "templateName": template_name
    }

程式碼說明

● 業務邏輯: 穩定的 ID 與歷程資訊讓範例在審查與重新生成過程中皆可追溯。

● 程式碼邏輯: 短雜湊將 ID 與來源句子綁定,而歷程資訊則記錄了生成方法。

● 預期結果: 每個範例都可以在審查員報告與去重記錄中被引用。

實作實驗室 B — 為近乎重複的項目加入語意相似度評分

開發人員任務

● 要求 Kiro 加入一個輕量級的近乎重複(near-duplicate)偵測器,且不依賴外部服務。

● 正規化他加祿語文字並計算詞記(token)重疊度。

● 標記具有高相似度的範例,即使它們不是完全相同的重複項目。

● 匯出近乎重複的候選名單以供審查,而非自動刪除。

Kiro 提示詞範例

為他加祿語額外範例建立一個本地的近乎重複偵測器。
正規化標點符號與大小寫,計算詞記(token)集合的 Jaccard 相似度,並標記分數超過 0.82 的配對。
請勿自動刪除範例。
將重複候選項目連同範例 ID、分數與審查員決策(reviewerDecision)一併寫出。

系統設計決策

● 僅靠精確重複檢查是不夠的: 範例可能近乎相同,但仍能通過精確的文字比對。

● 本地評分可保持工作坊的確定性: 詞記重疊度是可解釋且可重複驗證的,不需要外部 API。

● 審查員決策仍由人工主導: 偵測器負責標記候選項目;由審查員決定保留、重寫還是封鎖。

程式碼範例 — near_duplicates.py

import re
from itertools import combinations


def tokens(text: str) -> set[str]:
    normalized = re.sub(r"[^\w\sñÑ]", " ", text.lower())
    return {part for part in normalized.split() if part}


def jaccard(left: str, right: str) -> float:
    a = tokens(left)
    b = tokens(right)
    if not a and not b:
        return 1.0
    return len(a & b) / len(a | b)


def near_duplicate_pairs(examples: list[dict], threshold: float = 0.82) -> list[dict]:
    findings = []
    for left, right in combinations(examples, 2):
        score = jaccard(left["tagalog"], right["tagalog"])
        if score >= threshold:
            findings.append({
                "leftExampleId": left["exampleId"],
                "rightExampleId": right["exampleId"],
                "score": round(score, 3),
                "reviewerDecision": ""
            })
    return findings

程式碼說明

● 業務邏輯: 偵測器會找出可能讓學習者感到重複乏味的範例。

● 程式碼邏輯: 它會正規化文字、計算 Jaccard 相似度,並回傳高於閾值的候選配對。

● 預期結果: 審查員會收到一份近乎重複的報告,且不會自動遺失任何範例。

實作實驗室 C — 建立範本多樣性預算

開發人員任務

● 要求 Kiro 定義範例允許的範本家族(template families)。

● 計算每個範本家族在每篇文章與每個類別中出現的頻率。

● 若單一範本家族在頁面中佔比過高,則驗證失敗。

● 加入一份報告,建議接下來應該使用哪個範本家族。

Kiro 提示詞範例

為額外範例建立一個範本多樣性預算。
範本家族包括:repeat(重複)、apply(應用)、ask(提問)、explain(解釋)與 write-down(寫下)。
在單一文章中,任一範本家族的佔比皆不得超過額外範例的 45%。
回傳文章級別的計次、失敗項目以及建議的下一個家族。

系統設計決策

● 獨特性應包含教學法上的多樣性: 三個範例在文字上可能是獨特的,但在教學法上卻可能流於重複。

● 預算可防止範本被過度使用: 限制每個家族的最大份額,能保持生成範例的多樣性。

● 建議有助於重寫迴圈(rewrite loops): 驗證器應指出哪個範本家族可以改善平衡。

程式碼範例 — template_budget.py

from collections import Counter, defaultdict

MAX_SHARE = 0.45
FAMILIES = ["repeat", "apply", "ask", "explain", "write-down"]


def article_template_report(examples: list[dict]) -> dict:
    grouped = defaultdict(list)
    for example in examples:
        grouped[example["articleNumber"]].append(example)

    reports = {}
    for article, rows in grouped.items():
        counts = Counter(row["templateFamily"] for row in rows)
        total = sum(counts.values()) or 1
        failures = [
            {"templateFamily": family, "share": count / total}
            for family, count in counts.items()
            if count / total > MAX_SHARE
        ]
        suggested = min(FAMILIES, key=lambda family: counts.get(family, 0))
        reports[article] = {"total": total, "counts": dict(counts), "failures": failures, "suggestedNextFamily": suggested}
    return reports

程式碼說明

● 業務邏輯: 該報告使額外範例在不同的練習風格中保持多樣化。

● 程式碼邏輯: 它按文章將範例分組、計算範本家族數量、標記佔比過高的家族,並推薦未被充分使用的家族。

● 預期結果: 開發人員可以根據具體的多樣性回饋,重寫重複的批次。

實作實驗室 D — 為重複或薄弱的範例建立重寫佇列

開發人員任務

● 要求 Kiro 建立一個需要重寫的範例佇列。

● 加入原因標籤,例如 exact-duplicate(完全重複)、near-duplicate(近乎重複)、template-overused(範本過度使用)與 missing-politeness(遺漏禮貌變体)。

● 產生保留來源句子與可追溯性的重寫提示詞。

● 在審查完成前,將重寫的範例保持在草稿(draft)狀態。

Kiro 提示詞範例

為薄弱的額外範例建立一個重寫佇列。
輸入來源包括完全重複發現、近乎重複發現、範本預算失敗以及驗證失敗。
為佇列中的每個項目產生 exampleId, reason, sourceNaturalTagalog, currentTagalog, rewriteInstruction,並將 reviewStatus 設為 draft。
請勿自動覆寫原始範例。

系統設計決策

● 重寫應是審慎且深思熟慮的: 薄弱的範例應進入佇列,而非被默默替換。

● 原因標籤能提升審查效率: 審查員可以在核准重寫前,看到該範例被標記的原因。

● 保持可追溯性完好無損: 重寫會保留原始的範例 ID 與來源句子以供比對。

程式碼範例 — rewrite_queue.py

from collections import defaultdict


def build_rewrite_queue(examples_by_id: dict[str, dict], findings: list[dict]) -> list[dict]:
    grouped_reasons = defaultdict(list)
    for finding in findings:
        grouped_reasons[finding["exampleId"]].append(finding["reason"])

    queue = []
    for example_id, reasons in grouped_reasons.items():
        example = examples_by_id[example_id]
        queue.append({
            "exampleId": example_id,
            "reason": sorted(set(reasons)),
            "sourceNaturalTagalog": example["sourceNaturalTagalog"],
            "currentTagalog": example["tagalog"],
            "rewriteInstruction": "Create a distinct beginner-friendly example that keeps the same source sentence context.",
            "reviewStatus": "draft",
            "reviewerDecision": ""
        })
    return queue

程式碼說明

● 業務邏輯: 該佇列將 QA 發現轉化為受控的重寫工作。

● 程式碼邏輯: 發現項目依範例 ID 分組、按原因去重,並轉換為可供審查員處理的任務。

● 預期結果: 開發人員可以重寫被標記的範例,而不會遺失原始背景資訊。

實作實驗室 E — 匯入審查員決策並套用安全更新

開發人員任務

● 要求 Kiro 設計審查員決策的匯入格式。

● 支援以下決策:approve(核准)、rewrite(重寫)、block(封鎖)與 needs-discussion(需要討論)。

● 將核准的中繼資料更新套用至範例報告。

● 拒絕在面向學習者的最終輸出中發布被封鎖的範例。

Kiro 提示詞範例

為額外範例建立一個審查員決策匯入器。
讀取包含 exampleId, decision, reviewerNotes, revisedTagalog, revisedEnglish 與 reviewedBy 的 `reviewer-decisions.csv` 檔案。
僅在修改後欄位不為空時,才套用核准的重寫內容。
將被封鎖的範例標記為 blocked,並在匯出面向學習者的內容時將其排除。

系統設計決策

● 審查員回饋必須支援雙向來回(round-trip): 唯有在決策能被安全匯入時,CSV 匯出才真正有用。

● 安全更新可避免意外的空白: 除非修改後的欄位包含文字,否則不應套用重寫。

● 被封鎖的內容應採用安全失敗(fail-closed)原則: 面向學習者的匯出內容在預設情況下應排除被封鎖的範例。

程式碼範例 — import_reviewer_decisions.py

import csv

ALLOWED_DECISIONS = {"approve", "rewrite", "block", "needs-discussion"}


def apply_decisions(examples_by_id: dict[str, dict], csv_path: str) -> dict[str, dict]:
    with open(csv_path, newline="", encoding="utf-8") as file:
        for row in csv.DictReader(file):
            example_id = row["exampleId"]
            decision = row["decision"]
            if decision not in ALLOWED_DECISIONS or example_id not in examples_by_id:
                continue
            example = examples_by_id[example_id]
            example["reviewerDecision"] = decision
            example["reviewNotes"] = row.get("reviewerNotes", "")
            example["reviewedBy"] = row.get("reviewedBy", "")
            if decision == "block":
                example["reviewStatus"] = "blocked"
            if decision == "approve":
                example["reviewStatus"] = "native-reviewed"
            if decision == "rewrite" and row.get("revisedTagalog") and row.get("revisedEnglish"):
                example["tagalog"] = row["revisedTagalog"]
                example["english"] = row["revisedEnglish"]
                example["reviewStatus"] = "draft"
    return examples_by_id


def learner_examples(examples: list[dict]) -> list[dict]:
    return [example for example in examples if example.get("reviewStatus") != "blocked"]

程式碼說明

● 業務邏輯: 審查員的決策成為內容 QA 生命週期的一部分。

● 程式碼邏輯: 匯入器會更新狀態、筆記、審查員身分與安全重寫,同時過濾掉被封鎖的輸出。

● 預期結果: 審查回饋可以直接套用,無須手動編輯龐大的 JSON 檔案。

實作實驗室 F — 產生批次品質計分卡

開發人員任務

● 要求 Kiro 為每個範例批次建立計分卡(scorecard)。

● 包含完全重複計次、近乎重複計次、遺漏審查中繼資料、範本主導性、封鎖計次與核准計次。

● 產生通過/失敗(pass/fail)的發布建議。

● 將計分卡儲存為 JSON 與 Markdown 以供交付使用。

Kiro 提示詞範例

為額外範例建立一個批次品質計分卡。
輸入來源包括範例、完全重複發現、近乎重複發現、範本預算報告與審查員決策。
回傳指標、通過/失敗狀態、發布建議(releaseRecommendation)與後續行動(nextActions)。
寫出 `example-quality-scorecard.json` 與 `example-quality-scorecard.md`。

系統設計決策

● 品質需要發布視角的視圖: 個別驗證器雖然有用,但維護者需要一個最終的摘要。

● 計分卡讓進度可視化: 團隊可以追蹤重複計次是否在減少,以及核准的範例是否在增加。

● Markdown 支援人工交付: 易讀的報告有助於審查員與工作坊參與者理解還剩下哪些工作。

程式碼範例 — scorecard.py

import json
from pathlib import Path


def quality_scorecard(examples: list[dict], exact_duplicates: list[dict], near_duplicates: list[dict], template_failures: list[dict]) -> dict:
    blocked = sum(1 for example in examples if example.get("reviewStatus") == "blocked")
    approved = sum(1 for example in examples if example.get("reviewStatus") == "native-reviewed")
    missing_review = sum(1 for example in examples if not example.get("reviewStatus"))
    passed = not exact_duplicates and len(near_duplicates) <= 5 and not template_failures and missing_review == 0
    return {
        "totalExamples": len(examples),
        "approvedExamples": approved,
        "blockedExamples": blocked,
        "exactDuplicateCount": len(exact_duplicates),
        "nearDuplicateCount": len(near_duplicates),
        "templateFailureCount": len(template_failures),
        "missingReviewMetadata": missing_review,
        "status": "passed" if passed else "needs-work",
        "releaseRecommendation": "Ready for learner-facing export." if passed else "Resolve QA findings before release."
    }


def write_scorecard(scorecard: dict, json_path="example-quality-scorecard.json", md_path="example-quality-scorecard.md") -> None:
    Path(json_path).write_text(json.dumps(scorecard, indent=2), encoding="utf-8")
    lines = ["# 範例品質計分卡", ""]
    for key, value in scorecard.items():
        lines.append(f"- **{key}:** {value}")
    Path(md_path).write_text("\n".join(lines) + "\n", encoding="utf-8")

程式碼說明

● 業務邏輯: 計分卡為維護者提供額外範例的發布就緒摘要。

● 程式碼邏輯: 指標衍生自範例與驗證器的發現,然後寫入成 JSON 與 Markdown。

● 預期結果: 該批次具備明確的通過/失敗建議與具體可執行的品質指標。


參考架構說明

● 本工作坊強調的 Kiro 能力: 範例 QA 導向、穩定身分設計、近乎重複分析、範本多樣性驗證、重寫佇列生成、審查員決策匯入以及發布計分卡文件化。

● 產品範疇: 用於他加祿語學習卡片的額外範例。生成的範例在由他加祿語母語人士審查前,皆保持為草稿(draft)狀態。

● 執行環境範疇: 首先在本地執行 Python QA 管線。後續可選擇自動化配置,在 CI 中執行相同的檢查,然後才匯出面向學習者的範例。