はじめまして、LayerX AI・LLM事業部の澁井(しぶい)と申します。 今回は今年3月から取り組んでいるR&Dプロジェクト「ワークフロー自動生成」についてご紹介します。まだ研究途上で完成には至っていませんが、なかなか面白い試みだと思うので、ぜひ読んでみてください。
私たちAI・LLM事業部では、Ai Workforceというプロダクトを開発しています。Ai WorkforceはLLM(大規模言語モデル)を活用したワークフローエンジンであり、LLMを用いて各種ビジネスドキュメントワークを効率化、自動化することを目的としています。 契約書、提案書、発注書、決算書など、多様なビジネスドキュメントを読み込み、変換・整形・情報抽出・整理などの処理を、LLMを活用して実現しています。
Ai Workforceをさらに効率的に活用する手段として、ドキュメント処理のワークフローを自動的に設計・生成することを目指しています。本ブログでは、ワークフロー自動生成の目的、エンジニアリング手法、そしてチャレンジについて書いていきます。
背景と課題
世の中には多種多様なドキュメントワークが存在します。例えば契約書一つを取っても、ドラフトの作成、レビュー・修正、交渉、サイン、保管、そして検索や参考資料としての活用など、さまざまなプロセスが含まれます。これらの作業は一部が人間による処理、一部がソフトウェアやシステムによる処理で行われています。

近年、LLMの登場により、ドキュメントワークのような知的作業を自動化するトレンドが加速しています。しかし、実業務の複雑さやドキュメントの多様性を丁寧にサポートしようとすると、LLMを多段階で活用する複雑なワークフローが必要になります。
例えば、多様なフォーマットの注文書からデータを整形して統一的に情報を抽出するだけでも、確実性を担保するためには分岐や多段階の処理が求められます。このようなワークフローを設計・構築するには、業務やドキュメントの複雑さに応じて、数人月の工数が必要となることも珍しくありません。その成果として数十ステップのワークフローが出来上がることがあり、トラブルシューティングや修正が難しい状況になります。

ワークフロー作成のプロセスは以下の3つに分けられます。
- ワークフローの全体像および小さなワークフローを設計する。
- ワークフロー内の各タスクを作成する(LLMのプロンプトやPythonスクリプトを書く)。
- 作成したタスクやワークフロー全体を実行し、評価・修正する。
特に難しいのは、2.のプロンプト作成において、常に安定した品質の結果を得られるとは限らない点です。エッジケースとなるドキュメントや複雑な業務内容によって、一つのプロンプトでカバーできる範囲が変わるため、必要に応じてタスクを分割し、多段階のプロンプトで処理したり、一部をPythonでルールベースの処理に切り替えたりするエンジニアリングが求められます。
一方で、ワークフローで解決しようとしている課題は、入出力と処理手順がある程度決まった業務であり、未知の領域を探索するものではありません。LLMが登場する以前から、ソフトウェアの世界では入力データに対して何らかの処理を施し、目的の出力データを生成するプログラムが数多く書かれてきました。各種プログラミング言語やソフトウェアのソースコードを学習しているLLMであれば、こうしたデータ処理は知識として持っていることが期待できます。ワークフロー自動生成の目的は、LLMの力によって入力と出力の間を効率的に埋める仕組みを構築することにあります。
ワークフロー自動生成の方策選定
ワークフロー自動生成に取り組むにあたり、以下の3つの方法論を検討しました。
入出力だけを用意した探索方式:入力ドキュメントと目的要件を入力として、LLMのReasoning能力を活用して、入力ドキュメントから目的要件を満たすワークフローを生成する方式です。この方法では、各タスクのパラメータ(プロンプトやPythonスクリプト)をLLMで生成し、ActionとFeedbackを繰り返して適切なパラメータを得ることを目指します。ワークフローが目的を達成するまでFeedback loopを回して修正を重ねます。
入出力と手順を用意した探索方式:入力ドキュメントと目的要件に加え、人間が実施する際の手順を入力とし、LLMのReasoning能力を活用して手順を模倣しながらワークフローを生成する方式です。この方法では、手順書を模倣して各タスクのパラメータを生成し、ActionとFeedbackを繰り返して適切なパラメータを得ることを目指します。手順を提示することでワークフローやタスクの方向性を示し、効率的なワークフロー生成を実現します。
既存のワークフローをLLMで学習する方式:既存のワークフローをデータとして、LLMのFine tuningに活用し、LLMにワークフロー生成能力を付与する方式です。この方法では、相応のデータセットとLLMのFine tuningが必要となります。
「1. 入出力だけを用意した探索方式」はAI AgentのPlanning、Action、Feedbackのアイデアを応用した方法です。入力と目的のみが提示されるため、LLMはその間を自由に探索しながらワークフローを生成します。「2. 入出力と手順を用意した探索方式」は1.と似ていますが、最初に手順を提示する点が異なります。「3. 既存のワークフローをLLMで学習する方式」は全く異なるアプローチで、データセットとしてのワークフローの準備とFine tuningが伴います。
将来的には3.にチャレンジしたいですが、確実性を期して、本研究では初手として「2. 入出力と手順を用意した探索方式」から検証を開始しました。この方法は、手順を提示することで探索空間を狭め、効率的なワークフロー生成を実現する可能性が高いと考えています。

ワークフロー自動生成
目標を刻む
ワークフロー自動生成で解決したい課題は、数人月かかるワークフロー作成作業の工数を大幅に削減することです。もちろん、最初から100%の自動化を実現できれば理想的ですが、現実的ではありません。そこで、手が届く範囲の目標を設定し、段階的に進めることにしました。
目標1:最大5ステップ程度のタスクで解決できるワークフローを自動生成する。
- 初めから数十ステップの複雑なワークフローをEnd-to-Endで自動生成するのではなく、まずは小規模な課題に取り組みます。大規模なワークフローも実際には小さなサブワークフローの組み合わせであるため、まずは小さなワークフローを正確に作成し、それを組み合わせることで全体を構築するアプローチを採用します。
目標2:全体の70%程度を自動生成し、残りの30%は人間が修正する品質を目指す。
- LLMに限らず、機械学習やAIで100%の精度を得ることはできません。ワークフロー自動生成でも、LLMで生成された成果物が人間の求める品質やフォーマットと完全に一致することは稀です。そのため、成果物は人間が確認・修正することを前提としつつ、大まかに有用な品質を目指します。
これらの目標を設定することで、現実的かつ実現可能な範囲でワークフロー自動生成の価値を最大化することを目指しています。
ワークフロー自動生成を作る
ワークフロー自動生成のプロセスは、以下の2つのステップで構成されています。
ワークフロー全体の設計
- LLMに入力ドキュメント、目標、手順を入力し、ワークフローの全体像を設計します。この段階では、タスクの箱を用意するだけで、具体的なパラメータは設定しません。まずは全体の流れを用意し、必要なタスクを明確化することに重点を置きます。
個々のタスクのパラメータ調整
- 次に、LLMに目標と手順を入力し、各タスクのパラメータ(プロンプトやPythonスクリプト)、出力スキーマ、評価指標を生成します。タスクのパラメータ設定は、ワークフローの最初のタスクから順に進めていきます。
- パラメータを設定すると同時に、そのタスクで達成すべき評価指標を生成し、タスクを実行して達成度合いを評価します。基準に達していない場合は、やり直しを繰り返しながら調整を進めます。最後のタスクまで調整が完了したら、ワークフロー全体を通して実行し、結果を評価します。
- 評価は絶対評価と相対評価を用意して使い分けます。絶対評価では、評価指標を満たすかどうかを評価し、基準点以上であれば合格とします。相対評価では、複数のパラメータを用意して評価し、その中で最も評価指標を満たすものを合格とします。パラメータの品質を担保するときは絶対評価を用い、広くパラメータ探索を進めるときは相対評価を用います。

2.のプロセスでは、タスクパラメータの生成時に入力ドキュメントを使用しません。これは、汎用性を確保するための重要な工夫です。特定のドキュメントに依存したプロンプトでは、他のドキュメントに適用できない可能性があるため、最初からドキュメントを除外してパラメータを生成します。
入力ドキュメントがないのにプロンプトのようなパラメータを生成できるのかと思うかもしれません。そこでさらなる工夫として、各タスクのパラメータ生成時にその出力スキーマを一緒に定義するようにしています。各タスクでは前のタスクの出力スキーマを入力として使用することで、入力データの内容や構造(データ名、説明、データ型など)を次のタスクに渡します。この仕組みにより、後続の処理を適切に実行できるようにしています。出力スキーマを構造化することで、タスク間のデータ連携をスムーズにし、エラーを防ぐことが可能になります。詳細はTipsをご参照ください。
このように、ワークフロー自動生成は段階的な設計と調整を通じて、効率的かつ汎用性の高いワークフローを構築することを目指しています。
結果として、現状では簡単な数ステップのワークフローは5分で作成できています。より高い正確性と安定性を担保しようと模索し、日々研究しています。
ワークフロー自動生成の挑戦
今回書いたこと以外にも、ワークフロー自動生成では色々な手法やエンジニアリングを駆使して課題解決にチャレンジしています。ワークフローの作成工数が削減されれば、より多くのプロジェクトでワークフローを気軽に作成し、ひいては素早い業務効率化が実現できると信じています。 以下に、特に重要な挑戦とその取り組みを紹介します。
- MCTSや他の最適化手法を用いた異なるアプローチ
- プロンプトの汎用性確保
- 評価とフィードバックループの改善
- ワークフローの組み合わせによる数十ステップワークフローの生成
ワークフロー全体を通じて、複数のサブワークフローが連携する効率性を最大化することも課題の一つです。各タスクのパラメータ調整だけでなく、タスク間、またはサブワークフロー間の連携を最適化することで、全体のパフォーマンスを向上させていきます。
これらの挑戦を通じて、ワークフロー自動生成の実現に向けた道筋を切り開いています。最終的には、ワークフロー作成の工数を大幅に削減し、より多くの業務を自動化できる未来を目指しています。
Tips: LLMを活用するメタプログラミング(みたいなもの)
持論ですが、LLMを活用したプログラムを設計する重要なポイントは「LLMの出力を自然言語のまま扱わない」ことだと思います。多くのプログラミング言語は、自然言語(String型に長文が入った状態)をそのまま扱うよりも、データクラスで定義された整形されたオブジェクトを扱うほうが得意です。そこで、ワークフロー自動生成では、LLMのレスポンスをすべてFunction callingやStructured outputに指定し、データが明確に定義されたオブジェクトとして取得することを徹底しています。
このアプローチは、タスクで定義されるプロンプトのレスポンスにも適用されます。出力をStructured outputにすることで、以下のような利点が得られます。
構造化されたデータの取得
- タスクの実行結果が構造的に整理された状態で得られるため、後続の処理がスムーズになります。
エラー検出の容易化
- 実行結果が想定した構造に沿わない場合、ValueErrorやValidationErrorとしてエラーを検出できるため、正しいデータ構造を維持できます。

さらに、Pythonスクリプトの実行にもこの利点を活用しています。ワークフロー自動生成では、Pythonスクリプトの引数と返り値を構造化されたデータクラスとして定義することで、以下のような効果を得ています。
- 構造が曖昧なオブジェクトや自然言語を基にスクリプトを書くよりも、データクラスを扱うほうがプログラミングが容易で、実行の安定性が向上します。
- データ型が明確に定義されているため、スクリプトの再利用性が高まり、汎用性のあるコードを作成できます。
こうした工夫を実践するため、タスクのパラメータ生成では同時に出力スキーマを生成し、LLMが実行するタスクの出力スキーマをメタ的に定義する仕組みを構築しています。この工夫により、LLMのレスポンスを構造化し、後続の処理を効率化することが可能になります。
このようなメタプログラミング的なアプローチは、LLMを活用したプログラム設計において非常に有効であり、ワークフロー自動生成の品質向上と効率化に大きく貢献しています。
最後に
ワークフロー自動生成の研究について、これまでの取り組みや課題、そしてその解決に向けた工夫を紹介しました。今回取り上げたビジネスドキュメント業務のワークフロー以外にも、多段階のタスクを組み合わせた処理はさまざまな分野で活用されています。
例えば、以下のような分野での応用が期待できます。
- AI Agentのワークフロー:AI Agentが複雑な指示を実現するときに多段階の処理を組み合わせることがある。
- データパイプライン:複雑なデータ処理フローの自動化。
- 機械学習パイプライン:モデルのトレーニングから評価、リリースまでのプロセスの効率化。
- CI/CDパイプライン:ソフトウェア開発の継続的インテグレーションとデプロイメントの最適化。
ワークフロー自動生成がこれらの分野でも成功すれば、さらに広い範囲で複雑な処理手順の自動化を実現できる可能性があります。これにより、エンジニアリングの効率化だけでなく、より多くのプロジェクトでワークフローを気軽に活用できる未来が広がるでしょう。
現在、こうしたR&Dを担うチームを立ち上げ中です。もしこの記事に興味を持っていただけた方がいれば、ぜひご連絡ください。一緒に未来のワークフロー自動生成を形にしていきましょう。
Xの@LayerX_techアカウントではLayerXの様々な取り組みを発信していますので、是非こちらもフォローしてください。