ドキュメント

ドキュメント

LibreChat

LibreChatでは、librechat.yaml内のブロックとしてゲートウェイを設定します。必須フィールドは4つで、キー用の環境変数を設定し、再起動が必要です。設定後、モデル選択欄では1つのエンドポイント名の下にClaudeとGPTのIDが表示されます。

LibreChatではlibrechat.yamlのendpoints.customブロックとしてゲートウェイを設定します — 必須フィールド4つ、キーは.envから読み込み、ピッカーに表示するには再起動が必要です。

librechat.yaml
# librechat.yaml — project root, beside your .env
version: 1.3.5          # the value the documentation's own example carries

endpoints:
  custom:
    # Required: name, apiKey, baseURL, models. The name must be unique and
    # must not reuse a built-in endpoint name such as openAI or anthropic.
    - name: "Kunavo"
      apiKey: "${KUNAVO_API_KEY}"        # resolved from .env, not written here
      # Keep the /v1. LibreChat appends /chat/completions to this by default.
      baseURL: "https://api.kunavo.com/v1"
      models:
        default: ["claude-sonnet-5", "claude-haiku-4-5"]
        fetch: true                      # fills the picker from GET /v1/models
      titleConvo: true
      titleModel: "claude-haiku-4-5"         # titles are a separate call — pin a cheap id
      modelDisplayLabel: "Kunavo"

      # Optional but worth the four lines: without it LibreChat prices your
      # traffic from a table it ships. prompt/completion are USD per million
      # tokens; context is that model's own window. All three required.
      tokenConfig:
        claude-sonnet-5:
          prompt: 1.4
          completion: 7
          context: 1000000
        claude-haiku-4-5:
          prompt: 0.7
          completion: 3.5
          context: 200000
baseURLには/v1を残します。 ドキュメントは、例ではなく説明文でこの点を明確にしています。directEndpointは、ベースURLがすでに完全な補完エンドポイントである場合に使うもので、「アプリはデフォルトでbaseURLに『/chat/completions』または『/completion』を追加するため、これが必要」とあります。したがって、https://api.kunavo.com/v1はアクセスすべきルートである/v1/chat/completionsになり、directEndpointは未設定のままにします。このサイト自身の2つの具体例も、https://api.mistral.ai/v1とhttps://openrouter.ai/api/v1という同じ末尾になっています。ここにオリジンだけを指定すると、認証エラーではなく404になります。
Dockerでは、ファイルを編集するだけでは不十分です。クイックスタートには、librechat.yamlをプロジェクトのルートに置き、APIコンテナにマウントしたうえで、変更をUIに反映するためLibreChatを再起動する必要があると明記されています。エンドポイントを追加してもセレクターに表示されない場合、ほとんどは認証情報ではなく、この設定が原因です。認証情報は、下記のcurlを使って別途確認してください。
使用状況の記録はLibreChat独自の計算であり、実際の請求額ではありません。LibreChatは、リクエストを同梱の料金表とモデルIDに基づいて計算します。そのため、ゲートウェイのIDには別モデルの料金が適用される場合があります。これを上書きするために、上記のtokenConfigブロックがあります。公開するIDごとに設定するか、アプリ内の記録を見積もりとして扱い、/app/billingに表示される残高を実際の値として確認してください。
この設定は、下記の日付にLibreChatの公式ドキュメントを参照して記述しました。KunavoはLibreChatを自社のエンドポイントで実行していません。会話、ストリーミング応答、ツールの往復処理、Agentsの実行はいずれもありません。公開されたセットアップページはテストではなく、ここに記載した内容もテストとして受け取るべきではありません。10秒で確認できるのは、下記のcurlです。クライアントの動作については、ご自身とLibreChatの間で扱うことになります。
Kunavoは埋め込み、テキスト読み上げ、音声認識のモデルを提供していないため、このエンドポイントはチャット補完のみを処理します。この点が重要なのは、LibreChatには別種のプロバイダーを必要とする付加機能があるためです。ファイルチャットでは、専用のキーとベースURLを使う別のRAG APIを通じてベクトルインデックスを処理します。また、音声機能にも個別の認証情報が必要です。これらは既存のプロバイダーに接続したままにしてください。上記ブロックのキーはカスタムエンドポイント専用で、このページのほかの機能には使われません。
まだキーをお持ちですか?Kunavoアカウントを作成し、キーを作成します(sk-kn-で始まります)。$10からクレジットを追加すると、呼び出しはその残高から支払われ、失敗した呼び出しは課金されません。ダッシュボードを開くと、LibreChat設定が表示されます。

手順

  1. /app/keys でキーを作成してコピーします。キーは一度だけ表示されます。
  2. Dockerでは、まず設定をマウントします。クイックスタートの手順に従い、docker-compose.override.yml.exampleをdocker-compose.override.ymlにコピーして、librechat.yamlボリュームのコメントを解除してください。ベアメタル環境ではこの手順は不要です。
  3. プロジェクトのルート、つまり.envと同じディレクトリにlibrechat.yamlを作成または編集し、上記のendpoints.customエントリを追加します。
  4. キーを.envにKUNAVO_API_KEY=sk-kn-...として記述します。YAMLの${KUNAVO_API_KEY}プレースホルダーはここから値を取得するため、コミットする設定ファイルにシークレットを含めずに済みます。
  5. LibreChatを再起動し、エンドポイントセレクターを開きます。Kunavoが組み込みエンドポイントの横に独立した項目として表示されます。モデル一覧はGET /v1/modelsから取得されるか、取得に失敗した場合はmodels.default配列が使われます。
  6. メッセージを1つ送信し、モデル選択欄でモデルを実際に切り替えられることを確認します。IDはエンドポイントで解決されるため、1つの項目の下にClaudeとGPTのIDがあるのは通常の状態であり、設定ミスではありません。

LibreChatのカスタムエンドポイントオブジェクトのリファレンスで2026年9月21日に確認しました。サードパーティの設定は変更されます。ここに記載されたフィールド名が表示内容と一致しなくなった場合は、このページではなく、そのページを正しい情報源としてください。

これが短い概要です。完全な手順 — モデルの選択、実際のセッション費用、失敗するケース — はLibreChatの実際の運用コストにあります。

クライアントをデバッグする前に確認すること

1回のリクエストで、失敗の原因がエンドポイント、キー、設定ファイルのどれかを特定できます。これがJSONを返すなら、同じベースURLとキーがLibreChatで機能します。

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

フィールドに入力するモデルID

すべてのテキストモデルにはモデルIDでアクセスできます。現在の一覧はGET /v1/models、価格付きのカタログはモデルページにあります。料金は100万トークンあたりのUSDで、入力 / 出力の順です。

モデル IDKunavo 入力 / 出力LibreChatでの位置付け
claude-sonnet-5$1.40 / $7.00models.defaultの既定エントリ — 日常の会話に使うモデル
claude-opus-5$3.50 / $17.50長時間の分析に切り替えるID。より良い回答のためにターンを費やす価値がある場面向け
claude-haiku-4-5$0.70 / $3.50共有インスタンスの大量のトラフィック、およびtitleModel — LibreChatは会話ごとに別の呼び出しでタイトルを生成します
gpt-5-6-terra$0.70 / $4.20コンテキストウィンドウの大きさが決め手となる、長文の貼り付け文書
請求は月額料金なしの前払い残高からトークン単位で行われます — 請求を参照してください。繰り返し送られるコンテキスト(エディターやチャットクライアントが送る内容の大半)では、プロンプトキャッシュのほうがモデル選択より請求額を大きく左右します。

ゲートウェイ経由での動作が異なる3つの任意フィールド

この表の内容はすべて、上記の日付に参照した同じフィールドリファレンスに基づいています。LibreChat独自の設定に関する説明であり、Kunavoのテスト結果ではありません。また、リクエストがクライアントを離れた後に特定のモデルIDがどう動作するかを示すものでもありません。

フィールドリファレンスの説明ゲートウェイを使う際の意味
providerカスタムエンドポイントをネイティブのプロバイダークライアント経由でルーティングします。現時点でサポートされている値はAnthropicです。切り替わるのはベンダーではなく通信プロトコルです。同じブロックを使って、チャット補完の代わりにAnthropic Messagesを利用できます。この経路ではOpenAI形式のモデル取得は使われないため、IDはmodels.defaultに明示的に列挙してください。
models.fetchtrueの場合、APIからモデル一覧の取得を試みます。応答が遅いと、初回利用時に遅延が生じることがあります。KunavoはGET /v1/modelsに応答するため、モデル選択欄の一覧は自動で表示されます。呼び出しに失敗した場合はmodels.defaultが代替として使われるため、取得を有効にしていても設定しておくと便利です。
tokenConfigコスト追跡と使用量計算のために、モデルごとのコンテキストウィンドウと100万トークンあたりの料金を定義します。この設定がない場合、LibreChatに同梱された料金表に基づいてトラフィックの料金が計算されます。そのIDは料金表で想定されていないものです。この設定を使えば、UIに表示される数値を任意に指定できます。

マウント、設定、環境変数の指定、再起動という4段階の手順は、ゲートウェイを設定例として使用しているLibreChatのカスタムエンドポイント向けクイックスタートページに記載されています。

よくある質問

LibreChatにカスタムエンドポイントを追加するには?

プロジェクトのルートにある.envの隣にlibrechat.yamlを作成し、endpoints.customの下に必須の4フィールドname、apiKey、baseURL、modelsを指定します。nameは一意である必要があり、openAIやanthropicなどの組み込みエンドポイント名は使えません。認証情報を.envに記述し、YAMLから${YOUR_ENV_VAR}として参照してから再起動します。Dockerでは、docker-compose.override.ymlを使ってAPIコンテナにファイルをマウントする必要があります。新しい項目は再起動後にのみエンドポイントセレクターに表示されます。

LibreChatのbaseURLの末尾に /v1 は必要ですか?

OpenAI互換ゲートウェイの場合は必要です。LibreChatのフィールドリファレンスによると、ベースURLがすでに完全なcompletionsエンドポイントである場合にdirectEndpointオプションを使います。これは、アプリが既定でbaseURLに/chat/completionsまたは/completionを付加するためです。したがって、ベースURLには /v1 サフィックスを含むAPIルート、つまり https://api.kunavo.com/v1 を指定し、directEndpointは未設定のままにします。LibreChatのサイトにある2つの例も同じ形式です。ここを誤ると、認証エラーではなく404になります。これにより、キーの誤りと区別できます。

LibreChatに表示されるコストがプロバイダーの請求額と一致しないのはなぜですか?

LibreChatはプロバイダーの請求額ではなく、同梱の料金表を使ってリクエストの料金を計算し、その表をモデルIDと照合するためです。ゲートウェイのIDが料金表の項目に似ていると、その項目の料金が適用されます。どの項目にも一致しないIDには固定料金が適用されます。解決するには、公開するIDごとにprompt、completion、contextをUSD/100万トークンで指定したtokenConfigブロックをカスタムエンドポイントの下に設定します。LibreChatは独自の料金表を参照する前に、この上書き設定を確認します。アプリ内の記録は見積もりとして扱い、プロバイダーの残高を実際の記録として確認してください。

LibreChatからカスタムエンドポイント経由でClaudeモデルを利用できますか?

はい、2通りの方法があります。OpenAI互換のカスタムエンドポイントでは、モデルIDがそのままbaseURLに渡されるため、ClaudeのIDはLibreChat内ではなく、そのエンドポイントで解決されます。Anthropicアカウントは関与しません。もう1つの方法では、providerフィールドを使って同じブロックをLibreChatのネイティブAnthropic Messagesクライアント経由でルーティングします。現時点でサポートされている値はanthropicです。この経路ではOpenAI形式のモデル取得は使われないため、fetchに頼らず、利用するIDをmodels.defaultの下に列挙してください。

KunavoはLibreChatをテストしていますか?

いいえ。このページの設定は、表示されている日付にLibreChatのカスタムエンドポイントに関する公式ドキュメントを書き写したもので、実行結果ではありません。会話、ストリーミング応答、ツールの往復処理、Agentsの実行はいずれもありません。ここでドキュメント化しているすべてのクライアントに当てはまります。公開されたセットアップページはテストではありません。ご自身で10秒で確認できるのは、ベースURLとキーがそもそも機能するかどうかです。そのためのコマンドがこのページのcurlです。それ以降の動作は、選択したモデルIDを使ったLibreChatの挙動によります。