この記事はウェブクルー Advent Calendar 2025の25日目の記事です。
昨日は@wc-tamotsuさんの「子供に作ったおもちゃの話」でした。
はじめに
今年も生成AIの進化が目覚ましい1年でした。
生成AIのおかげで複数の仕事を進めやすくなりましたが、コンテキストスイッチが増えて忙しくなったなーと感じています。
そんな1年ではありましたが、Webcrewでも生成AIの活用を推進しており、社内専用のAIチャットサービスをリリースしました。
本記事ではこのサービスに採用したOpen-WebUIについて取り上げたいと思います。
本記事の構成
- 社内AIチャットサービスをリリースした理由
- 社内専用のAIチャットを作った理由
- セキュリティ
- コスト
- 認証/認可
- ガバナンス
- 社内専用のAIチャットを作った理由
- なぜ Open WebUI なのか
- ローカルLLMの検証で触れていた
- デプロイが簡単
- OpenAI APIとの親和性
- 管理側の機能が豊富
- システム構成
- 構成図
- 解説
- 社内AIチャットとして使う場合のTips
- 環境変数
- 管理者設定の内容
- ワークスペースの活用
- まとめ
社内AIチャットサービスをリリースした理由
セキュリティ
「あるある」だと思いますが、AIチャットに入力した業務情報が学習に使用されるのがNGでした。
業務で知り得た情報や社内文書をRAGとして使用するため、管理者側でRAGとして使用するドキュメント類を管理したい要件もありました。
コスト
全従業員向けにSaasを導入するとそれなりの利用料が発生してしまいます。
WebcrewではGoogle Cloudを使用しているため、VertexAI経由でLLMを呼び出すことでSaasの導入に比べてコストを抑えられる見通しを立てられました。
認証/認可
IdPと連携した多要素認証を必須とし、将来的に社内の組織や職種に応じて使用するモデルや機能を制限するケースを想定していました。
ガバナンス
監査を見据えて力内容のログなどを自社で管理できる仕組みが必要でした。
なぜ Open WebUI なのか
ローカルLLMの検証で触れていた
弊社デザイナーの@wc-nakagomiにOpen WebUIの存在を教えてもらい、個人的にローカルLLMについて調査したり検証する際、手軽にフロントエンドを構築する手段として使用していました。
デプロイが簡単
WebcrewではGKEやFargateにWebアプリケーションをデプロイし、開発環境でもコンテナが積極的に活用されています。
Open WebUIの公式リポジトリにdocker-compose.ymlやk8sのマニフェストファイルが含まれており、Google Cloud環境にOpen WebUIをデプロイするのが比較的簡単に行えました。
OpenAI APIとの親和性
OpenAI APIとの親和性が高くAPIキーさえあれば簡単にOpenAI APIと連携できます。
pipelinesを使ってOpenAI互換のAPIと連携できるため、他の様々なモデルも使おうと思えば使える点も魅力的でした。
WebcrewではGoogleのGeminiも使えるように設定しています。
管理側の機能が豊富
ユーザー/グループの管理、権限の管理、モデルの有効化/無効化、ユーザー作成時初期権限設定、RAGの管理など管理者として欲しいと思う機能が一通りあります。
ローカルLLMについて検証していた際は気にしていなかったのですが、私自身が管理者のためこういった機能が用意されているのは非常に助かりました。
システム構成
シンプルにGCEとCloudSQLを組み合わせて安全にOpen WebUIをデプロイする構成例です。
構成図
解説
Google Cloud
- インスタンスグループを作成しOpen WebUIをdocker-compose.ymlでGCEにデプロイ
- データベースにCloudSQLのPostgreSQLを採用
- ALBのバックエンドサービスにインスタンスグループを設定し、Cloud Armorで特定のIPアドレスからのリクエストのみを受け付けるようにします
- DNSでOpen WebUIを更改したいドメインのAレコードにALBを設定します
OpenAI API
- Open WebUIの環境変数でAPIキーを設定して接続します
Gemini API
- Open WebUI Pipelinesを使い、Gemini APIキーを管理者機能で設定して接続します
Langfuse
- Open WebUI Pipelinesを使い、Langfuseと接続します
IdP
- OIDCを用いてOpen WebUIの認証をIdpに任せています
社内AIチャットとして使う場合のTips
環境変数
設定をおすすめする環境変数の一部を紹介します。
- DATABASE_URL
- SQLAlchemyに対応したデータベース接続文字列を設定します
- SQLLiteとPostgreSQLに対応しています
- ENABLE_QUERIES_CACHE
- Web検索やRAGを有効にしている場合、この環境変数にtrueを設定することでリクエスト内の検索クエリがキャッシュされます
- トークンの使用料とレイテンシの削減に効くので有効にしておくと良いと思います
- ENABLE_OAUTH_SIGNUP
- OAuth経由でサインアップしアカウントを作成する場合に有効化します
- 設定できるOAuthプロバイダーは1つです
Google、Microsoft、Github、OIDCなどの設定例がドキュメントにあるので環境に合わせて適切なOAuthプロバイダーの環境変数を設定してください
- ENABLE_PASSWORD_AUTH
-
ENABLE_OAUTH_SIGNUPにtrueを設定している場合、この環境変数にfalseを設定することでログインの手段がOAuth経由のみに限定されます -
ENABLE_OAUTH_SIGNUPにfalseを設定している場合、この環境変数にfalseを設定するとログインできなくなるため注意して設定してください
-
- OPENAI_API_KEY
- OpenAIのAPIキーを設定します
- WEBUI_AUTH_COOKIE_SECURE
- 認証クッキーのSecure属性を有効にします
- WEBUI_SECRET_KEY
- 暗号化に使用する文字列を設定します
- 未設定の場合、コンテナが再起動又は再作成されるたびにランダムな文字列が生成されるため、本番環境ではこれを必ず設定するようにしてください
- WEBUI_SESSION_COOKIE_SECURE
- セッションクッキーのSecure属性を有効にします
管理者設定の内容
設定をおすすめする管理者設定の一部を紹介します。
- 一般
- 認証
- デフォルトのユーザーロール
アカウント作成時のデフォルトのユーザーロールを設定します。
管理者、ユーザー、保留中の3種類があるため、アカウント作成後の業務フローに合わせて設定してください。
- デフォルトのユーザーロール
- 機能
- WebUI URL
Open WebUIを公開するURLを設定します。
OAuth/SSOを機能させるのに必要な設定です。
- WebUI URL
- 認証
- モデル
Open WebUIが使えるモデルの有効化/無効化や、UIに表示する名前などを設定します。
特定のモデルのみ使えるようにしたり、詳しく無い方向けにモデルの名前を変更したい場合に重宝します。 - パイプライン
pipelineやfilterを用いて、OpenAI以外のLLMを使えるようにしたり、langfuseなどの外部サービスを連携するのに使います。
ワークスペースの活用
モデル
ワークスペースを用いて独自のモデルを作成できます。
アクセス権限制御、システムプロンプト、RAGなどを設定し、特定のユースケースに対応したモデルを作成することで、特定のユーザーに適したAIチャット体験を提供できます。
まとめ
これだけの機能を持ったチャットサービスを短期間でリリースし現在も運用できているのは、Open WebUIの機能の豊富さと管理しやすさにあると改めて思いました。
使いきれてない機能も多く、やりたいことも多々あるので引き続き上手く使って行けたらと考えています。
本記事が生成AIチャットUIのOSS選定に関わっている方の助けになり、Open WebUIの利用が広がる一助になれたら幸いです。
ウェブクルーでは一緒に働いていただける方を募集しております。
少しでもご興味のある方は、ぜひお気軽にご連絡ください!🙇
https://www.webcrew.co.jp/recruit/

