Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Building agents with Controlled Autonomy using our new PlanBuilder interface

2025年09月10日に「Dev.to」が公開したITニュース「Building agents with Controlled Autonomy using our new PlanBuilder interface」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Portia AIが新ツール「PlanBuilder」を公開した。これは、AIエージェントの各ステップで自律性のレベルを細かく制御する「Controlled Autonomy」を可能にする。複雑な設定なしに、信頼性の高いAIエージェントを効率的に開発でき、オープンソースSDKとして利用できる。

ITニュース解説

システムエンジニアを目指す初心者に向けて、エージェントと呼ばれるプログラムの構築方法と、その信頼性を高めるための新しい考え方について説明する。近年、人工知能、特に大規模言語モデル(LLM)の進化により、まるで人間のように複雑なタスクをこなす「エージェント」というソフトウェアシステムが注目を集めている。しかし、これらのエージェントを実際に業務で使うためには、彼らがどれだけ「自律的」に行動するかと、その行動がどれだけ「信頼できる」かのバランスを取ることが非常に難しい課題であった。Portiaという企業がこの課題に対し、「制御された自律性」という解決策と、それを実現するための新しいインターフェース「PlanBuilderV2」を提案している。

制御された自律性とは、エージェントが実行する一つ一つのステップにおいて、その自律性のレベルを細かく調整できる能力を指す。例えば、非常に慎重に行動させたいステップでは自律性を低くし、逆に柔軟な判断を必要とするステップでは自律性を高く設定できる。これは、エージェントを単に「好き勝手に動かす」のではなく、「必要な時に必要なだけ自由を与える」という考え方である。エージェントのプロトタイプ段階では、多くの場合、最大限の自律性を与えて試すことがある。しかし、本番環境で使うような複雑なタスクでは、このような「完全な自律性」では予期せぬエラーや信頼性の低下につながることが多い。Portiaの経験によると、タスクを小さなサブタスクに分解し、それぞれのサブタスクに対して適切な自律性を設定することで、エージェントははるかに信頼性の高い実行が可能になるという。例えば、情報収集のような、システムに大きな影響を与えない読み取り専用の作業には高い自律性を与え、実際にデータを変更するような重要なアクションを実行する際には、自律性を低くして慎重に制御することが有効だ。

この「制御された自律性」を実現するためのツールが、Portiaの新しい「PlanBuilderV2」インターフェースである。これは、エージェントが何を、どのような順序で、どの程度の自律性で実行するかを、コードで明確に定義できる仕組みだ。PlanBuilderV2は、さまざまな種類の「ステップ」を組み合わせることで、エージェントの行動計画を構築する。

具体的なステップの種類をいくつか見てみよう。 まず、「invoke_tool_step」は、LLMの判断を介さず、指定したツールを直接呼び出すステップである。これは、例えば会社の返金ポリシーが書かれたファイルを読み込むなど、固定の引数で確実にツールを使いたい場合に非常に有効で、高速に処理できる。自律性は低いが、その分信頼性が高い。

次に、「single_tool_agent_step」は、LLMが一度だけ単一のツールを呼び出してタスクを達成するステップである。例えば、顧客のメールアドレスから返金申請メールを探す際に、LLMがメールボックス検索のための適切なクエリを生成し、メール検索ツールを一度だけ使うといった用途で使う。ある程度の柔軟性が必要だが、行動範囲は単一ツールに限定されるため、中程度の自律性を持つ。

「llm_step」は、最も直接的にLLMの判断能力を活用するステップである。前のステップで読み込んだ返金ポリシーと返金申請メールの内容をLLMに渡し、その情報に基づいて返金を承認するか却下するかを判断させる、といった使い方をする。このステップは高い自律性を持ち、複雑な意思決定をLLMに任せることができる。また、StepOutputという機能を使うことで、前のステップの実行結果を次のステップの入力として簡単に渡せるようになっている。出力形式を厳密に定義できるため、LLMの自由なテキスト出力ではなく、構造化されたデータとして結果を受け取ることが可能だ。

「function_step」は、エージェントの計画実行中に、Pythonで書かれた関数を直接呼び出すステップである。例えば、LLMが判断した返金決定をデータベースに記録する関数を呼び出すなど、コードで記述された既存の機能をエージェントのフローに組み込むことができる。これはLLMを介さないため、非常に高い信頼性と効率性を持つ。

さらに、「react_agent_step」は、複数のツールを組み合わせて、より複雑なタスクをインテリジェントに解決する、最も自律性の高いエージェントである。例えば、Stripeのような外部サービスから顧客の支払い情報を探し出す際に、複数のAPIツールを組み合わせて必要な情報を取得するような場面で活躍する。LLMが状況に応じてどのツールを使い、どのように連携させるかを判断するため、高い柔軟性を持つ。

PlanBuilderV2は、これらの異なる自律性レベルを持つステップを柔軟に組み合わせることで、エージェント全体の挙動を細かく制御できる点が最大の強みである。これにより、プロトタイプから本番環境へ移行する際に必要となる「信頼性」を確保しやすくなる。

エージェントの信頼性をさらに高めるための機能として、PlanBuilderV2はプログラミング言語のような制御構造も提供する。例えば、「if_」を使って特定の条件に基づいて次のステップを分岐させたり、「loop」を使って特定の処理を繰り返し実行させたりすることができる。これにより、エージェントの行動計画をより論理的かつ堅牢に構築できる。

また、本番環境でエージェントを利用する上で不可欠なのが、人間との連携である。PlanBuilderV2には、「user_verify」や「user_input」といった機能が用意されている。例えば、エージェントが返金処理を提案した際に、最終的な承認を人間に求める「user_verify」を使ったり、返金方法について顧客に選択肢を与える「user_input」を使ったりすることで、エージェントの自動実行と人間の確認・指示をシームレスに連携させることが可能となる。これにより、システム全体の安全性と信頼性を高めることができる。

「function_step」のように、コードを直接組み込む機能は、LLMだけではカバーしきれない領域で非常に重要となる。LLMは柔軟な判断に優れる一方で、厳密なルール適用や高速なデータ処理には向かない場合がある。function_stepを活用することで、エージェントの行動に「ガードレール」を設定し、特定の条件で不正な処理を防いだり、データ形式の変換のような単純な処理を高速に実行したり、既存の重要なビジネスロジックをエージェントに組み込んだりすることが可能になる。これにより、エージェントの動作をより正確に、かつ効率的に制御できるようになる。

Portiaは今後、PlanBuilderV2にさらに強力な機能を追加していく予定だ。例えば、「並列処理」機能を使えば、複数のステップを同時に実行して処理速度を向上させることができ、「自動キャッシュ」機能は、一度計算した結果を保存しておくことで、計画の一部を変更して試す際に、最初から全てを再実行する必要をなくし、開発効率を大幅に高める。「エラーハンドリング」機能では、特定のステップでエラーが発生した場合の処理(再試行や計画の終了)を定義できるようになり、システムの堅牢性が向上する。また、「リンクされたプラン」機能を使えば、複数のエージェント計画を連携させ、より大規模で複雑なワークフローを構築できるようになる。

PlanBuilderV2は、コードを使ってエージェントの行動を細部まで設計し、制御したい場合に特に適している。一方で、Portiaには自然言語の指示から動的に計画を生成する「計画エージェント」も存在する。PlanBuilderV2は、この計画エージェントと組み合わせて使うことで、より柔軟かつ信頼性の高いエージェントシステムを構築できる。つまり、動的に計画を生成する部分と、重要なステップで厳密に制御する部分を組み合わせることで、状況に応じた最適なエージェント動作を実現できるのだ。PlanBuilderV2はオープンソースSDKとして公開されており、誰でも利用を試すことができる。この新しいインターフェースが、システムエンジニアを目指す皆さんにとって、信頼性の高いエージェントシステムを構築するための強力なツールとなるだろう。

関連コンテンツ

関連IT用語