Skip to content

設定リファレンス

設定は config.json で管理します。リポジトリには config.json.template(値を空にしたテンプレート)を同梱しています。

bash
cp config.json.template config.json
# config.json を編集

WARNING

config.json.gitignore に含まれているため、Git でバージョン管理されません。機密情報を安全に保管してください。

必須項目

キー説明
discord_tokenDiscord Bot トークン
encryption_master_keyLLM API キー暗号化用の Fernet キー

Bot 動作設定

キー説明デフォルト
db_pathSQLite データベースのパスideal_bot.db
category_normalizationカテゴリ正規化方式 (reading / vector)reading
sentence_transformer_modelSentenceTransformers モデル名paraphrase-multilingual-MiniLM-L12-v2
delay_read_min読み取り遅延の最小秒数10
delay_read_max読み取り遅延の最大秒数30
delay_type_cpsタイピング速度(文字/秒)5
conversation_log_retention_days会話ログの保持日数7

Web 管理画面設定

キー説明デフォルト
web_url管理画面の公開 URL。discord_redirect_urifrontend_url の導出に使われますhttp://localhost:8000
discord_client_idDiscord OAuth2 クライアント ID""
discord_client_secretDiscord OAuth2 クライアントシークレット""
discord_redirect_uriOAuth2 コールバック URI。省略時は web_url + "/auth/callback"(自動導出)
session_secretセッション署名キー(ランダムな長い文字列)""
bot_admin_idsBot 管理者の Discord ユーザー ID のリスト[]
web_hostAPI サーバーのバインドアドレス0.0.0.0
web_portAPI サーバーのポート番号8000
frontend_urlフロントエンドの URL(CORS 設定用)。省略時は web_url と同じ値(自動導出)

web_hostweb_portdiscord_redirect_urifrontend_url は通常 config.json に記載不要です。
Docker 環境では web_hostweb_portdb_path が Dockerfile の ENV で自動設定されます。

サンプル config.json

json
{
  "discord_token": "MTIz...(Botトークン)",
  "encryption_master_key": "abc123...(Fernetキー)",

  "db_path": "ideal_bot.db",
  "category_normalization": "reading",
  "sentence_transformer_model": "paraphrase-multilingual-MiniLM-L12-v2",

  "delay_read_min": 10,
  "delay_read_max": 30,
  "delay_type_cps": 5,
  "conversation_log_retention_days": 7,

  "discord_client_id": "1234567890",
  "discord_client_secret": "abc...(クライアントシークレット)",
  "web_url": "https://your-domain.com",
  "session_secret": "ランダムな長い文字列(32文字以上推奨)",
  "bot_admin_ids": ["あなたのDiscordユーザーID"]
}

Fernet キーの生成

bash
uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

カテゴリ正規化モード

category_normalization の設定値によりカテゴリの重複検出方式が変わります。

モード説明特徴
readingpykakasi でひらがな読みに変換して比較軽量・デフォルト
word表記そのままで比較(完全一致)厳密一致
vectorSentenceTransformers で意味的類似度を比較(閾値: 0.85)高精度・重い

vector モードの動作:
/teach で新しいカテゴリを入力すると、既存カテゴリとのコサイン類似度を計算します。
類似度が 0.85 以上のカテゴリが見つかった場合、入力されたカテゴリはその既存カテゴリに統合されます。
例:「形容詞」登録済みの状態で「けいようし」と入力 → 自動的に「形容詞」として登録されます。

SentenceTransformers モデル候補

モデル名サイズ特徴
paraphrase-multilingual-MiniLM-L12-v2118MB軽量・高速・推奨
multilingual-e5-small118MBE5 系列・高精度
paraphrase-multilingual-mpnet-base-v2278MBより高精度
multilingual-e5-base278MBバランス型
cl-nagoya/sup-simcse-ja-base111MB日本語専用・高精度

モデルは初回起動時に Hugging Face から自動ダウンロードされ、~/.cache/huggingface/ にキャッシュされます。

Released under the MIT License.