相手:サステナ担当者(取引先・銀行と経営の板挟みにいる人)
参照範囲:開示府令・可視化指針・女性活躍推進法・SSBJ
報道記事:不使用/個人データ:不使用
出力:翻訳カード 7欄/出典表示:必須
API系統は、サーバ側(Cloudflare Pages Functions /api/mei)が環境変数の Claude API キーで中継します。
ブラウザにキーは置きません。サーバにキーが無いときは自動的にデモ系統(用意した会話をなぞる)で動きます。
このファイルは単体で動くプロトタイプです。ブラウザで開けばそのまま使えます。対話相手はサステナ担当者(取引先や銀行からESGを問われ、社内では経営が動かない板挟みの人)で、翻訳カードと「役員会に出す1枚」は担当者が経営を動かすための道具です。本番実装の出発点として、以下を確認してください。
| このプロトタイプ | 本番で必要なこと | |
|---|---|---|
| APIキー | サーバ側の環境変数(ANTHROPIC_API_KEY)。ブラウザ → /api/mei → Claude API で中継。キーはクライアントに一切出さない | 同左。加えて認証とレート制限 |
| 制度データ | HTML内に定数として直書き(REGULATIONS) | DBまたは設定ファイルに分離。更新履歴と有効期間を持たせる |
| 会話履歴 | ページ内のメモリのみ。リロードで消える | DBに保存。顧客企業ごとにテナント分離 |
| 認証 | なし | 必須。顧客企業単位のアクセス制御 |
| ログ | なし | 入出力とモデルID・バージョンを保存。誤答時に追跡できるように |
| 出力の検証 | サーバ側で JSON 正規化+出典チェック。出典なしは1回再生成させ、それでも無ければ差し戻す | 加えて制度データにない数値の検出 |
1リクエストで送るのは以下だけです。従業員個人のデータは一切送りません。
確認が必要な項目
企業プロフィールと担当者の発言は、顧客企業の非公開情報にあたる場合があります。Claude API のデータ保存期間と学習利用の扱いを提供元の最新の契約条件で確認し、顧客への説明資料に反映してください。
また、担当者が会話の中で個人が特定できる話(「Aさんが辞めた」等)をする可能性があります。送信前にマスキングするか、システムプロンプトで個人名を扱わないことを明示するかを決めてください。本プロトタイプは未対応です。
誤答を防ぐ仕掛けは3層です。実装時にどれも省かないでください。
REGULATIONS に限定し、「ここにない制度・数値は語らない」とシステムプロンプトで指示seen)と解釈(meaning)を別の欄に分離。混ざらないこと自体がガードレールcites を必須にする。空なら差し戻す画面右上の「確度」「出典」の計器は、この3層目を可視化したものです。confidence が unknown のときに断言させないことが、信頼性設計の中心にあります。
本プロトタイプは、APIキーなしでも動く必要があるため、TOPICS という固定応答の層を持っています。これはデモ系統のための実装であり、本番の推奨構成ではありません。語句一致で振り分ける層をLLMの手前に置くと、系全体の精度がその振り分けの精度で頭打ちになります(実際、開発中に3件の誤振り分けが出ました)。また、固定応答を書き足していくことは「基準の解釈を自前で作り込まない」という本プロダクトの方針にも反します。
本番で切り分けるべき境界は「LLMの手前か後か」ではなく、計算か、言語かです。
| 層 | 担当 | 誰が作るか |
|---|---|---|
| 制度データ | 構造化された事実(条文・施行日・適用範囲・統計値・出典・時点) | 人が更新。年3〜6回 |
| 計算 | 閾値判定(101人以上か)・期限算出(決算月+3か月)・規模帯の選択 | コード。LLMに渡さない |
| LLM | 経路の判断・言い回し・会話の運び | 上の2つだけを 材料に。出典必須 |
| 検証 | 出典があるか/制度データにない数値を出していないか | サーバ側。不備は差し戻す |
閾値の比較と日付の計算をLLMにやらせないこと。ここは静かに誤り、しかも誤りがもっともらしく見える箇所です。コードで計算し、その結果を事実としてLLMに渡してください。ガードレールは「LLMを迂回すること」ではなく、材料を制限し、出典を強制し、出力を検査することです。迂回は制限の代用になりません。
参照する情報は要件定義で確定しています。監視対象は次の6本のみで、これ以外は見ません。「何を、どの形で見るか」が決まっているため、監視は小さく閉じた仕事になります。
| 監視対象 | 発行元 | 更新周期 |
|---|---|---|
| 改正女性活躍推進法 | 厚生労働省 | 随時 |
| 企業内容等の開示に関する内閣府令 | 金融庁 | 随時 |
| SSBJ基準・適用範囲の政令/内閣府令 | 金融庁 | 随時(適用範囲がここで確定) |
| 人的資本可視化指針 | 内閣官房 | 随時 |
| 雇用均等基本調査 | 厚生労働省 | 年次 |
| 賃金構造基本統計調査 | 厚生労働省 | 年次 |
工程は3つに分け、最後だけ人が持ちます。
書き換えを自動化しない理由は、この制度データが全回答の土台だからです。ここが壊れると、すべての回答が出典つきで、自信をもって誤ります。出典があるぶん疑われにくく、発覚も遅れます。一方で項目は定義済みなので、承認作業は「3つのフィールドが合っているか」の確認で済みます。承認が不要になるのではなく、承認が安くなるという関係です。
各エントリの asOf(最終確認日)は画面右上の鮮度計に出しています。6か月で琥珀、12か月で警告に変わります。古いデータが静かに正しい顔をしている状態を作らないための表示です。
サーバ側 functions/lib/knowledge.ts にあります。制度データと一緒にサーバで組み立て、クライアントには出しません。閾値判定と期限計算は functions/lib/facts.ts がコードで行い、結果を事実として渡します。
{
"say": "担当者への発話。3文以内。",
"cites": [{ "label": "制度名・調査名", "detail": "施行日・数値・時点" }],
"card": {
"seen": "いま外からどう見えているか(事実のみ)",
"gap": "何が抜けているか",
"meaning": "経営から見た意味。担当者が役員会でそのまま言える一文",
"deadline": "いつまでに",
"money": "いくらの話か(仮置きなら明記)",
"kpi": "見るべきKPI(3つまで)",
"action": "次の一手(90日)。担当者が経営に決めてほしいことの形"
},
"ask": ["担当者が次に言いそうな返答の候補", "もう一つ"],
"confidence": "high | need_client_data | unknown"
}
card の各欄は、埋められないとき空文字にします。推測で埋めさせないこと。空欄のまま出すほうが、もっともらしい嘘より安全です。
暗い管制画面の様式を採っていますが、装飾のためではありません。確度と出典の状態を計器として常時表示するためです。生成AIを業務に使うとき、利用者が最初に知りたいのは「この回答はどのくらい確かか」であり、それを本文に埋め込むと読み飛ばされます。独立した計器に出すことで、読まずに分かる状態を作っています。
なお本画面は単一の配色で確定しており、閲覧環境の明暗設定に影響されません。商談での見え方を一定に保つためです。