huggingface/chat-ui

The open source codebase powering HuggingChat

📣 huggingface/chat-ui とは?

軽量でオープンソースのWebフロントエンドで、OpenAI互換の言語モデルエンドポイントとチャットできます。SvelteKitで構築されており、公開されているHuggingChatサービス(hf.co/chat)を支えています。UIはユーザーアカウント、チャット履歴、モデル選択、テーマ、オプションのツール呼び出し(MCP)やマルチモーダル入力を処理し、推論はすべて、OpenAI /v1 プロトコルをサポートする外部API(例:Hugging Face Inference Router、llama.cppサーバー、Ollama、OpenRouterなど)に委任します。


🎯 主な機能

機能 仕組み 重要性
モデル非依存のバックエンド OPENAI_BASE_URL と OPENAI_API_KEY を介して、OpenAI /v1 API を公開する任意のサービスに接続します。 ホスト型HFモデル、ローカルllama.cpp、Ollama、または商用プロバイダーをコード変更なしで切り替えることができます。
チャット永続化 ユーザー、会話、設定、ファイルアップロードをMongoDBに保存します。デフォルトでは、./db に書き込む組み込みMongoDBにフォールバックします。 セッションをまたいで履歴を保持し、ローカル開発ですぐに使えます。
Omniルーター(オプション) 組み込みのヒューリスティックで、各リクエストに対してルート(デフォルト、マルチモーダル、ツール対応)を選択し、そのルートに具体的なモデルを選択します。JSONポリシーファイルと環境変数で構成可能です。 単一の「Omni」モデルエントリを提供し、画像、関数呼び出し、またはプレーンテキストに最適なバックエンドを自動的に選択します。
MCPツール統合 Model Context Protocol サーバーをサポートします。UIは外部ツール(検索、データベース検索など)を呼び出し、OpenAIの関数呼び出しを使用して結果をモデルにフィードバックできます。 カスタムバックエンドコードを書かずに、よりリッチでエージェント的な会話が可能になります。
テーマとブランディング 単純な環境変数(PUBLIC_APP_NAME、PUBLIC_APP_ASSETS など)で、アプリの名前変更、ロゴの交換、データ共有のオプトインの切り替えができます。 製品やコミュニティサイトにUIを埋め込むのが簡単になります。
Docker対応 公式 ghcr.io/huggingface/chat-ui-db イメージには、UIと組み込みMongoDBがバンドルされており、同じ環境変数インターフェースを公開します。 任意のコンテナホストやクラウドサービスにワンコマンドでデプロイできます。
ML Internモード 実験的な「アシスタント」で、会話内でHugging Face ハブのジョブ(論文再現、ファインチューニング、データセット作成)を生成・実行でき、ユーザーごとの計算予算を尊重します。 チャットUIをローコードのMLワークフローオーケストレーターに変えます。

🛠️ 始め方(クイックスタート)

  1. .env.local を作成し、少なくとも以下を設定します:
    OPENAI_BASE_URL=https://router.huggingface.co/v1   # または任意のOpenAI互換URL
    OPENAI_API_KEY=hf_XXXXXXXXXXXXXXXXXXXXXXXXX      # トークンまたはローカルサーバー用のダミーキー
    
  2. クローンしてインストール
    git clone https://github.com/huggingface/chat-ui
    cd chat-ui
    npm install
    npm run dev -- --open   # http://localhost:5173 が起動します
    
  3. (オプション)MongoDBを追加 – MONGODB_URL にリモートのAtlasクラスターを設定するか、ローカルコンテナを実行します:
    docker run -d -p 27017:27017 --name mongo-chatui mongo:latest
    
    MONGODB_URL を省略すると、組み込みDBが自動的に使用されます。
  4. デプロイ – 本番では npm run build && npm run preview を実行するか、提供されているDockerイメージを使用します:
    docker run -p 3000:3000 \
      -e OPENAI_BASE_URL=… -e OPENAI_API_KEY=… \
      -v chat-ui-data:/data \
      ghcr.io/huggingface/chat-ui-db:latest
    

📚 典型的なユースケース

  • セルフホストのChatGPT風UI:フロントエンドを一から作らずに、プライベートモデル(例:企業内LLM)用に。
  • 研究モデルのデモプラットフォーム:llama.cppサーバーまたはOllamaモデルを接続し、ユーザーが洗練されたWeb UIを介して操作できるようにします。
  • ツール拡張エージェント:MCPを介して検索やコード実行サービスを公開し、モデルが自動的に呼び出せるようにします。
  • マルチモーダル実験:Omniルーターを介して画像入力を視覚対応モデルにルーティングします。
  • ML Internプレイグラウンド:非技術ユーザーがチャットから直接ファインチューニングジョブやデータセットビルドをトリガーできるようにします。

⚠️ 制限と注意点

  • OpenAIスタイルのAPIのみ – 異なるプロトコルを使用するプロバイダー(例:ネイティブのHugging Face pipelineエンドポイント)はサポートされていません。
  • /models を超えるモデル検出の組み込み機能はありません – バックエンドで /models リストを公開するか、MODELS 環境変数を手動で設定する必要があります。
  • カスタムルーティングにはルーターポリシーファイルが必要です – デフォルトブランチにはサンプルJSONが同梱されていません。組み込みのヒューリスティック以外の動作が必要な場合は、自分で作成する必要があります。
  • MCPサポートはモデルの関数呼び出し機能に依存します – 選択したモデルがツールを宣伝しない場合、UIはその機能を非表示にします。
  • 本番デプロイにはSvelteKitアダプターが必要です(例:Vercel、Netlify、Cloudflare) – READMEに記載されていますが、すぐに使える設定は提供されていません。

📦 TL;DR

huggingface/chat-ui は、任意のOpenAI互換LLMエンドポイントで動作する、すぐに実行できるSvelteKitベースのWebチャットフロントエンドです。MongoDBによる永続的な履歴、オプションのスマートルーティング(Omni)、MCPによるツール統合、テーマ、および簡単なデプロイのためのDockerイメージを提供します。UIコードを書かずに洗練されたチャットインターフェースを望む人に最適で、ローカルまたはクラウドのLLM、マルチモーダルモデル、エージェント的なツール呼び出しをプラグインできます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト