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ワークフローオーケストレーターに変えます。 |
🛠️ 始め方(クイックスタート)
.env.localを作成し、少なくとも以下を設定します:OPENAI_BASE_URL=https://router.huggingface.co/v1 # または任意のOpenAI互換URL OPENAI_API_KEY=hf_XXXXXXXXXXXXXXXXXXXXXXXXX # トークンまたはローカルサーバー用のダミーキー- クローンしてインストール
git clone https://github.com/huggingface/chat-ui cd chat-ui npm install npm run dev -- --open # http://localhost:5173 が起動します - (オプション)MongoDBを追加 –
MONGODB_URLにリモートのAtlasクラスターを設定するか、ローカルコンテナを実行します:docker run -d -p 27017:27017 --name mongo-chatui mongo:latestMONGODB_URLを省略すると、組み込みDBが自動的に使用されます。 - デプロイ – 本番では
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、マルチモーダルモデル、エージェント的なツール呼び出しをプラグインできます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト