Documentation Index
Fetch the complete documentation index at: https://docs.fim.ai/llms.txt
Use this file to discover all available pages before exploring further.
すべての設定は .env を使用して行われます。example.env をコピーして値を入力してください:
設定レベル
各統合には、その重要度を示す設定レベルがあります:
| レベル | 意味 | 設定されていない場合の動作 |
|---|
| Required | コアシステム依存 | システムがエラーになります — チャットと主要機能は動作しません |
| Recommended | 重要な機能の有効化 | グレースフルデグラデーション — 機能は目に見える形で利用不可になりますが、システムは実行されます |
| Optional | 拡張機能 | 透過的デグラデーション — システムは正常に動作し、機能は単に存在しません |
注: 管理者が設定したモデル(Admin → Models ページ)は、LLM 環境変数の代わりになります。ヘルスチェックは両方のソースを考慮します。
フロントエンド(ローカル開発のみ)
フロントエンドにはローカル開発のみの別の環境ファイルがあります:frontend/.env.local。
このファイルは Docker では使用されません。 Docker コンテナ内では、Next.js が /api/* を Python バックエンドに内部的にプロキシします(ポート 8000 はコンテナ内部)ため、フロントエンド環境ファイルは不要です。
ローカル開発では、デフォルト設定がそのまま機能します — バックエンドがデフォルトポートで実行されている場合、frontend/.env.local を作成する必要はありません。
オーバーライドが必要な場合は、frontend/.env.local を手動で作成してください:
echo 'NEXT_PUBLIC_API_URL=http://localhost:9000' > frontend/.env.local
| 変数 | デフォルト | 説明 |
|---|
NEXT_PUBLIC_API_URL | http://localhost:8000 (自動) | ブラウザが直接 API 呼び出し(OAuth リダイレクト、ストリーミング)に使用するバックエンド URL。未設定の場合は window.location から自動検出されます — ローカルでバックエンドが非標準ポートで実行されている場合のみオーバーライドしてください。 |
ビルド時の注意:NEXT_PUBLIC_* 変数は pnpm build 時に JS バンドルに埋め込まれます。実行時に変更する場合(例:ルート .env 経由)は効果がありません — これが、ローカル開発のみで frontend/.env.local に配置される理由です。
LLM (必須)
| 変数 | 必須 | デフォルト | 説明 |
|---|
LLM_API_KEY | はい | — | LLM プロバイダーの API キー |
LLM_BASE_URL | いいえ | https://api.openai.com/v1 | OpenAI 互換 API のベース URL |
LLM_MODEL | いいえ | gpt-4o | メインモデル — 計画、分析、ReAct 智能体に使用 |
FAST_LLM_MODEL | いいえ | (LLM_MODEL にフォールバック) | 高速モデル — DAG ステップ実行に使用 (低コスト、高速) |
LLM_TEMPERATURE | いいえ | 0.7 | デフォルトサンプリング温度 |
LLM_CONTEXT_SIZE | いいえ | 128000 | メイン LLM の上下文窓口サイズ |
LLM_MAX_OUTPUT_TOKENS | いいえ | 64000 | メイン LLM の呼び出しあたりの最大出力 token 数 |
FAST_LLM_API_KEY | いいえ | (LLM_API_KEY にフォールバック) | 高速モデルプロバイダーの API キー。高速モデルがメインモデルと異なるプロバイダーでホストされている場合に使用 |
FAST_LLM_BASE_URL | いいえ | (LLM_BASE_URL にフォールバック) | 高速モデルプロバイダーのベース URL |
FAST_LLM_TEMPERATURE | いいえ | (LLM_TEMPERATURE にフォールバック) | 高速モデルのサンプリング温度 |
FAST_LLM_CONTEXT_SIZE | いいえ | (LLM_CONTEXT_SIZE にフォールバック) | 高速 LLM の上下文窓口サイズ |
FAST_LLM_MAX_OUTPUT_TOKENS | いいえ | (LLM_MAX_OUTPUT_TOKENS にフォールバック) | 高速 LLM の呼び出しあたりの最大出力 token 数 |
LLM_REASONING_EFFORT | いいえ | (無効) | サポートされているモデルの拡張思考レベル (OpenAI o シリーズ、Gemini 2.5+、Claude)。値: low、medium、high。LiteLLM は各プロバイダーのネイティブ形式に自動的に変換します。モデルの思考プロセスは UI の「thinking」ステップに表示されます。 |
LLM_REASONING_BUDGET_TOKENS | いいえ | (努力レベルから自動) | Anthropic 思考の明示的な token 予算 (最小 1024)。OpenAI/Gemini の場合、努力レベルが直接使用されます。LLM_REASONING_EFFORT が設定されている場合のみ有効です。 |
LLM_JSON_MODE_ENABLED | いいえ | true | response_format=json_object のグローバルトグル。プロバイダーが LiteLLM のアシスタントプリフィル注入を拒否する場合は false に設定します (例: AWS Bedrock リレー → 2 回目以降の智能体反復で ValidationException)。無効にすると、構造化呼び出しは JSON モードをスキップし、プレーンテキスト正規表現抽出にフォールバックします — 品質低下なし。すべてのモデル (ENV 設定および Admin 設定) に適用されます。 |
LLM_TOOL_CHOICE_ENABLED | いいえ | true | 構造化出力抽出での強制 tool_choice のグローバルトグル (レベル 1 — ネイティブ関数呼び出し)。モデルが強制ツール選択でエラーを返す場合は false に設定します (例: tool_choice='specified' を拒否する思考モードモデル)。無効にすると、構造化呼び出しはネイティブ FC をスキップし、JSON モードから開始します。モデルごとのオーバーライドは Settings → Models → Advanced で利用可能です。 |
REASONING_LLM_MODEL | いいえ | (LLM_MODEL にフォールバック) | 推理層のモデル名。深い分析が必要なタスク (例: DAG 計画、計画分析) に使用 |
REASONING_LLM_API_KEY | いいえ | (LLM_API_KEY にフォールバック) | 推理モデルプロバイダーの API キー |
REASONING_LLM_BASE_URL | いいえ | (LLM_BASE_URL にフォールバック) | 推理モデルプロバイダーのベース URL |
REASONING_LLM_TEMPERATURE | いいえ | (LLM_TEMPERATURE にフォールバック) | 推理モデルのサンプリング温度 |
REASONING_LLM_CONTEXT_SIZE | いいえ | (LLM_CONTEXT_SIZE にフォールバック) | 推理モデルの上下文窓口サイズ |
REASONING_LLM_MAX_OUTPUT_TOKENS | いいえ | (LLM_MAX_OUTPUT_TOKENS にフォールバック) | 推理モデルの呼び出しあたりの最大出力 token 数 |
REASONING_LLM_EFFORT | いいえ | (LLM_REASONING_EFFORT にフォールバック) | 推理モデル層の推理努力レベル。値: low、medium、high |
REASONING_LLM_BUDGET | いいえ | (LLM_REASONING_BUDGET_TOKENS にフォールバック) | 推理の token 予算 (主に Anthropic)。推理層の自動計算予算をオーバーライドします |
LLM_SUPPORTS_VISION | いいえ | true (楽観的) | ENV モードドキュメント OCR (MarkItDown + markitdown-ocr 経由) を試みるかどうかを制御します。Admin → Models で有効なモデルグループが設定されていない場合のみ適用 (純粋な ENV モード)。デフォルトの true が有効な場合、convert_to_markdown と RAG 取り込みは LLM_MODEL がビジョンをサポートしていると想定し、画像 OCR のために呼び出します — これはすべての一般的な選択肢 (gpt-4o、claude-3-5-sonnet、gemini-1.5-pro/flash) に対して正しい動作です。ENV 設定の LLM_MODEL がビジョンをサポートしていない場合 (例: deepseek-v3、qwen-chat、llama-3.1、gpt-3.5-turbo、o1-mini)、このフラグを false に設定して失敗するビジョン呼び出しをスキップし、テキストのみの抽出に直接進みます。Admin → Models パネルに有効なモデルグループが存在する場合、このフラグは無視され、グループの supports_vision フラグが優先されます — admin がキュレーションした選択は常に DB モードの信頼できるソースです。 |
解決順序: ユーザー設定 → Admin モデル (DB) → ENV フォールバック。Admin → Models で「General」ロールのモデルが設定されている場合、これらの ENV 変数はフォールバックのみとして機能します。ヘルスチェックは両方のソースを考慮します。
MarkItDown OCR 解像度
convert_to_markdown 組み込みツールと RAG 取り込みパイプラインは、Microsoft の MarkItDown と公式の markitdown-ocr プラグインを使用して、ドキュメントからテキストを抽出します。ビジョン対応 LLM が利用可能な場合、埋め込み画像とスキャン PDF ページの OCR も含まれます。
Vision LLM 解像度順序(最初にマッチしたものが優先):
| # | ソース | 優先度の根拠 |
|---|
| 1 | エージェントのプライマリ LLM(supports_vision=True の場合) | 一貫性:同じ API キー、同じ課金バケット、会話と同じレート制限プール。 |
| 2 | アクティブなModelGroup → Fast Model(supports_vision=True の場合) | Fast モデル(gpt-4o-mini、claude-haiku、gemini-1.5-flash)は理想的な OCR ワークホース — 低コスト、低レイテンシ、通常はマルチモーダル。 |
| 3 | アクティブなModelGroup → General Model(supports_vision=True の場合) | プライマリがグループに含まれていない場合の品質フォールバック。 |
| 4 | ENV プライマリ LLM(LLM_MODEL) | 純粋な ENV モード用の楽観的フォールバック。アクティブな ModelGroup が存在しない場合のみ使用。LLM_SUPPORTS_VISION でゲート制御。 |
推理モデルは OCR に優先されません。 推理層(o1、o3-mini、DeepSeek-R1)は歴史的にビジョンサポートが不足しており、OCR には不適切なツールです — OCR は知覚タスクであり、熟考ではありません。ワークスペースに supports_vision=True の推理モデルのみがある場合、プライマリ LLM パスを介して選択されますが、リゾルバーは fast/general より上にランク付けしません。
ゼロリグレッション フォールバック:どのレベルでもビジョン対応モデルが見つからない場合、OCR は静かに無効化され、MarkItDown はテキストのみモードで実行されます。Word/PowerPoint/Excel 埋め込み画像 OCR は利用不可になります(この機能がリリースされる前と同じ)が、その他すべてのテキスト抽出(見出し、表、段落テキスト)は変わらず機能し続けます。この機能を追加することで、抽出が以前の動作より悪くなるケースは決してありません。
非 OpenAI プロバイダー(Anthropic、Google Gemini など) は透過的にサポートされます:解像度された LLM は LiteLLMOpenAIShim でラップされ、chat.completions.create(...) 呼び出しを litellm.completion() 経由でルーティングします。これはプロバイダー固有のメッセージ形式変換(例:Anthropic の source.type="base64" 画像ブロック)を処理します。1 つのシムが LiteLLM がサポートするすべてのプロバイダーをカバーします — 新しいプロバイダーを追加するのに FIM One でのコード変更はゼロです。
拡張思考(推論)
LLM_REASONING_EFFORT が設定されると、FIM One はモデルの拡張思考機能を有効にし、内部の思考の連鎖を UI の「thinking」ステップで表示します。FIM One は LiteLLM を使用して、推論努力パラメータを各プロバイダーのネイティブ形式に自動的に変換します。
サポートされているプロバイダー
| プロバイダー | LLM_BASE_URL | 動作方法 | 推論コンテンツが返されるか? |
|---|
| OpenAI (o1 / o3 / o4-mini) | https://api.openai.com/v1 | reasoning_effort がネイティブで送信される | はい |
| Anthropic (Claude 3.7+) | https://api.anthropic.com/v1/ | LiteLLM が thinking パラメータを使用してネイティブ Anthropic API 経由でルーティング | はい |
| Google Gemini (2.5+) | https://generativelanguage.googleapis.com/v1beta/openai/ | reasoning_effort が互換エンドポイントで送信される | はい |
LiteLLM は LLM_BASE_URL からプロバイダーを自動検出し、正しい API 形式にマッピングします。不明な URL は OpenAI 互換として扱われます。
重要な注意事項
サードパーティプロキシ / カスタムエンドポイントは保証されません。
LLM_BASE_URL がサードパーティ API プロキシ (例: OpenRouter、one-api、カスタムゲートウェイ) を指している場合、LiteLLM は URL に基づいて正しくルーティングしようとします。ただし、プロキシが非標準形式を期待している場合、推論が期待どおりに機能しない可能性があります。プロキシのドキュメントで、期待されるパラメータ形式を確認してください。
推論を伴う温度制約
推論がアクティブな場合、一部のプロバイダーは温度制限を課します:
- Anthropic: 拡張思考が有効な場合、
temperature=1 が必須です。Anthropic と拡張思考を使用する場合、LLM_TEMPERATURE=1 を設定する必要があります — 思考が有効な場合、Anthropic は他の値を拒否します。
- OpenAI GPT-5.x: すべての場合において
temperature=1 のみをサポートしています。LiteLLM の drop_params フィルタリングはこれを自動的に処理します — サポートされていない温度値は自動的にドロップされます。GPT-5.x の場合、ユーザーアクションは不要です。
LLM_REASONING_BUDGET_TOKENS の動作方法
この変数は主にAnthropicパスで意味があります。設定されると、自動計算されたバジェットをオーバーライドし、LiteLLM経由でthinkingパラメータ内のbudget_tokensとして送信されます。設定されない場合、バジェットはLLM_MAX_OUTPUT_TOKENS x努力比率から導出されます:
LLM_REASONING_EFFORT | バジェット比率 | 例(max_tokens = 64000) |
|---|
low | 20% | 12,800トークン |
medium | 50% | 32,000トークン |
high | 80% | 51,200トークン |
最小バジェットは1,024トークンです(Anthropicのハード最小値)。
OpenAIとGeminiの場合、プロバイダーはreasoning_effortレベルに基づいてトークン割り当てを内部的に処理します — LLM_REASONING_BUDGET_TOKENSは効果がありません。
エージェント実行
ReAct 智能体
| 変数 | 必須 | デフォルト | 説明 |
|---|
REACT_MAX_ITERATIONS | いいえ | 20 | ReAct リクエストあたりのツール呼び出しの最大反復回数。高いほど徹底的ですが、遅く、コストがかかります |
REACT_MAX_TURN_TOKENS | いいえ | 0 | 緊急サーキットブレーカー: 単一の ReAct ターンあたりの最大累積トークン数(すべての反復にわたるプロンプト + 完了)。デフォルト 0 = 無制限。これは日次トークン制御用ではありません — その場合は per-user token_quota を使用してください。これは、ツール呼び出しループに陥った智能体など、極端なシナリオに対する最後の手段のセーフティバルブです。この制限に達すると、タスクは実行途中で中止され、これまでに消費されたすべてのトークンが無駄になり、不完全な結果が返されます。暴走する智能体の問題を含める必要がある場合を除き、0 のままにしてください |
REACT_TOOL_SELECTION_THRESHOLD | いいえ | 12 | 登録されたツールの総数がこのしきい値を超える場合、軽量な LLM 呼び出しが各リクエストの前に最も関連性の高いサブセットを選択します |
REACT_TOOL_SELECTION_MAX | いいえ | 6 | スマート選択後に保持するツールの最大数(ツール数が REACT_TOOL_SELECTION_THRESHOLD を超える場合のみ有効) |
REACT_SELF_REFLECTION_INTERVAL | いいえ | 6 | N 回のツール呼び出しごとに自己反省プロンプトを挿入して、智能体がコース修正を行い、ループを回避するのに役立ちます |
REACT_TOOL_OBS_TRUNCATION | いいえ | 8000 | 最終回答を合成するときのツール観測あたりの最大文字数。高い値はより多くの構造化データ(JSON、テーブル)を保持しますが、トークンコストが増加します |
REACT_TOOL_RESULT_BUDGET | いいえ | 40000 | 単一セッション内のすべてのツール結果の集計トークン予算。ツール結果トークンの合計がこの上限を超える場合、新しい結果は通知付きで切り詰められます。大規模な API レスポンス(例:5 つのコネクタ呼び出しが各 8K を返す)からのコンテキスト肥大化を防ぎます。キャップを無効にするには 0 に設定します |
REACT_COMPLETION_CHECK_SKIP_CHARS | いいえ | 800 | 智能体の最終回答がこの多くの文字を超える場合、回答後の完了チェック LLM 呼び出しをスキップします。長い詳細な回答は「何か見落としましたか?」の検証ラウンドトリップを必要としません。より積極的にスキップするには低く設定します。常にチェックを実行するには非常に大きな値に設定します |
REACT_CYCLE_DETECTION_THRESHOLD | いいえ | 2 | 同じツールが同じ引数で連続してこの回数呼び出される場合、決定論的な警告が挿入され、智能体に別のアプローチを試すよう指示します。自己反省(LLM がループに気付くことに依存)とは異なり、これはバイパスできないハッシュベースのチェックです。DAG ステップにも適用されます |
REACT_COMPLETION_CHECK_MIN_TOOLS | いいえ | 3 | 完了チェックリストが発火する前のツール呼び出しの最小数。シンプルなタスク(1~2 ツール呼び出し)は不要なレイテンシを回避するため検証をスキップします。常時検証を行うには 1 に設定します。DAG ステップにも適用されます |
REACT_TURN_PROFILE_ENABLED | いいえ | true | ターンごとのフェーズレベルのタイミングログ(memory_load、compact、tool_schema_build、llm_first_token、llm_total、tool_exec)を出力します。ターンあたり 1 つの構造化ログ行。プロファイリング全体を無効にするには false に設定します(ゼロオーバーヘッド) |
LLM_RATE_LIMIT_PER_USER | いいえ | true | 単一のプロセスグローバルバケットの代わりに、per-user キー付きレート制限バケットを使用します。1 つのノイジーなユーザーが同じワーカー上の他のすべてのユーザーを枯渇させるのを防ぎます。基盤となるレートはバケットあたり 60 リクエスト/分および 100K トークン/分でハードコードされています — この設定はバケットが共有(グローバル)か分割(per-user)かのみを制御します。レガシーグローバルバケットに戻すには false に設定します(推奨されません) |
DAG プランナー
| 変数 | 必須 | デフォルト | 説明 |
|---|
MAX_CONCURRENCY | いいえ | 5 | DAG エグゼキューターの最大並列ステップ数 |
DAG_STEP_MAX_ITERATIONS | いいえ | 15 | 各 DAG ステップ内の最大ツール呼び出し反復回数 |
DAG_STEP_TIMEOUT | いいえ | 600 | ステップ実行タイムアウト(秒単位)。このタイムアウトを超えたステップは失敗とマークされ、依存するステップはカスケードスキップされます |
DAG_MAX_REPLAN_ROUNDS | いいえ | 3 | 目標が達成されない場合の最大自動再計画試行回数。ユーザー割り込み(注入)は無制限であり、このバジェットにはカウントされません |
DAG_REPLAN_STOP_CONFIDENCE | いいえ | 0.8 | エージェントの目標が達成不可能であるという確信度がこのしきい値を超えた場合に再試行を停止します(0.0 = 早期停止しない、1.0 = 任意の失敗で停止) |
DAG_VERIFY_TRUNCATION | いいえ | 2000 | ステップ出力の最大文字数。ステップ検証器 LLM に品質判定のために送信されます |
DAG_ANALYZER_TRUNCATION | いいえ | 10000 | 実行後アナライザーのフォーマット時のステップ結果あたりの最大文字数 |
DAG_REPLAN_RECENT_TRUNCATION | いいえ | 500 | 再計画コンテキスト構築時の最新ラウンドからのステップ結果あたりの最大文字数 |
DAG_REPLAN_OLDER_TRUNCATION | いいえ | 200 | 再計画コンテキスト構築時の古いラウンドからのステップ結果あたりの最大文字数。古いラウンドはコンテキストを節約するためにより積極的に切り詰められます |
DAG_TOOL_CACHE | いいえ | true | 単一の DAG 実行内で同一のツール呼び出しをキャッシュします。cacheable として明示的にマークされたツール(検索、知識検索などの読み取り専用ツール)のみがキャッシュされます。キャッシュを完全に無効にするには false に設定してください |
DAG_STEP_VERIFICATION | いいえ | false | 各 DAG ステップ後の汎用 LLM ベースの品質チェック。失敗時は、ステップはフィードバック付きで 1 回再試行されます。デフォルトでオフ — すべてのステップに遅延を追加し、ほとんど必要ありません。ステップ出力の大部分は再チェックなしで受け入れられます。低品質なステップ結果が頻繁に発生する場合にのみ使用してください |
DAG_CITATION_VERIFICATION | いいえ | true | 専門分野ステップの引用精度チェック。前提条件: クエリは最初に LLM ドメイン分類器によって専門分野として分類される必要があります(ESCALATION_DOMAINS を参照)。ドメインが検出され、このフラグが true の場合、完了した各ステップは法律/医療/金融引用についてスキャンされ、精度が検証されます — ハルシネーションされた記事番号、捏造された判例参照、および不正な規制引用を検出します。ドメイン分類が null(一般的なクエリ)を返す場合、この設定に関係なく引用検証は実行されません |
DAG_CITATION_VERIFY_TRUNCATION | いいえ | 6000 | 引用検証プロンプトに送信されるステップ結果の最大文字数 |
ドメイン分類
ReAct と DAG 実行の前に実行される独立した LLM ベースのドメイン検出レイヤーを制御します。クエリが専門ドメインとして分類されると、システムはドメイン対応機能をアクティブ化します:モデルのエスカレーション、ドメイン固有の SOP 指示、および引用検証(DAG のみ)。
| 変数 | 必須 | デフォルト | 説明 |
|---|
ESCALATION_DOMAINS | いいえ | legal,medical,financial,tax,compliance,patent | 専門ドメインのカンマ区切りリスト。高速 LLM が各クエリをこのリストに対して分類します。マッチした場合、システムは以下を実行します:(1) より高い精度を得るために推論モデルにアップグレード、(2) ドメイン固有の SOP 指示を注入(例:書き込み前に検索で引用を検証)、(3) DAG ステップの引用検証を有効化。必要に応じてカスタムドメインを追加します(例:legal,education,construction) |
Context Guard
会話がモデルの制限を超えるのを防ぐ自動コンテキストウィンドウ管理を制御します。
| Variable | Required | Default | Description |
|---|
CONTEXT_GUARD_DEFAULT_BUDGET | No | 32000 | コンテキストウィンドウ管理のデフォルトトークン予算。会話がこれを超えると、古いメッセージが圧縮されます |
CONTEXT_GUARD_MAX_MSG_CHARS | No | 50000 | 単一メッセージの厳密な文字制限。この制限を超えるメッセージは安全ネットとして切り詰められます |
CONTEXT_GUARD_KEEP_RECENT | No | 4 | 会話履歴を圧縮する際に保持する最新メッセージの数 |
エージェント ワークスペース
| 変数 | 必須 | デフォルト | 説明 |
|---|
WORKSPACE_OFFLOAD_THRESHOLD | いいえ | 8000 | ツール出力がこの文字数を超える場合、ワークスペース ファイルに保存され、切り詰められたプレビューが会話コンテキストに挿入されます |
WORKSPACE_PREVIEW_CHARS | いいえ | 2000 | 切り詰められたワークスペース参照に含めるプレビュー文字数 |
WORKSPACE_CLEANUP_MAX_HOURS | いいえ | 72 | この時間数より古いワークスペース ファイルは自動クリーンアップの対象になります |
システム
| 変数 | 必須 | デフォルト | 説明 |
|---|
SYSTEM_PROMPT_RESERVE | — | — | 削除されました。 以前はコンテキスト予算からシステムプロンプト用に固定の4K予約を差し引いていました。ContextGuardはメッセージリストトークンを推定する際にシステムプロンプトを既に含めているため、二重計算が発生していました。予算計算式は現在単純に context_size - max_output_tokens となり、システムプロンプトの実際のサイズは動的に考慮されます |
Webツール(オプション)
| 変数 | 必須 | デフォルト | 説明 |
|---|
JINA_API_KEY | いいえ | — | Jina APIキー。検索、フェッチ、埋め込み、リランカーのための共有フォールバックとして機能します(サービス固有のキーが設定されていない場合)。jina.aiで取得してください |
TAVILY_API_KEY | いいえ | — | Tavily Search APIキー(設定されておりWEB_SEARCH_PROVIDERが未設定の場合は自動選択) |
BRAVE_API_KEY | いいえ | — | Brave Search APIキー(設定されておりWEB_SEARCH_PROVIDERが未設定の場合は自動選択) |
EXA_API_KEY | いいえ | — | Exa Search APIキー(設定されておりWEB_SEARCH_PROVIDERが未設定の場合は自動選択)。exa.aiで取得してください |
WEB_SEARCH_PROVIDER | いいえ | jina | 検索プロバイダーセレクター:jina / tavily / brave / exa |
WEB_FETCH_PROVIDER | いいえ | jina(キーが設定されている場合、それ以外はhttpx) | フェッチプロバイダー:jina(Jina Reader APIを使用) / httpx(直接HTTPリクエスト、APIキー不要) |
クイックスタートのヒント:JINA_API_KEYを設定するだけで、Web検索、Webフェッチ、埋め込み、リランキングがすべて一度に有効になります — 1つのキーで4つのサービスが利用できます。以下の変数で各サービスを個別にオーバーライドできます。
RAG & ナレッジベース(推奨)
埋め込み
埋め込みはテキストをベクトルに変換し、ナレッジベース検索に使用します。FIM One は標準的な OpenAI互換の /v1/embeddings エンドポイントを使用するため、Jina だけでなく、このインターフェースを公開しているあらゆるプロバイダーで動作します。
| 変数 | 必須 | デフォルト | 説明 |
|---|
EMBEDDING_API_KEY | いいえ | (JINA_API_KEY にフォールバック) | 埋め込みプロバイダーの API キー |
EMBEDDING_BASE_URL | いいえ | https://api.jina.ai/v1 | 埋め込みプロバイダーのベース URL |
EMBEDDING_MODEL | いいえ | jina-embeddings-v3 | モデル識別子 |
EMBEDDING_DIMENSION | いいえ | 1024 | ベクトル次元 |
プロバイダーの例 — 3 つの変数を設定するだけで切り替えられます:
| プロバイダー | EMBEDDING_BASE_URL | EMBEDDING_MODEL | EMBEDDING_DIMENSION |
|---|
| Jina (デフォルト) | https://api.jina.ai/v1 | jina-embeddings-v3 | 1024 |
| OpenAI | https://api.openai.com/v1 | text-embedding-3-small | 1536 |
| Voyage | https://api.voyageai.com/v1 | voyage-3 | 1024 |
| Ollama (ローカル) | http://localhost:11434/v1 | nomic-embed-text | 768 |
埋め込みモデルまたは次元を変更すると、既存のすべてのナレッジベースベクトルが無効になります。 古いベクトルは異なる埋め込み空間で計算されているため、検索精度が静かに低下します。切り替え後は、すべてのナレッジベースインデックスを再構築する必要があります。
| 変数 | 必須 | デフォルト | 説明 |
|---|
RETRIEVAL_MODE | いいえ | grounding | grounding(引用と信頼度スコアリング付きの完全なパイプライン)またはsimple(基本的なRAG) |
Reranker
Rerankerは取得したドキュメントを再スコアリングして関連性を向上させます。3つのプロバイダーがサポートされており、RERANKER_PROVIDERで選択するか、利用可能なAPIキーからシステムに自動検出させることができます。
| 変数 | 必須 | デフォルト | 説明 |
|---|
RERANKER_PROVIDER | いいえ | (自動検出) | jina / cohere / openai。未設定の場合:COHERE_API_KEYが設定されていればCohereを使用、それ以外はJinaを使用 |
RERANKER_MODEL | いいえ | jina-reranker-v2-base-multilingual | モデル識別子(JinaおよびOpenAIプロバイダーに適用) |
COHERE_API_KEY | いいえ | — | Cohere APIキー(設定されておりRERANKER_PROVIDERが未設定の場合、Cohere rerankerを自動選択) |
COHERE_RERANKER_MODEL | いいえ | rerank-multilingual-v3.0 | Cohere固有のrerankerモデル |
JinaはJINA_API_KEYを使用します(上記のWeb Toolsから)。OpenAIはLLM_API_KEY / LLM_BASE_URLを再利用します — 追加キーは不要です。Cohereは独自のCOHERE_API_KEYが必要です。
Rerankerはオプションです — ナレッジベース検索はフュージョンスコアリングを使用して、これなしで機能します。埋め込みはナレッジベース機能に推奨されます。
ベクトルストア
| 変数 | 必須 | デフォルト | 説明 |
|---|
VECTOR_STORE_DIR | いいえ | ./data/vector_store | LanceDB ベクトルストアデータ用ディレクトリ(ファイルベース、外部サービス不要) |
コード実行
| 変数 | 必須 | デフォルト | 説明 |
|---|
CODE_EXEC_BACKEND | いいえ | local | local(ホスト上での直接実行)またはdocker(隔離されたコンテナ) |
DOCKER_PYTHON_IMAGE | いいえ | python:3.11-slim | Python実行用のDockerイメージ |
DOCKER_NODE_IMAGE | いいえ | node:20-slim | Node.js実行用のDockerイメージ |
DOCKER_SHELL_IMAGE | いいえ | python:3.11-slim | シェル実行用のDockerイメージ |
DOCKER_MEMORY | いいえ | (Dockerのデフォルト) | コンテナあたりのRAM上限(例:256m、512m、1g) |
DOCKER_CPUS | いいえ | (Dockerのデフォルト) | コンテナあたりのCPUクォータ(例:0.5、1.0) |
SANDBOX_TIMEOUT | いいえ | 120 | デフォルト実行タイムアウト(秒) |
DOCKER_HOST_DATA_DIR | いいえ | (未設定) | ./dataボリュームマウントのホスト側絶対パス。DooD(Docker-outside-of-Docker)デプロイメントに必須。docker-compose.ymlは${PWD}/data経由で自動設定します。 |
セキュリティ:localモードはAIが生成したコードをホスト上で直接実行します。インターネット公開またはマルチユーザーデプロイメントの場合は、常にCODE_EXEC_BACKEND=dockerを設定してください。
ツール成果物
ツール実行(コード実行、テンプレートレンダリング、画像生成)によって生成されたファイルのサイズ制限。
| 変数 | 必須 | デフォルト | 説明 |
|---|
MAX_ARTIFACT_SIZE | いいえ | 10485760 (10 MB) | 単一成果物ファイルの最大サイズ(バイト) |
MAX_ARTIFACTS_TOTAL | いいえ | 52428800 (50 MB) | セッションあたりの成果物の最大合計サイズ(バイト) |
ドキュメント処理(オプション)
アップロードされたPDF/DOCXファイルがLLM消費用にどのように処理されるかを制御します。ビジョン対応モデル(GPT-4o、Claude 3/4、Gemini)は、より高い忠実度のためにレンダリングされたPDFページを画像として受け取ることができます。
| 変数 | 必須 | デフォルト | 説明 |
|---|
DOCUMENT_PROCESSING_MODE | いいえ | auto | auto(モデルがサポートしている場合はビジョン)、vision(常にページをレンダリング)、text(常にテキストのみを抽出) |
DOCUMENT_VISION_DPI | いいえ | 150 | PDFページレンダリングのDPI。高いほど品質が良く、トークンが増加 |
DOCUMENT_VISION_MAX_PAGES | いいえ | 20 | PDFごとに画像としてレンダリングする最大ページ数 |
注: モデルごとのビジョンサポートは、Admin → Modelsのsupports_visionトグルで設定されます。明示的に設定されていない場合、システムはモデル名からビジョン機能を自動検出します。
画像生成(オプション)
| 変数 | 必須 | デフォルト | 説明 |
|---|
IMAGE_GEN_PROVIDER | いいえ | google | google(Gemini ネイティブ API)または openai(OpenAI 互換 /v1/images/generations) |
IMAGE_GEN_API_KEY | いいえ | — | Google AI Studio キー(google)またはプロキシ/OpenAI API キー(openai) |
IMAGE_GEN_MODEL | いいえ | gemini-3.1-flash-image-preview | 画像生成モデル(例:dall-e-3、gemini-nano-banana-2) |
IMAGE_GEN_BASE_URL | いいえ | (プロバイダーごと) | Google: https://generativelanguage.googleapis.com/v1beta; OpenAI: https://api.openai.com/v1 |
メール (SMTP) (推奨)
SMTP_HOST、SMTP_USER、SMTP_PASS がすべて設定されている場合、email_send ビルトインツールを自動登録します。
| 変数 | 必須 | デフォルト | 説明 |
|---|
SMTP_HOST | 条件付き | — | SMTP サーバーのホスト名 |
SMTP_PORT | いいえ | 465 | SMTP ポート |
SMTP_SSL | いいえ | ssl | TLS モード: ssl (ポート 465) / tls (STARTTLS、ポート 587) / "" (プレーン) |
SMTP_USER | 条件付き | — | SMTP ログインユーザー名 |
SMTP_PASS | 条件付き | — | SMTP ログインパスワード |
SMTP_FROM | いいえ | (SMTP_USER を使用) | From ヘッダーに表示される送信者アドレス |
SMTP_FROM_NAME | いいえ | — | From ヘッダーに表示される表示名 |
SMTP_REPLY_TO | いいえ | — | Reply-To アドレス。返信はここに送信されます (SMTP_FROM の代わりに) |
SMTP_ALLOWED_DOMAINS | いいえ | — | カンマ区切りのドメイン許可リスト (例: example.com,corp.io)。リストに含まれていないドメインの受信者をブロックします |
SMTP_ALLOWED_ADDRESSES | いいえ | — | カンマ区切りの正確なアドレス許可リスト。SMTP_ALLOWED_DOMAINS と組み合わせて使用します。両方を未設定のままにすると、すべての受信者を許可します (共有メールボックスの場合は非推奨) |
コネクタ
| 変数 | 必須 | デフォルト | 説明 |
|---|
CONNECTOR_RESPONSE_MAX_CHARS | いいえ | 50000 | 非配列JSON/プレーンテキストコネクタレスポンスの最大文字数 |
CONNECTOR_RESPONSE_MAX_ITEMS | いいえ | 10 | コネクタレスポンスがJSON配列の場合に保持する最大配列項目数 |
CREDENTIAL_ENCRYPTION_KEY | いいえ | (未設定) | コネクタ認証情報ブロブのFernet暗号化キー。設定時、connector_credentialsに保存された認証トークンは保存時に暗号化されます。未設定の場合、認証情報はプレーンテキストJSON(後方互換性あり)として保存されます。このキーを変更すると、既存のすべての暗号化認証情報が無効になります。 |
CONNECTOR_TOOL_MODE | いいえ | progressive | コネクタツールがエージェントに公開される方法。progressive: discover/executeサブコマンド付きの単一ConnectorMetaTool(コネクタあたり約30トークン)。classic: アクションごとに1つのツール(レガシー、アクションあたり約250トークン)。 |
DATABASE_TOOL_MODE | いいえ | progressive | データベースコネクタツールがエージェントに公開される方法。progressive: list_tables/discover/queryサブコマンド付きの単一DatabaseMetaTool。legacy: データベースコネクタごとにアクションごとに1つのツール(各3つのツール)。 |
MCP_TOOL_MODE | いいえ | progressive | MCPサーバーツールがエージェントに公開される方法。progressive: discover/callサブコマンド付きの単一MCPServerMetaTool。legacy: MCPサーバーアクションごとに1つのツール(元の個別ツール)。 |
プラットフォーム
| 変数 | 必須 | デフォルト | 説明 |
|---|
DATABASE_URL | いいえ | sqlite+aiosqlite:///./data/fim_one.db | データベース接続文字列。SQLite(ゼロ設定): sqlite+aiosqlite:///./data/fim_one.db。PostgreSQL(本番環境): postgresql+asyncpg://user:pass@localhost:5432/fim_one。Docker Composeは自動的にPostgreSQLを設定します。 |
JWT_SECRET_KEY | いいえ | CHANGE_ME | JWTトークン署名用の秘密鍵。プレースホルダー値CHANGE_ME(またはその他のレガシーデフォルト)は、初回起動時にセキュアな256ビットランダムキーの自動生成をトリガーし、.envに書き込まれます。本番環境では、トークンが再起動とレプリカ間で有効なままになるように明示的に設定してください。 |
CORS_ORIGINS | いいえ | — | デフォルトのlocalhostエントリを超えて許可する追加のCORSオリジンのカンマ区切りリスト。フロントエンドが非localhostドメイン(例:https://app.example.com)で実行される場合に必須です。 |
UPLOADS_DIR | いいえ | ./uploads | アップロードされたファイル用のディレクトリ |
MAX_UPLOAD_SIZE_MB | いいえ | 50 | 最大ファイルアップロードサイズ(メガバイト単位、バックエンド実装) |
NEXT_PUBLIC_MAX_UPLOAD_SIZE_MB | いいえ | 50 | フロントエンドUIに表示される最大ファイルアップロードサイズ。ビルド時変数 — MAX_UPLOAD_SIZE_MBと一致する必要があります。 |
MCP_SERVERS | いいえ | — | MCPサーバー設定のJSONアレイ(uv sync --extra mcpが必要) |
ALLOW_STDIO_MCP | いいえ | false | stdio MCPサーバーを許可します。信頼できるローカルデプロイメントの場合のみtrueに設定してください |
ALLOWED_STDIO_COMMANDS | いいえ | npx,uvx,node,python,python3,deno,bun | stdio MCPサーバーで許可されたベースコマンドのカンマ区切りリスト。ALLOW_STDIO_MCP=trueの場合のみ有効です |
LOG_LEVEL | いいえ | INFO | ログレベル: DEBUG / INFO / WARNING / ERROR / CRITICAL |
REDIS_URL | いいえ | — | ワーカー間割り込みリレー用のRedis接続URL。WORKERS>1の場合は必須 — これがないと、ストリーム中の割り込み/注入リクエストが別のワーカーにヒットして暗黙的に失敗する可能性があります。Docker Composeで自動設定されます。 |
WORKERS | いいえ | 1 | Uvicornワーカープロセス。1は安全で外部サービスは不要です。本番環境のマルチワーカーの場合、PostgreSQLを使用してください(SQLiteはシングルライター)。SQLiteはローカル開発で軽い負荷下で動作します。認証、OAuth、ファイル操作は完全にマルチワーカー対応です(JWTベース)。Docker Composeは自動的にPostgreSQLとRedisの両方を設定します。 |
マルチワーカーチェックリスト(WORKERS>1):
- 停止(ストリーミング中止) — 常に動作します。追加設定は不要です(シグナルは同じTCP接続で送信されます)。
- 注入(ストリーム中のフォローアップ) —
REDIS_URLが必須です。Redisがないと、注入リクエストが実行中の実行について知識のない別のワーカーにランディングし、暗黙的に失敗する可能性があります。
- 本番環境: PostgreSQL(
DATABASE_URL)を使用してください。SQLiteのシングルライターロックは同時書き込み時に競合を引き起こす可能性があります。
- ローカル開発: SQLite + マルチワーカーは軽い使用量であれば問題ありません。注入機能を使用する場合は
REDIS_URLを追加してください。
ワークフロー実行の保持
古いワークフロー実行を自動的に削除するバックグラウンドクリーンアップタスク。ワークフロー単位のオーバーライド(ワークフロー設定UIで設定)がこれらのグローバルデフォルトより優先されます。
| 変数 | 必須 | デフォルト | 説明 |
|---|
WORKFLOW_RUN_MAX_AGE_DAYS | いいえ | 30 | この日数より古いワークフロー実行を削除 |
WORKFLOW_RUN_MAX_PER_WORKFLOW | いいえ | 100 | ワークフローごとに最大このの実行数を保持(最も古いものから削除) |
WORKFLOW_RUN_CLEANUP_INTERVAL_HOURS | いいえ | 24 | バックグラウンドクリーンアップタスクの実行間隔(時間単位) |
チャネル確認リクエスト有効期限
チャネルフック(FeishuGateHookや承認プレイグラウンドなど)によって生成された古い保留中の承認リクエストを期限切れとしてマークするバックグラウンドスイーパー。忘れられたカードを数日後にクリックしても、既に破棄されたエージェント状態がフリップしないようにします。
| Variable | Required | Default | Description |
|---|
CHANNEL_CONFIRMATION_TTL_MINUTES | No | 1440 | この期間より古い保留中の確認は自動的に期限切れになります(デフォルト:24時間) |
CHANNEL_CONFIRMATION_SWEEP_INTERVAL_SECONDS | No | 600 | 有効期限スイーパーが実行される頻度(デフォルト:10分ごと) |
OAuth(オプション)
プロバイダーに対して CLIENT_ID と CLIENT_SECRET の両方が設定されている場合、ログインページに対応する OAuth ボタンが自動的に表示されます。
| 変数 | 必須 | デフォルト | 説明 |
|---|
GITHUB_CLIENT_ID | いいえ | — | GitHub OAuth App クライアント ID。github.com/settings/developers → OAuth Apps で作成 |
GITHUB_CLIENT_SECRET | いいえ | — | GitHub OAuth App クライアント シークレット |
GOOGLE_CLIENT_ID | いいえ | — | Google OAuth クライアント ID。console.cloud.google.com/apis/credentials で作成 |
GOOGLE_CLIENT_SECRET | いいえ | — | Google OAuth クライアント シークレット |
DISCORD_CLIENT_ID | いいえ | — | Discord OAuth2 クライアント ID。discord.com/developers で作成 |
DISCORD_CLIENT_SECRET | いいえ | — | Discord OAuth2 クライアント シークレット |
FEISHU_APP_ID | いいえ | — | Feishu(Lark)App ID。open.feishu.cn で作成。contact:user.email:readonly 権限が必要 |
FEISHU_APP_SECRET | いいえ | — | Feishu(Lark)App シークレット |
FRONTEND_URL | 本番環境 | http://localhost:3000 | OAuth 完了後にブラウザが遷移する先。本番環境では必須(例:https://yourdomain.com) |
API_BASE_URL | 本番環境 | http://localhost:8000 | 外部からアクセス可能なバックエンド URL。OAuth コールバック URL の構築に使用。本番環境では必須 |
NEXT_PUBLIC_API_URL | 本番環境 | (<hostname>:8000 として自動検出) | OAuth リダイレクト用のブラウザ側 API ベース URL。これはフロントエンド ビルド時変数です — ローカル開発では frontend/.env.local で設定するか、カスタム本番環境デプロイメントの場合は Docker ビルド引数として渡してください。標準的なリバースプロキシ設定(ポート 80/443)では自動検出が機能します。 |
本番環境 = ローカルではオプション(デフォルト値が機能します)ですが、インターネット公開デプロイメントでは必須です。
各プロバイダーに登録するOAuth コールバックURL
バックエンドは、コールバックURLを以下のように構成します: {API_BASE_URL}/api/auth/oauth/{provider}/callback
| プロバイダー | 登録するコールバックURL |
|---|
| GitHub | https://yourdomain.com/api/auth/oauth/github/callback |
| Google | https://yourdomain.com/api/auth/oauth/google/callback |
| Discord | https://yourdomain.com/api/auth/oauth/discord/callback |
Cloudflare Tunnel(オプション)
Cloudflareのネットワークを通じてすべてのトラフィックをルーティングし、ポートを直接公開しません。Nginx、SSLサーティフィケート、ファイアウォールルールを開く必要がなくなります。セットアップ手順については、本番環境デプロイメントセクションを参照してください。
中国本土ユーザー: Cloudflare Free/Pro/Businessプランは中国本土にPoP(Point of Presence)がありません。トラフィックは海外のエッジにルーティングされ、502エラーが頻繁に発生します。中国本土が主なユーザーである場合、Cloudflare Enterprise with China Networkを持っていない限り、このオプションを使用しないでください。
| 変数 | 必須 | デフォルト | 説明 |
|---|
CLOUDFLARE_TUNNEL_TOKEN | はい(Tunnelを使用する場合) | — | Cloudflare Zero Trust → Networks → Tunnels → your tunnel → Configureから取得したトークン。eyJ...で始まります。docker-compose.tunnel.ymlのcloudflaredサイドカーに必要です。 |
分析(オプション)
すべての分析プロバイダーはオプションです。任意の組み合わせを設定できます。すべてのアクティブなプロバイダーが同時に読み込まれます。すべてを空白のままにすると、分析が完全に無効になります(ローカル開発では推奨)。
| 変数 | 必須 | デフォルト | 説明 |
|---|
NEXT_PUBLIC_GA_MEASUREMENT_ID | いいえ | — | Google Analytics 4 測定 ID(例:G-XXXXXXXXXX)。analytics.google.com で取得できます |
NEXT_PUBLIC_UMAMI_SCRIPT_URL | いいえ | — | Umami 分析スクリプト URL(例:https://your-umami.com/script.js)。自己ホスト型のプライバシーフレンドリーな代替案 — umami.is |
NEXT_PUBLIC_UMAMI_WEBSITE_ID | いいえ | — | Umami ウェブサイト ID。NEXT_PUBLIC_UMAMI_SCRIPT_URL が設定されている場合は必須 |
NEXT_PUBLIC_PLAUSIBLE_DOMAIN | いいえ | — | Plausible 分析ドメイン(例:yourdomain.com)。軽量でプライバシーフレンドリー — plausible.io |
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL | いいえ | https://plausible.io/js/script.js | 自己ホスト型インスタンス用のカスタム Plausible スクリプト URL |
すべての NEXT_PUBLIC_* 分析変数はビルド時です。変更を有効にするにはフロントエンドの再構築が必要です。