LLMオーケストレーションは、大規模言語モデル(LLM)のプロンプト、チェーン、管理、監視に役立ちます。LLMオーケストレーションはオーケストレーション・フレームワークによって駆動されます。これらのフレームワークは、LLM駆動型アプリケーションの構築と管理を効率化する包括的なツールです。
LLMOpsは、自然言語生成、機械翻訳、意思決定、チャットボットなど、幅広いアプリケーションでオーケストレーションを使用します。組織が人工知能を採用してこのような種類の生成AIアプリケーションを構築する際には、効率的なLLMオーケストレーションが重要になります。
LLMの基盤モデルは強力ですが、LLMだけで達成できることには限界があります。例えば、LLMにはリアルタイムで新しい情報を保持または学習する能力がなく、コンテキストから保持できる内容が限られているため、複数ステップの問題を完了するのに苦労します。1 さらに、さまざまなLLMプロバイダーのアプリケーション・プログラミング・インターフェース(API)を扱う中で、多数のLLMを調整することはすぐに複雑になる可能性があります。
LLMオーケストレーション・フレームワークは、プロンプト・エンジニアリング、API対話、データ取得、言語モデルとの対話全体の状態管理を統合する複雑なプロセスを簡素化することで、これらの限界を補います。2
新しいLLMオーケストレーション・フレームワークが日々開発され、人気が高まっています。一部のLLMオーケストレーションは構成またはデータベース・フレームワークとして特化していますが、他のオーケストレーションはAIエージェントを使用して共同作業を行い、タスクや目標を達成します。
LLMオーケストレーション・フレームワークがどのように機能するかを理解するには、LLM駆動型アプリケーションのアーキテクチャー内でオーケストレーションがどこに位置しているかを理解することが役立ちます。
オーケストレーション層は、LLMアプリケーション・スタックのバックボーンです。オーケストレーターは、アプリケーション・アーキテクチャーの他の層間の相互作用を管理することで、一貫したワークフローを作成します。3音楽オーケストレーターと同様に、LLMオーケストレーターは、アプリケーションの構成に基づいて各技術コンポーネントのワークフローを委任および管理します。
これらのコンポーネントには、LLM、プロンプト・テンプレート、ベクター・データベース、エージェント間の相互作用が含まれます。4 オーケストレーションは、さまざまなアプリケーションや環境内でLLMのライフサイクルを効果的に管理するためのツールとメカニズムを提供することで、生成AIアプリケーションの各コンポーネントが連携して動作することを保証します。
オーケストレーション・フレームワークは、プロンプトの連鎖、外部APIとのインターフェース、ベクター・データベースからのコンテキストの取得、複数のLLMインタラクションにわたるメモリーの管理などの複雑なタスクを簡素化します。LLMオーケストレーションで一般的に使用される運用タスクの概要は次のとおりです。
プロンプト・エンジニアリング とは、生成AIツールが最適化された出力を生成するようにLLM入力(プロンプト)を構造化する手法です。オーケストレーション・フレームワークは、指示、いくつかの例、特定のコンテキスト、およびタスクに適した質問を含むプロンプト・テンプレートを提供します。5
チェーニングとは、複数のLLMを接続してその出力を組み合わせ、より微妙な結果を得るための呼び出しシーケンス(プロンプト・チェーニングとも呼ばれます)、ツール、またはデータの前処理を指します。6
オーケストレーション層は、プロンプト・データを簡単に検索および取得できるナレッジ・ベースまたはライブラリー内にプロンプトを保存することで、これらのプロンプト・タスクを管理します。オーケストレーターは、リアルタイムの入力、コンテキスト、またはユーザーの設定に基づいて、ライブラリーからプロンプトを動的に選択できます。さらに、プロンプトを論理的な順序で並べることで、対話のフローを管理できます。
LLMには、継続的に学習する本来の能力が欠けており、コンテキストの理解には限界があります。プロンプトを管理することで、オーケストレーターは応答を評価して出力を調整できます。
LLMは自分自身で事実確認を行うこともできず、管理が不十分だとハルシネーションを引き起こします。オーケストレーターは、応答を事実確認し、カスタム・ガイドラインに準拠していることを確認できます。応答が不十分な場合、オーケストレーターは人間によるレビューのためにフラグを立てたり、代替案を提案したりして、LLMが効果的に学習して改善できるようにします。7
ほとんどのLLMオーケストレーション・フレームワークには、運用監視用の何らかの形式のLLMOpsが含まれています。これらの機能には、LLMベンチマーク テストに基づくパフォーマンス・メトリックの収集が含まれます。これらのメトリックはダッシュボードを介して観察でき、ユーザーはLLMパフォーマンス・メトリクスをリアルタイムで把握できます。
その他のLLMOpsリソースには、根本原因分析(RCA)用の診断ツールが含まれており、デバッグにかかる時間を短縮します。
オーケストレーターは、適切なコネクタまたは API を使用して、識別されたソースからのデータ・アクセスと取得を容易にします。前処理とは、複数のソースからの「生の」データをLLMに適した形式に変換することを指します。データ・コレクションが大きくなるほど、それを分析するデータ・メカニズムはより高度でなければなりません。前処理により、データが各データマイニングアルゴリズムによって課される要件に適合することが保証されます。8オーケストレーターは、データを調整および改良して価値を高めることで、前処理を容易にすることができます。
オーケストレーターは、割り当てられたタスクを実行するためにLLMを起動します。処理が完了すると、オーケストレーターはモデル出力を受け取り、フィードバック・メカニズムを統合して全体的な品質を評価し、適切なデスティネーションに配信します。
オーケストレーターには、LLM出力とインタラクションを改善し、コンテキストの理解を提供する知識ベースとして機能するメモリー・ストアが含まれています。オーケストレーターは、以前のメッセージや入力を処理して保存することで、過去のやり取りに基づいてより正確な応答を提供する長期的な知識を蓄積します。9
オーケストレーターは、LLMの可観測性機能とガードレール・フレームワークの導入を促進する責任を負います。LLMOpsの観点から見ると、これらの機能なしで実行されるLLMは、誤った結果を出力したり、高度に調整されていないLLMの限られた機能に基づいてセキュリティー上のリスクを冒したりするなどのリスクがあります。
LLMオーケストレーション・フレームワークは、LLMのインタラクションとワークフローを合理化してLLMOpsを強化するために必要な管理と最適化を提供します。
アプリケーション開発者は、新しいソリューションを採用するか、独自のソリューションをゼロから構築するかを選択できます。適切なLLMオーケストレーション・フレームワークを選択するには、慎重な計画と戦略が必要です。
LLMオーケストレーション・フレームワークを選択する前に考慮すべき事項:
フレームワークのAPIドキュメントを確認し、それが役に立ち、開発者が簡単に開始できるものであることを確認します。また、フレームワークのコミュニティー・リソースをチェックして、提供されるトラブルシューティング・サポートの種類を決定してください。
さまざまなフレームワークを採用した場合のコストの影響を評価します。多くのLLMオーケストレーション・フレームワークは、有料のエンタープライズ・オプションを備えたオープンソースです。価格モデルが初期投資だけでなく、ライセンス、アップデート、サポートなどの継続的な費用にも対応していることを確認します。コスト効率の高いフレームワークは、価格と提供される機能のバランスを実現します。
適切なLLMを選択するときは、データ・セキュリティーを提供し、データを保護し、関連するプライバシー規制に準拠するのに役立つ暗号化、アクセス制御、監査ログなどのセキュリティー機能を確認してください。
監視および管理ツールについてお問い合わせください。これらのツールには、応答時間、精度、リソース使用率などのメトリクスを追跡する機能が含まれます。
ここでは、既知および新規のオーケストレーション・フレームワークをいくつか紹介します。
IBM watsonx Orchestrateは、自然言語処理(NLP)を使用して、幅広い機械学習スキルにアクセスします。IBMのフレームワークは、AIアシスタント・ビルダーやスキル・スタジオなど、数千種類もの事前構築されたアプリケーションとスキルで構成されています。
ユースケースには、新入社員のオンボーディングとサポートに必要なツールをチームに提供して人事部門を支援したり、調達チームと販売チームを強化したりすることが含まれます。
LLMアプリケーションを構築するためのオープンソースのPythonベースのフレームワーク。LangChainは、埋め込みモデル、LLM、ベクター・ストア、リトリーバーなどのコアLLMアプリケーション・コンポーネントとの柔軟なインターフェースを提供する複数のオープンソース・ライブラリーで構成されています。11
LangChainの一般的なエンドツーエンドのユースケースには、SQLデータベース上のQ&Aチェーンとエージェント、チャットボット、抽出、クエリー分析、要約、エージェント・シミュレーション、自律エージェントなどがあります。12
Microsoftのオープンソース・マルチエージェント対話フレームワークは、基盤モデルの高レベルの抽象化を提供します。AutoGenはエージェント・フレームワークで、複数のエージェントを使用して対話しながら、タスクを解決します。その主な機能には、柔軟なパターンでマルチエージェント対話を行い、幅広いLLMアプリケーションを構築するカスタマイズ可能なAI エージェントが含まれます。13
LLM駆動型アプリにおけるAutoGenの導入には、数学指導チャットボット、対話型チェス、意思決定、動的グループチャット、マルチエージェント・コーディングなどがあります。14AutoGenは、AgentOpsを通じてデバッグ用の監視および再生分析を提供します。15
LlamaIndexは、コンテキスト拡張LLMアプリケーションを構築するためのツールを提供します。これらには、160を超えるソースと形式からのデータを処理するデータ・コネクタなどのデータ統合ツールが含まれます。16LlamaIndexには、LLMアプリケーションのパフォーマンスを評価するためのモジュール・スイートも含まれています。
LlamaIndexの一般的なユースケースには、Q&Aアプリケーション(RAG:Retrieval-Augmented-Generation)、チャットボット、ドキュメント理解とデータ抽出、パフォーマンス向上のためのデータ・モデルのファイン・チューニングなどがあります。17
Haystackは、カスタマイズされたエンドツーエンドのAIシステムを構築するための2つの主要な概念(コンポーネントとパイプライン)に基づいて構築されたオープンソースのPythonフレームワークです。Haystackは、多くのLLMプロバイダー、ベクター・データベース、AIツールと提携しており、その上に構築するツールは包括的かつ柔軟になっています。18
haystackが提供する一般的なユースケースには、セマンティック検索システム、情報抽出、FAQスタイルの質問回答などがあります。19
crewAIは、LangChain上に構築されたオープンソースのマルチエージェント・フレームワークです。ロールプレイング型の自律AIエージェントがクルーに編成され、LLMアプリケーション関連のワークフローとタスクを完了します。20crewAIは、crewAI+と呼ばれるエンタープライズ・バージョンを提供しています。
初心者とより技術的なユーザーの両方を対象としたアプリケーションには、ランディング・ページの生成、在庫分析、接続などがあります。crewAIはAgentOpsを使用してエージェントの監視とメトリクスを提供します。21
LLMオーケストレーション・フレームワークは、生成AIアプリケーションの進化に伴い成熟を続け、より多くの人工知能ソリューションのためにLLMOpsワークフローを合理化します。
オーケストレーション・フレームワークは、LLMアプリケーションがモデルを最大限に活用するために必要なツールと構造を提供します。将来のフレームワークでは、AIエージェントとマルチエージェント・システムを使用して、インテリジェントな自動化を促進する可能性があります。
新たなオーケストレーション・フレームワークのパターンは、機能を実行可能にするための統合が可能なマルチエージェント・システムなどのより複雑なアーキテクチャーを構築することで、エージェントに自律的なワークフローを実現するために必要なスキルが与えられることを示唆しています。
オーケストレーション・プラットフォームでは、使いやすさも優先事項になりつつあります。市場が成熟するにつれて、ユーザー・エクスペリエンスに重点を置いたツールがさらに開発されるでしょう。このアプローチにより、これらのフレームワークを使用する際の技術的な障壁も低くなります。IBM watsonx Orchestrateなどの一部のオーケストレーション・フレームワークでは、シンプルなエンゲージメントと使いやすさを実現するために自然言語インターフェースを活用しています。
LLMオーケストレーションの管理は複雑なタスクですが、オーケストレーションはLLM駆動型ワークフローの拡張と自動化の鍵となります。
watsonxプラットフォームにある基盤モデルのIBMライブラリーを探索し、ビジネスに合わせて自信を持って生成AIを拡張します。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。
1 Andrei Kucharavy、「Fundamental Limitations of Generative LLMS」、SpringerLink、1970年1月1日、 https://link.springer.com/chapter/10.1007/978-3-031-54827-7_5。
2 Anna Vyshnevska、「LLM Orchestration for Competitive Business Advantage: Tools & Frameworks」、Master of Code Globa社、2024年6月26日。 https://masterofcode.com/blog/llm-orchestration。
3 Matt Bornstein、Rajko Radovanovic、「Emerging Architectures for LLM Applications」、Andreessen Horowitz社、2024年5月8日。 https://a16z.com/emerging-architectures-for-llm-applications/
4 Vyshnevska、「LLM Orchestration for Competitive Business」。
5 「Quick Reference」、LangChain、 https://python.langchain.com/v0.1/docs/modules/model_io/prompts/quick_start/
6 「Chains」、LangChain、 https://python.langchain.com/v0.1/docs/modules/chains/。
7 Manish、「Compounding GenAI Success」。
8 Salvador Garciaら、「Big Data Preprocessing: Methods and Prospects - Big Data Analytics」、SpringerLink、2016年11月1日、 https://link.springer.com/article/10.1186/s41044-016-0014-0。
9 Manish、「Compounding GenAI Success」。
10 「Create Your AI App!」、Langflow、 https://www.langflow.org/。
11 「Conceptual Guide」、LangChain、 https://python.langchain.com/v0.2/docs/concepts/。
12 「Use Cases」、LangChain、 https://js.langchain.com/v0.1/docs/use_cases/。
13 「Getting Started: Autogen」、AutoGen RSS、 https://microsoft.github.io/autogen/docs/Getting-Started/。
14 「Multi-Agent Conversation Framework: Autogen」、AutoGen RSS、 https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat/#diverse-applications-implemented-with-autogen。
15 「AgentOps」、AgentOps、 https://www.agentops.ai/?=autogen 。
16 「Loading Data(Ingestion)」、LlamaIndex、 https://docs.llamaindex.ai/en/stable/understanding/loading/loading/。
17 「Use Cases」、LangChain、 https://js.langchain.com/v0.1/docs/use_cases/。
18 「What Is Haystack?」、Haystack、 https://haystack.deepset.ai/overview/intro。
19 「Use Cases」、Haystack、 https://haystack.deepset.ai/overview/use-cases。
20 「Ai Agents Forreal Use Cases」、crewAI社、 https://www.crewai.com/。
21 「Agent Monitoring with AgentOps」、crewAI社、 https://docs.crewai.com/introduction#agentops。