自社サービスにAIチャットを組み込む!huggingface/chat-uiの機能とカスタマイズ方法


自社サービスにAIチャットを組み込む!huggingface/chat-uiの機能とカスタマイズ方法

huggingface/chat-ui

2025-10-20

これは、Hugging Faceが提供するチャットアプリケーション「HuggingChat」の基盤となっている、オープンソースのチャットUIコードベースです。大規模言語モデル(LLM)との対話インターフェースを、自分の環境で構築・カスタマイズしたい場合に非常に強力なツールとなります。

このコードベースは、単なるチャット画面のデモに留まらず、プロダクトレベルのチャットUIに必要な要素が詰まっています。

完成されたUIの活用
ゼロからチャットUIを作る手間を省き、すぐに会話ロジックやバックエンドとの連携に集中できます。

TypeScriptとSvelteKit

TypeScriptのおかげで、大規模なコードベースでも型安全性が確保され、メンテナンス性やリファクタリングのしやすさが向上します。

SvelteKitは、高速で軽量なUIフレームワークであり、優れたユーザー体験を提供できます。特に、コンパイル時に多くの処理を行うため、実行時のオーバーヘッドが少ないのが魅力です。

ブランディングとテーマ
環境変数を通じて、アプリ名、説明、アセットなどを簡単にカスタマイズでき、自社のブランドに合わせたチャットインターフェースを構築できます。

機能拡張 Web検索機能やOpenID認証などのオプション機能も組み込まれており、これらを参考に独自の認証方法や新しい対話機能(例ツール利用、RAG機能)を追加しやすい構造になっています。

多様なLLMへの対応
基本的にOpenAI互換のAPIと通信するように設計されているため、Hugging Faceのインファレンスプロバイダーだけでなく、独自のLLMエンドポイントや他の互換サービスとも接続しやすいです。

ベストプラクティス
大手プラットフォームが実際に運用しているコードから、LLMフロントエンドの設計、State管理(Svelteストアなど)、バックエンド連携(WebSocketなど)のノウハウを学べます。

最新技術の採用
Svelteというモダンなフロントエンド技術とTypeScriptの組み合わせを、実践的なプロジェクトで学ぶ絶好の機会です。

huggingface/chat-uiは、SvelteKitで構築されたアプリケーションであり、バックエンドとの連携にはMongoDBを必要とします。

Node.jsとnpm (または yarn/pnpm) がインストールされていること。

MongoDBのインスタンス(ローカルコンテナまたはMongoDB Atlasなどのマネージドサービス)が利用可能であること。

LLMエンドポイント(OpenAI互換API)が必要です。Hugging Face Inference ProvidersやローカルのLLMサービスなどが考えられます。

# リポジトリをクローン
git clone https://github.com/huggingface/chat-ui.git
cd chat-ui

# 依存関係をインストール
npm install 
# または pnpm install

プロジェクトのルートディレクトリに、.env.local ファイルを作成し、必須の環境変数を設定します。

# .env.local の例

# 必須: MongoDB 接続URI
# (例: Atlasの場合) MONGODB_URL="mongodb+srv://<user>:<password>@<cluster-url>/<dbname>?retryWrites=true&w=majority"
# (例: ローカルの場合) MONGODB_URL="mongodb://localhost:27017"
MONGODB_URL="あなたのMongoDB接続URI"

# 必須: LLM API キー (Hugging FaceトークンまたはOpenAI APIキー)
OPENAI_API_KEY="あなたのAPIキー" 

# LLMエンドポイントのベースURL。Hugging Face Inference Providersルーターなどが設定可能です。
# OPENAI_BASE_URL="https://your-llm-router-url/v1" 

# オプション: アプリケーションの表示名を設定
PUBLIC_APP_NAME="私のカスタムAIチャット"

環境変数を設定したら、以下のコマンドで開発サーバーを起動できます。

npm run dev

通常、http://localhost:5173 などでチャットUIにアクセスできるようになります。

huggingface/chat-ui は、コンポーネント指向で設計されており、特にSvelteでの開発に慣れているエンジニアには非常に分かりやすいです。

たとえば、チャットメッセージの表示部分をカスタマイズしたい場合、src/lib/components/chat/Message.svelte などのファイルを参考にします。

カスタムのアバターアイコンを使いたい場合、src/lib/components/Icon.svelte コンポーネントなどを確認し、新しいアイコンを定義したり、既存のコンポーネントを修正したりできます。


カスタムフッターの追加

すべてのチャットウィンドウに特定の免責事項を表示するフッターを追加したいとします。

<script lang="ts">
  // 必要なインポート
</script>

<div class="flex flex-col h-screen">
  <main class="flex-grow">
    <slot /> 
  </main>
  
  <footer class="p-2 text-center text-xs text-gray-500 border-t">
    これはカスタムの注意書きフッターです。
    このサービスは学習目的でのみ使用してください。
  </footer>
</div>

Chat UIは、OpenAI互換APIを通じてモデルを取得しますが、特定のモデルを明示的に設定したい場合は、環境変数または設定ファイルで調整します。

アプリケーションのコード内で、LLMへのリクエストを処理している部分(通常はバックエンドAPIルートやサービス)を見つけ、例えばプロンプトの形式やパラメータをカスタマイズすることで、新しいLLM(例
Llama 3)に最適化できます。


server/routes/api/v1/chat/completions/+server.ts(仮想的なファイルパス)

このファイルでは、ユーザーのメッセージを受け取り、LLMエンドポイントにリクエストを投げる処理が行われています。

// 実際のコードはSvelteKitのAPIルートにあります
// LLMに送信するリクエストボディの構造を調整する例

const body = await request.json();
const { messages, model } = body;

// Llama 3のプロンプト形式に合わせるための変換処理を実装
const convertedMessages = convertToLlama3Format(messages); // ← ここがカスタマイズポイント

const llmResponse = await fetch(`${OPENAI_BASE_URL}/chat/completions`, {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${OPENAI_API_KEY}`,
    },
    body: JSON.stringify({
        model: model,
        messages: convertedMessages, // 変換後のメッセージを使用
        stream: true,
        // その他のパラメータ (temperature, top_pなど)
    }),
});
// ... レスポンスの処理

huggingface/chat-ui




【CLIツール解説】Claude Code専用プラグイン「claude-hud」の導入手順と活用事例

今日攻略するタイトルは jarrodwatts/claude-hud。 これは、話題のAIコーディングツール「Claude Code」の動きを、まるでゲームのHUD(ヘッドアップディスプレイ)のように可視化してくれる、エンジニアにとっての「追加装備」だ。


セキュアなコードを書く!エンジニア必見のサイバーセキュリティ学習プラン

このGitHubリポジトリは、ソフトウェアエンジニアにとってまさに「隠れた宝」のような存在です。一見するとサイバーセキュリティの学習プランに見えますが、実は私たちが日々コードを書き、システムを構築する上で、非常に重要な「セキュリティ」という視点を体系的に身につけるための素晴らしいロードマップなんですよ。


AIエージェント作成はパズル!?Sim Studio AIで広がる開発の可能性

それでは、さっそくクイズを始めましょう!A. 最高のコーヒーを淹れるAIロボットを開発できるツール B. 複雑なAIエージェントのワークフローを、ドラッグ&ドロップで簡単に作れるツール C. 宇宙旅行の計画を立ててくれるAIアシスタント D. 未来の株価を正確に予測するAIモデルを生成するツール


面倒なSNS投稿はコードで解決。Postizを使って開発に集中できる環境を手に入れよう

今日は「SNSの投稿管理が面倒で、開発に集中できない」…そんなお悩みにぴったりの「Postiz」という一杯(ツール)をご用意しました。これ、ただの予約投稿ツールじゃないんです。中身は TypeScript と Redis で構成された、フルスタックなオープンソース界の期待の新星ですよ。


プロジェクト管理の「真犯人」Worklenz/worklenzをエンジニアが徹底解剖!

そう、Worklenz/worklenz。このツールこそが、あなたのチームのプロジェクト管理における「犯人」…つまり、これまであなた方を悩ませてきた非効率性の正体を暴き、すべてを解決する救世主となるのです!ソフトウェアエンジニアの皆さん、よく聞いてください。このWorklenz/worklenzは、まさに皆さんのための「万能ツール」です。では、どのように皆さんの役に立つのか、その全貌を暴いていきましょう。


【エンジニア向け】DocSendの代替!オープンソースPDF分析ツール「Papermark」徹底解説

諸君、ごきげんよう!我々はPDFを扱うエンジニアの味方、ペーパーマークだ! 君たちの中に、PDFドキュメントを共有する時、こんなことで悩んでるやつはいないか?「この企画書、送ったはいいけど、本当に読まれてるのかな…?」 「みんなどのページでつまずいてるんだ…?」 「URLを自社ドメインにしたいけど、どうすれば…?」


ソフトウェアエンジニアのためのバーチャルオフィス workadventure徹底解説

workadventureは、ソフトウェア開発のワークフローに多くのメリットをもたらします。チームのコラボレーションを強化 物理的な距離がある場合でも、チームメンバーが同じバーチャル空間にいる感覚を味わえます。これにより、偶発的な会話が生まれやすくなり、チーム内のコミュニケーションが活性化されます。


ベテランも驚愕!次世代エージェント「シシュポス」の導入ガイダンス

若手 デカ長!とんでもないブツを見つけました。これはただのAIライブラリじゃありません。「自分と同じようにコードを書く」をコンセプトにした、TypeScript製の最強エージェント・ハーネス(基盤)です!ベテラン フン、AIがコードを書くだと? 現場の苦労も知らねえで……。で、具体的に何ができるんだ?


コードの悩みを解消!Gooseと歩む次世代開発

皆さん、AIエージェントと聞いて何を思い浮かべますか? コードの提案をしてくれるツール? それも素晴らしいですが、Gooseは一味違います。まるで、どんな難事件もさらりと解決する名探偵のように、皆さんの開発プロセスにおける「解けない謎」を鮮やかに解き明かしてくれるんです!