- Add a password-protected /api/settings endpoint (HTTP Basic auth, backend/app/core/auth.py) backed by a DB-stored allowlist of connection settings (OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS creds, OLLAMA_API_BASE, TAVILY_API_KEY, LOCAL_KB_EMBEDDING_MODEL). Saved values override .env and apply immediately via os.environ, so Lightsail deployments no longer need SSH + `.env` edits to rotate keys. Values are always returned masked to the frontend. - Replace ModelSelector.vue's hardcoded model list with a DB-backed /api/models CRUD API (read is public, writes reuse the settings password) so the chat model dropdown can be edited from the GUI; seed it once with the previous hardcoded presets on first boot. - Fix local_knowledge.py reading LOCAL_KB_EMBEDDING_MODEL once at import time instead of per-call, which would have silently ignored GUI/DB overrides for the embedding model. - Add SettingsPanel.vue (API keys + model management UI) and document the new SETTINGS_PASSWORD env var in .env.example and the Lightsail deploy guide. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
2.5 KiB
Bash
63 lines
2.5 KiB
Bash
# LLM設定
|
|
DEFAULT_MODEL=gpt-5.4
|
|
# OpenAI
|
|
OPENAI_API_KEY=sk-...
|
|
# Anthropic
|
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
# Ollama (ローカル) — APIキー不要、モデル名は ollama/llama3 形式で指定
|
|
OLLAMA_API_BASE=http://localhost:11434
|
|
# Amazon Bedrock (IAM経由 — Access Key方式) — モデル名は bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0 形式で指定
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
AWS_REGION_NAME=us-east-1
|
|
# 旧: API key方式(Bearer Token)。IAMを使う場合は不要
|
|
AWS_BEARER_TOKEN_BEDROCK=
|
|
|
|
# デバッグ (true にすると LiteLLM の詳細ログが出力される)
|
|
DEBUG=false
|
|
|
|
# GUIの「設定」画面(APIキー等の変更)を保護する簡易パスワード。
|
|
# 未設定だと設定画面は常に403で拒否される(=GUIからのAPIキー変更機能を使わないなら空でよい)。
|
|
# HTTPS化していない環境ではBasic認証の資格情報が平文で流れるため、公開環境ではHTTPS化とセットで使うこと。
|
|
SETTINGS_PASSWORD=
|
|
|
|
# Tavily Web検索(未設定だとweb_searchツールは何も検索せず空振りする)
|
|
TAVILY_API_KEY=
|
|
# 蓄積知識をシステムプロンプトに注入する際の最大件数
|
|
KNOWLEDGE_CONTEXT_LIMIT=15
|
|
# Web検索結果を構造的な要約にまとめる際に使うモデル(未設定ならDEFAULT_MODELを使用)
|
|
SEARCH_SUMMARY_MODEL=
|
|
|
|
# ローカルMarkdownナレッジベース(backend/knowledge_base/ 配下のファイルを話題に応じて注入)
|
|
LOCAL_KB_DIR=knowledge_base
|
|
# Ollamaを使う場合は ollama/nomic-embed-text のように指定(OLLAMA_API_BASEも参照される)
|
|
LOCAL_KB_EMBEDDING_MODEL=text-embedding-3-small
|
|
LOCAL_KB_TOP_K=3
|
|
LOCAL_KB_MIN_SCORE=0.75
|
|
|
|
# 天気予報 → Discord 通知
|
|
DISCORD_WEBHOOK_URL=
|
|
WEATHER_AREA_CODE=120000
|
|
WEATHER_AREA_KEYWORD=北西部
|
|
WEATHER_NOTIFY_HOUR=22
|
|
WEATHER_NOTIFY_MINUTE=0
|
|
# 通知文をLLMで生成する場合のモデル(未設定ならDEFAULT_MODELを使用)
|
|
WEATHER_NOTIFY_MODEL=
|
|
|
|
# Discord Bot(メンションへの自動返信用)
|
|
DISCORD_BOT_TOKEN=
|
|
# 未設定ならデフォルトの「お天気アプリ」ペルソナが使われる
|
|
DISCORD_BOT_SYSTEM_PROMPT=
|
|
|
|
# どうでもいいtipsを定期的にDiscordへ投稿
|
|
USELESS_TIPS_ENABLED=false
|
|
USELESS_TIPS_INTERVAL_HOURS=3
|
|
USELESS_TIPS_MODEL=
|
|
# 未設定ならDISCORD_WEBHOOK_URL(天気通知と同じ)を使う
|
|
DISCORD_WEBHOOK_URL_TIPS=
|
|
|
|
# アプリ設定
|
|
DATABASE_URL=sqlite:///./playchat.db
|
|
MEMORY_SUMMARIZE_THRESHOLD=20
|
|
CORS_ORIGINS=http://localhost:5173
|