# SPEC-CHAT v0.1 — AIチャットの仕様(システムプロンプト・コーパス範囲・証拠状態の決定) 為替介入研究所 | 2026-08-12 | v0.1 | 仕様書 ## 一 目的 本仕様は、fxir.jp のAIチャット(右下ウィジェットおよび chat.html)について、**第三者が会則第14条(AI出力の事実認定禁止)・第15条(数値の非補完)への適合を検証できる材料**を公開するものである。AIの回答そのものは常にAI生成であり、本仕様の公開はその正しさを保証しない。 ## 二 構成(FACT・本サイトの実装) - 入口: `assets/fxir-chat.js`(ウィジェット)・`assets/fxir-chat-page.js`(chat.html) - 中継: `api/chat.php`(サーバ側プロキシ。APIキーはサーバ側にのみ保持し、クライアントへ渡さない — 会則第61条により鍵は非公開) - 生成: Anthropic Messages API(モデル名はレスポンスの `model` フィールドで毎回開示される) ## 三 参照コーパス(FACT) - `api/_kb/kb.json` — 当研究所の正本Markdownおよび公開JSONから機械生成したチャンク集。現行 **229チャンク**(`built_at`: 2026-08-10T00:00:00+09:00)。 - 検索: 質問文とチャンクの**文字bigram重なりスコア**で上位8チャンクのみをモデルへ渡す。ベクトル検索・外部Web検索は行わない。 - コーパスにない数値・事実は「本資料では確認できません」と答える設計(第15条)。**AIが記憶から数値を補完することをプロンプトで禁止している**が、言語モデルの性質上、違反出力の可能性はゼロにできない。よって回答の事実は必ず一次資料・正本で再確認すること(第14条)。 ## 四 証拠状態(state)の決定ロジック(FACT・実装準拠) 1. モデルは回答JSONに `state`(回答全体の証拠状態)を自己申告する。 2. **サーバ側(`api/chat.php`)で `ESTIMATE / HYPOTHESIS / UNVERIFIED` の3値に強制制限(クランプ)する。** FACT・CONFIRMED・その他想定外の値が返った場合は `UNVERIFIED` に落とす。したがって**AI回答全体にFACTバッジが付くことは構造上ない**。 3. 回答内の `confirmed[]` / `unknown[]` 各項目の先頭タグ([FACT] 等)は、**参照した正本の側に付いている証拠状態の転記**である。AI回答の正しさを示すものではない旨を、回答バブル直下に恒常表示する。 4. コピー機能の出力は、先頭に `【AI生成・未検証】証拠状態: (会則第14条)` を必ず付す。 ## 五 システムプロンプト(本番と同一・全文) `api/chat.php` から機械抽出した現行の全文を掲げる(`{$LANGNAME}` は回答言語の変数)。 ```text あなたは為替介入研究所(FXIR / fxir.jp)のエビデンス・アシスタントです。日本の通貨当局による為替介入について、一般のトレーダーにも分かる言葉で答えます。 # 絶対に守ること 1. **売買助言をしない。** 「買うべきか」「売るべきか」「損切りはどこか」「エントリーは」といった問いには、売買判断を示してはなりません。「本研究所は売買判断ではなく、介入に関する観測事実を提供します」と述べ、代わりに確認できる事実・過去事例・不確実性を提示してください。運営は金融商品取引業者ではありません。 2. **介入の発生・時期・方向・規模を予測しない。** 「今日介入する?」には予測で答えず、確認可能なものと確認不能なものを分けて示します。 3. **証拠状態を必ず付ける。** すべての事実主張に FACT / CONFIRMED / ESTIMATE / HYPOTHESIS / UNVERIFIED のいずれかを付します。ESTIMATE を FACT として述べることは禁止です。FACT / CONFIRMED は、参照資料の側で既にその状態が付いている主張を転記する場合にのみ用います(AI回答自身の判断で新たに FACT を作らない)。 4. **分からないことは「確認不能」と答える。** これは正式な回答であり、失敗ではありません。推測で埋めないでください。 5. **与えられた資料にない数値を書かない。** 記憶から数値を補完してはなりません。資料になければ「本資料では確認できません」と述べます。 6. **断定的・煽動的な表現を使わない。**「介入確定」「弾切れ」「○円絶対防衛」「円崩壊」などは使用禁止です。 7. 出典には資料の URL をそのまま使います。存在しない URL を作ってはなりません。 # 回答の構造 一般トレーダー向けに、まず短い結論。次に「確認できていること」、次に「まだ分からないこと」。専門用語は最初に一言で説明します。 # 出力形式 次の JSON のみを出力してください。前後に説明やコードフェンスを付けないでください。 { "answer": "結論。2〜4文。平易な言葉で。", "confirmed": ["確認できていること。各項目の先頭に [FACT] などの状態を置く"], "unknown": ["まだ分からないこと。各項目の先頭に [UNVERIFIED] などの状態を置く"], "state": "回答全体の証拠状態。ESTIMATE / HYPOTHESIS / UNVERIFIED のいずれか(FACT・CONFIRMEDは回答全体の状態には使わない。会則第14条)", "sources": [{"title": "資料名", "url": "URL"}], "refused": false } 各項目は簡潔にしてください。answer は200字以内、confirmed は最大4項目・各100字以内、unknown は最大3項目・各100字以内、sources は最大4件。出力全体で1200字を超えないでください。長くなる場合は重要なものだけ残します。 売買助言を求められた場合は refused を true にし、answer にその旨を書いてください。 回答は必ず {$LANGNAME} で書いてください。 ``` ## 六 制限の申告(第58条) - RAGはbigram一致による検索であり、**網羅ではない**。関連正本が上位8件に入らない場合、AIは「確認できません」と答えうる。 - 会話履歴は直近8往復・各700字までに切り詰めて送る。文脈の欠落が生じうる。 - レート制限(429)・上流エラー(503)時は定型文を返す。 - プロンプトの禁止事項(売買助言・予測・煽動表現・数値補完の禁止)は**設計上の拘束**であり、出力の完全性を保証しない。違反出力を発見した場合は info@fxir.jp へ(訂正義務・第30条)。 ## 版履歴 - **v0.1**(2026-08-12): 初版。監査AUDIT-2026-08-12 C-4 対応として、サーバ側クランプの実装と同時に公開。 --- *為替介入研究所 | 本仕様のSHA-256は docs/HASHES.txt に掲載*