メインコンテンツにスキップ
ブログコンピュートパラダイムシフト:従来のAPIから言語主導の統合へ

パラダイムシフト:従来のAPIから言語主導の統合へ

伝統的APIから言語駆動統合へのパラダイムシフト

異なるソフトウエア・システム同士を対話させることは、開発者にとって古典的な課題である。何年もの間、我々はこれを実現するために、明確に定義されたルールを持つAPIを使用してきた。しかし今、大規模言語モデル(LLM)がゲームを変えつつあり、厳密なフォーマットだけでなく、言語を理解することに基づいてシステムが相互作用する新しい方法を提供している。これはエキサイティングな可能性を開くと同時に、解決すべき新たな問題セットを提示する! 

これが開発者にとって何を意味するのかを探ってみよう。

かつてのシステム接続方法従来のAPI

私たちが普段どのようにシステムを接続しているか考えてみよう。私たちは次のようなものを使います:

  • REST API:多くの場合JSONを使用し、おそらくOpenAPI(Swagger)仕様で、APIはデータ型(文字列や数値など)を含め、システムに出入りするデータを正確に記述する。
  • RPC(リモート・プロシージャ・コール):gRPCのようなツールは、プロトコル・バッファーのようなものを介してシステム間で関数を呼び出し、関数が必要とするものと返すものを正確に定義することができる。
  • SOAP/WSDL:これは古い方法だが、サービスの詳細な記述(WSDL)に依存している。
  • メッセージキュー(Kafka、RabbitMQなど):これらのシステムは、通常、合意された特定のフォーマットに従ってメッセージを送受信する。

ここで重要なのは、これらの方法は明確なルールとフォーマットに依存しているということだ。マシンは、データが事前に定義された構造(スキーマや型定義)と一致するかどうかをチェックする。開発者はドキュメントを読んでAPIが何をするのかを理解し、必要な順番でAPIを呼び出し、APIが返すデータを処理するコードを書く。これは、コンピューティングの登場以来、開発者が行ってきたダンスである。

新たなパラダイム:MCP、エージェント・フレームワーク、プロンプト・アグメンテッドAPI

厳格に定義された従来のAPIから、LLMの流動的で言語主導のインタラクションへの移行は、必ずしもすべてのシステム・コンポーネントに対して純粋で制約のない自然言語への直接的な飛躍とは限らない。その代わりに、このギャップを埋めるために設計された強力な中間パラダイムやフレームワークの台頭が見られ、既存のシステムや新しいサービスを "LLM-consumable "にすることを可能にしている。

このような新しいアプローチの中心にあるのは、プロンプトを拡張したAPIという概念である。LLMにゼロから機能を直感させたり、開発者に複雑なアダプタコードを書かせたりするのではなく、由緒あるRESTサービスであれ、新しいgRPCエンドポイントであれ、APIをリッチな自然言語記述で「装飾」または「ラップ」します。これらの記述は、LLM専用のユーザーマニュアルのような役割を果たし、APIの目的、呼び出し方、APIが期待するパラメータ(とその形式)、APIが返すものを説明する。

例えば、モデル・コンテキスト・プロトコル(MCP)は、LLMベースのコントロール・プレーンに多様な機能を公開する、より構造化された方法の一例である。システムは、メタデータや自然言語記述とともに、サービスやそれらがサポートするアクションを宣言することができる。LLMは、この宣言された機能の「メニュー」を照会し、ユーザーの要求やより高いレベルの目標に基づいて、これらの基礎となるサービスへの呼び出しをオーケストレーションすることができる。

これは、急速に発展しているエージェントフレームワークの世界と密接に結びついています。これらのフレームワークは、多くの場合、主要なLLMを動力とする制御エージェントを構築するための足場を提供します。この中心的なエージェントは、推論、計画、タスクの委任ができるオーケストレーターや "頭脳 "として機能します。本当の力を発揮するのは、このコントロール・エージェントが一連の「ツール」やサブ・エージェントにアクセスできるようになったときです。

これらのサブ・エージェントは大きく変わる可能性がある:

  • 複雑なデータ分析やクリエイティブなコンテンツ生成のような特定のタスクのために設計された、他の特殊なLLMベースのエージェントもあるかもしれない。
  • 他には、よりシンプルなソフトウェア・モジュールや、重要なこととして、既存の伝統的なAPIのラッパーがあるかもしれない。このシナリオでは、ある開発者は、例えば社内の注文管理APIの周りに軽量なラッパーを作成する。このラッパーは単に技術的なエンドポイントを公開するだけでなく、APIの機能を自然言語で説明する注意深く作られたプロンプトを含む:"このツールは注文ステータスを取得することができます。このツールは注文ステータスを取得することができます。'order_id'を入力として必要とし、現在のステータス、配送予定日、注文のアイテムを返します。"

これらのパラダイムに共通するのは、新しいマイクロサービスであれ、ラッパーを介して公開されるレガシーシステムであれ、APIはもはや単なる技術契約ではないということだ。APIは説明的なプロンプトのレイヤーで補強されている。これによって、利用するLLM(通常は制御エージェント)は、膨大な数のツールと機能を動的に発見し、理解し、利用することができる。LLMは各ツールの複雑な実装の詳細を知る必要はなく、その使い方のプロンプトベースの説明を理解すればよい。このシフトは、システム統合についての考え方を根本的に変え、説明的なプロンプトの明確さ、正確さ、包括性をさらに重視するものである。

未来は...違う

厳密なフォーマット・ベースのAPIや、最近出現しつつあるプロンプト・オーグメンテッド・インターフェイスから、LLMを使った真に広範な言語ベースのインタラクションに移行することは、大きな変化だ。開発者として、私は可能な入力、出力、エラー・メッセージが明確に定義されているという事実に慣れてきた。LLMを使って仕事をすることは、これまで持っていなかった膨大な能力をもたらしてくれる。しかし、それはまた、あなたが他のシステムとどのように相互作用してきたかを再定義するものでもある。開発者として、能力を説明するための正確で包括的なプロンプトを作成する方法を理解することは、特に複数の人工知能 エージェントが協力する必要があるシステムを構築する際に、ますます重要になってきている。

こちらもどうぞ...

コメント 

コメントを残す

あなたのメールアドレスは公開されません。必須項目には*印がついています。