Before
LY Corporation(旧名LINEヤフー株式会社)のGame Platform Dev組織は、ゲームパブリッシングに必要なさまざまな機能の開発・運用を担っている。近年、組織内の業務効率を高めるためにLLMアプリケーションの開発が活発化していたが、開発プロセスには大きな障壁が存在した。
最大の課題は、自然言語のプロンプトと静的なPythonコードが混在する構造だった。プロンプトは通常、サービスのドメイン専門家が修正するが、プログラミングの知識がないメンバーにとってコード内のプロンプトを直接編集することは困難だった。さらに、プロンプトには変数が含まれており、さまざまなケースを考慮して値を変更しながらテストする必要がある。LLMアプリケーションを通じてのみ実行できる状態では、プロンプトの変更による結果の変化を個別に確認することができなかった。
開発者の観点からも課題はあった。RAGのためのベクトルデータベースとプロンプトチェーンは多くのボイラープレートコードを生成し、開発者がコードを理解するのが難しくなっていた。これらのコードは互いに複雑に絡み合っており、デバッグにも多くの問題を引き起こしていた。組織内でLLMアプリケーションのPoCを実施した際、プロジェクトが膨大になり管理コストが増加し、継続的な運用に危機感が生じていた。
AI導入内容
これらの課題を解決するため、LY CorporationのGame Platform Dev組織は3つのアプローチを選択した。プロンプトを即座に実行・共有できる環境の構築、ビジュアルスクリプティング方式の導入、そしてワンクリックでのデプロイ実現である。
Prompt Storeによるプロンプト管理の中央集権化
まず、プロンプトを即座に実行・共有できる「Prompt Store」を独自開発した。プロンプトに名前を付けて保存し、タグによる管理や変数キーの挿入が可能。作成したプロンプトは他のメンバーと共有して一緒に管理でき、プロンプト作成のノウハウを蓄積した。Playground機能では、OpenAIのモデルから組織内カスタムモデルまで選択でき、さまざまな環境でプロンプトの結果を確認できる。
Langflowによるビジュアルスクリプティング開発
次に、LLMアプリケーション開発にLangflowを導入した。LangflowはドラッグアンドドロップでLLMアプリケーションを作成でき、プロンプトエンジニアリングやRAGなどの機能を簡単に適用できる。Pythonベースであり内部プロジェクトとの互換性が高く、デプロイ環境の構築もしやすい点が選定理由となった。同様の機能を持つFlowiseも比較したが、Langflowの方がUI/UXに優れていた。
Langflowは内部でフォークして使用。バージョンアップ時の衝突を避けるため、Langflow自体のコード変更は最小限に抑え、カスタムコンポーネントによる拡張を徹底した。
独自カスタムコンポーネントの開発
Langflowには標準で不足していた機能を、カスタムコンポーネントとして独自開発した。
Flow Runner:Langflowでは複数のFlowを作成して個別に実行できるが、相互連携がサポートされていなかった。同じ機能を複数のFlowに繰り返し追加する必要がある場合や、Flowが大きくなりすぎて理解しにくくなる問題を解決するため、1つのFlow内で他のFlowを実行・繰り返し実行できる機能を実装した。
Prompt Storeコンポーネント:既存のプロンプトコンポーネントはその都度直接入力が必要で、プロンプトの再利用が困難だった。そこでDBからプロンプトを取得するPrompt Storeコンポーネントを開発し、Langflow上で最適化されたプロンプトを一貫して使用できるようにした。
Kubernetesによるワンクリックデプロイ
LLMアプリケーションを簡単にデプロイできるシステムを構築した。LangflowでFlowを作成し、管理者ページでデプロイボタンをクリックするだけで、Kubernetes環境にAPIインスタンスが作成される。デプロイされたFlowごとに1つのポッドが作成され、共通ドメイン名のサブパスにマッピングして即座にAPIを呼び出せるように設定した。これをSlackアプリと連携し、社内から気軽にLLMアプリケーションを利用できる環境を整えた。
After
3つのアプローチを導入した結果、LY CorporationのGame Platform Dev組織では職種に関係なく、多くのメンバーが業務に必要なLLMアプリケーションを自分で作ってデプロイできるようになった。
開発サイクルの短縮
プロンプト作成とコードの分離、ビジュアルスクリプティングによる直感的な開発、ワンクリックデプロイにより、LLMアプリケーション開発におけるボトルネックが大幅に解消された。アプリケーションの結果の改善により多くの時間をかけられるようになった。
層別モジュール構成の実現
共通の依存関係を管理する「application-core」モジュールを中核に、管理者用の「admin-Langflow」モジュールと実際にLLMアプリケーションを実行する「executor」モジュールという3層構造を確立。Langflow UIモジュールと実行モジュールの依存関係を整理し、再利用性とメンテナンス性を両立させた。
社内普及の実現
例えば数式が入力されると結果を返すFlowを作成し、Slackアプリから呼び出して利用するなど、業務現場に根ざしたLLMアプリケーションが次々と生まれた。技術者に限らず、ドメイン専門家も自らプロンプトを調整し、必要なアプリケーションを構築できる環境が整った。
この取り組みは、大規模組織におけるLLMアプリケーション開発の民主化とLLMOps基盤の構築における重要な実践例として、業界に示唆を与えている。
公開日: 2025年3月27日
事例一覧に戻る