ESG Greenwash Analyzer

Analyzes ESG reports for greenwashing risk by extracting commitments, assessing evidence, and generating rewrite suggestions. Uses RAG and deterministic scripts for consistent results.

Sby Skills Guide Bot
Data & AIAdvanced
007/23/2026
Claude Code
#esg#greenwash#sustainability#tej#csr#compliance#audit#rag

Recommended for


name: esg-greenwash-analyzer version: 2.0.0 description: > ESG 漂綠分析專家。從永續報告書段落或全文中抽取 ESG 承諾句,評判 promise/evidence/timeline/quality 四欄位,套用確定性規則產出漂綠風險等級, 並生成經反幻覺驗證的改寫建議。源自 AI CUP 2026 ESG 永續承諾驗證競賽 (TEAM_10858, 6/143)。v2 架構:確定性歸腳本,判斷歸模型。 category: finance tags: [esg, greenwash, sustainability, tej, csr, compliance, audit, rag] allowed-tools:

  • Read
  • Bash
  • Glob
  • Grep

ESG 漂綠分析專家 v2

分工鐵則:確定性歸腳本,判斷歸模型

執行本 skill 的 LLM(你)只做三件事:

  1. 承諾句抽取——從段落判斷哪些是 ESG 承諾句
  2. 四欄位初評——promise / timeline / evidence_status / evidence_quality
  3. 改寫文字生成——對高/中風險句寫改寫建議

其餘一律呼叫 scripts/ 腳本,嚴禁在腦中套規則:約束修正、風險分類、改寫驗證、talk-walk 計算、回歸評分,全部有確定性實作。這保證同樣的四欄位輸入永遠得到同樣的風險結論,而模型升級只會改善上面三件事的品質。

環境

$SKILL = "$env:USERPROFILE\.agents\skills\_finance\esg-greenwash-analyzer"
$env:PYTHONUTF8 = "1"   # 必設,否則中文輸出在 cp950 console 會炸
cd $SKILL\scripts

Python 3.11+,需要 chromadb、sentence-transformers、pandas、numpy、pyarrow。首次安裝:

cd $SKILL
python -m pip install -r requirements.txt

所有路徑集中在 config.json:upstreamlocal 均指向本包內的相對路徑。換機器通常不需要改路徑;若要替換資料資產,只改這一檔。

工作流 A:判斷(段落 → 風險分級)

1. RAG 召回     python rag_query.py --text "<承諾句或段落>" --k 5 --out ..\work\fewshot.json
                (快速模式加 --no-semantic,跳過 36 秒模型載入,只用關鍵詞+金標)
2. LLM 判斷     讀 fewshot.json 的相似案例與 golden 範例,對每句評四欄位
                → 寫 ..\work\judged.jsonl(schema 見下)
                ★ 判斷前必讀 references/label_guide.md(稀有標籤與慣例)
3. 約束修正     python apply_constraints.py --in ..\work\judged.jsonl --out ..\work\constrained.jsonl
4. 風險分類     python classify_risk.py --in ..\work\constrained.jsonl --out ..\work\risked.jsonl

judged.jsonl 每行一筆:

{"claim_id": "p48-1", "claim_text": "原句", "page_no": 48, "esg_type": "E",
 "promise_status": "Yes", "verification_timeline": "more_than_5_years",
 "evidence_status": "No", "evidence_string": "", "evidence_quality": "N/A",
 "judge_rationale": "一句話理由(繁中)"}

工作流 B:改寫協助(高/中風險句 → 驗證過的改寫)

1. 取目標       risked.jsonl 中 risk_level ∈ {高, 中} 的句子
2. LLM 改寫     ★ 必讀 references/rewrite_guide.md(占位符鐵則+規則碼對照)
                → 寫 ..\work\rewrites.jsonl(schema 見 rewrite_guide)
3. 驗證門檻     python validate_rewrite.py --in ..\work\rewrites.jsonl --out ..\work\rewrites_checked.jsonl
4. 重寫循環     rewrite_pass=false 的句子,帶著 violations 重寫,回到步驟 3
                最多 2 輪;仍未過 → 標記「人工覆核」,絕不硬塞進報告

工作流 C:公司級 talk−walk(實驗性)

python talk_walk.py --claims ..\work\risked.jsonl --ticker 2454 --pages 120

輸出含 z_talk 成分、z_walk(TEJ 產業內 robust-z)、greenwash_index 與 caveat。 T7 預登記驗證未支持此指數與問題率的相關性(ρ=-0.014, p=0.92, n=49), 報告中此節必須標示「實驗性指標,僅供參考」,不得作為主要結論。

工作流 D:回歸評測(換模型必跑)

1. 出題   python eval_regression.py --make-sample 50 --seed 42
2. 作答   讀 work\eval_questions.json,依工作流 A 的判斷規範逐筆評四欄位
          → 寫 work\eval_preds.jsonl({id, 四欄位})
          ★ 絕對不可讀 work\eval_gold.json
3. 對分   python eval_regression.py --score ..\work\eval_preds.jsonl

門檻(config.json thresholds):promise 0.85 / timeline 0.55 / evidence_status 0.65 / evidence_quality 0.45。固定 seed 使歷次評測可比,報告存 work\eval_report_*.json——這條「模型版本 × 準確率」曲線就是產品自我改善的證據。

自我測試(改動腳本後跑)

python apply_constraints.py --self-test
python classify_risk.py --self-test      # 15 unit + 120 組合窮舉
python validate_rewrite.py --self-test

資產索引

| 資產 | 位置 | 用途 | |---|---|---| | ChromaDB 向量庫 | data/chroma_db(collection: esg_train_claims) | train_1000 語意檢索,384 維 MiniLM | | 金標 few-shot | data/golden_fewshot.json | 13 筆涵蓋全部 (promise,timeline,quality) 組合 | | 關鍵詞倒排索引 | data/index.json | 149 個 ESG 關鍵詞 → record ids | | TEJ 摘要 | data/tej_summary.json | 2,804 家公司硬指標 | | 產業對照 | data/industry_map.json | top-50 ticker → 產業/板塊 | | 本地大資產 | config.json upstream | train/val 1000、TEJ parquet(17,753列)、top-50 產業對照 | | 回饋報告模板 | references/report_template.md | 產出 HTML/MD 報告時的固定結構 |

產品原則

  • 不商業化;TEJ 數據只能以百分位/z 分數呈現,不得揭露原始數值。
  • 改寫建議所有數值都是〔占位符〕,由報告書編製者填入,本工具不提供推估數字。
  • 報告固定聲明:AI 輔助分析、需人工覆核、方法源自競賽第 6 名方案。

競賽基準(參考,與本 skill 的 accuracy 不可直接比較)

v43 ensemble Test Weighted Score:promise 0.7853 / timeline 0.6032 / evidence 0.6872 / quality 0.4353;Overall Private 0.6457(6/143)。

Related skills