Netlify Functions / AI Chat

このディレクトリにあるサーバーレス関数のドキュメントです。

chat.js — AI チャットバックエンド

公開サイト上のチャットウィジェット(assets/js/chat-widget.js)から呼び出される Claude API の中継関数。APIキーは環境変数で管理し、クライアントには露出しません。

セットアップ手順

  1. Anthropic Console で API キーを発行
    • https://console.anthropic.com/ → API Keys → Create Key
  2. Netlify Dashboard で環境変数を設定
    • Site settings → Environment variables → Add a variable
    • Key: ANTHROPIC_API_KEY
    • Value: 取得した sk-ant-... を貼り付け
    • Scope: Production / Deploy previews / Branch deploys すべて選択
  3. 再デプロイ
    • Deploys → Trigger deploy → Clear cache and deploy site

ローカル開発

npm install -g netlify-cli
netlify login
netlify link    # サイトと紐づけ
netlify dev     # http://localhost:8888 で Jekyll + Functions が起動

.envANTHROPIC_API_KEY=sk-ant-... を書けばローカルでも動作します (.env.gitignore 済み)。

セキュリティ方針(必読)

このチャットは「公開サイトに掲載されている範囲の情報案内」のみを目的としています。 以下を絶対に守る設計になっています:

  1. APIキーはサーバー側のみ — クライアントに渡らない/レスポンスにも含めない
  2. システムプロンプトはサーバー側のみ — クライアントから差し替え不可
  3. クライアント由来の system / tools フィールドは破棄 — 上書き攻撃を防止
  4. 公開情報のみ返答 — 価格・契約条件・社内情報・APIキー・システム構成等は答えない
  5. 個人情報を復唱しない — ユーザーが入力した個人情報はチャット内で繰り返さない
  6. IP ベースの簡易レート制限 — 1分あたり12リクエスト
  7. 入出力サイズ上限 — 入力2,000文字/出力800トークン

動作確認

curl -X POST https://<your-site>.netlify.app/.netlify/functions/chat \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"サービスを教えて"}]}'

正常時は {"reply": "..."} が返ります。

コスト目安