セットアップ: SearXNG
SearXNG を使用して、プライベートの自己ホスト型Web検索をTomoriBotに追加します。
web_searchツールは、エンジンフォールバックチェーン (Brave、SearXNG、DuckDuckGo) をクエリします。ローカルのSearXNGインスタンスを実行すると、外部プロバイダーがレート制限に達するか失敗したときに自己ホスト型の検索ソースが提供され、特殊な検索カテゴリ (science、it、files、およびmusic) が有効になります。
セットアップパスを選択します。
オプションA: Docker Compose (TomoriBotがDockerで実行される場合)
Section titled “オプションA: Docker Compose (TomoriBotがDockerで実行される場合)”リポジトリのDocker ComposeスタックでTomoriBotを実行する場合は、このパスを使用します。次に、searxngプロファイルを使用して実行します。
docker compose --profile searxng up -dこのプロファイルを開始する前に、.envにSEARXNG_BASE_URL=http://searxng:8080/を設定してください。ボットはそのアドレスを使用してsearxngサービスにアクセスします。プロファイルがオフの場合は、変数を未設定のままにしておきます。
TomoriBotをbun run devとともに直接実行する場合は、代わりに以下のスタンドアロンパスを使用してください。
.envのSEARXNG_SECRETを、コンテナーの署名キーの別のランダムな値に設定します。
オプションB: スタンドアロンDocker (bun run dev実行時)
Section titled “オプションB: スタンドアロンDocker (bun run dev実行時)”まず、ボットが接続先を認識できるように、.envにSEARXNG_BASE_URL=http://localhost:8080/を設定します。
次に、TomoriBotをbun run devで直接実行する代わりに、bun run launch --searxngを使用します。これにより、コンテナーのライフサイクルが自動的に処理され、コンテナーが正常になるまで待機してからボットが開始されます。
bun run launch --searxngコンテナを自分で管理したい場合は、SEARXNG_BASE_URL=http://localhost:8080/を.envのままにしておきます。最初にリポジトリのイメージを構築して、JSON検索設定をロードし、署名キーを置き換えます。
docker build -t tomoribot-searxng:latest -f servers/searxng/Dockerfile servers/searxng次に、それを実行します。
パワーシェル:
docker run -d --name searxng -p 8080:8080 ` --tmpfs /etc/searxng ` tomoribot-searxng:latestBash (Linux/macOS):
docker run -d --name searxng -p 8080:8080 \ --tmpfs /etc/searxng \ tomoribot-searxng:latest次に、コンテナーが正常になったら、bun run devを実行します (docker psは(healthy)を示します)。コンテナー環境にSEARXNG_SECRETがないと、イメージは一時的な署名キーを生成します。
オプションC: SearXNGなし
Section titled “オプションC: SearXNGなし”SEARXNG_BASE_URLは未設定のままにしておきます。チェーンはBrave → DuckDuckGoにフォールバックします。
SearXNGサーバーが構成されていない場合、アセンブルされたweb_searchスキーマはSearXNGのみのカテゴリをアドバタイズしなくなります。Braveが設定されている場合でも、共通カテゴリ (text、image、video、news) が表示され、組み込みのDuckDuckGoフォールバックのみが使用可能な場合はテキストのみの検索が表示されます。
画像結果のチューニング
Section titled “画像結果のチューニング”SearXNG画像結果はHEAD検証され、必要に応じて圧縮され、Discord添付ファイルとして投稿されます。これはBrave画像と同一のUXです。すべての候補URLが検証に失敗した場合、SearXNGはハード失敗ではなく画像リンクのテキストリストを返します。
| 変数 | デフォルト | 説明 |
|---|---|---|
SEARXNG_IMAGE_COUNT | 3 (最大10) | Discordに送信される有効な画像の数。LLMのcount引数によってオーバーライドされます。 |
SEARXNG_IMAGE_POOL | 10 | LLMがcountを指定しない場合の候補URLプール。countが指定されている場合、ホットリンク保護の障害を吸収するために、プールはcount × 3 (上限は30) になります。 |
WEB_SEARCH_TIMEOUT_MS | — | エンジンごとのリクエストのタイムアウト。 |
(すべての調整可能パラメータについては、.env.optional.exampleを参照してください。)