13-2. 例2:文書要約ワークフロー(手動作成)

文書を受け取って要約するワークフローを作ります。序章0-5の「議事録・報告書の要約」にあたる題材です。この例の目的は、複数のノードを組み合わせて1つの流れを作る操作(第7章)を一通り実践することです。外部のサービスへの接続は使わないため、庁内ネットワークから外部に接続できない環境でも作れます。

作る流れは次の2段階です。まず長文を貼り付けて要約する3ノードの流れを作って動かし、その後、ファイルを受け取れる形に発展させます。第7章7-2の「1つ追加するたびに動きを確かめながら進める」進め方の実践です。

段階 流れ
基本形 開始(ユーザー入力:長文テキスト)→ LLM(要約)→ 出力
発展形 開始(ユーザー入力:ファイル)→ テキスト抽出 → LLM(要約)→ 出力

前提(必要なもの)

手順1:ワークフローを作成する

  1. スタジオの左上の「アプリを作成する」の「最初から作成」ボタンを押します(第2章2-1)。
  2. アプリの種類で「ワークフロー」を選びます(第2章2-2)。
  3. アプリ名(例:文書要約)と説明を入力して作成します(第2章2-3)。

完了状態:キャンバス(ノードを並べて線でつなぐ作業領域)の編集画面が開いている(第2章2-4)。

手順2:ユーザー入力ノードに入力欄を作る

  1. ユーザー入力ノード(処理の入口。第10章10-2)をクリックして設定欄を開きます。人が動かす「ユーザー入力」のモードで使います。
  2. 入力欄を1つ追加します。変数名は半角英数字(例:document_text)、表示名は「要約したい文書」など分かりやすい名前、型は「段落」(長文を貼り付けられる型。第10章10-2)にします。

完了状態:ユーザー入力ノードに、段落型の入力欄が1つ定義されている。

手順3:LLMノードを追加して指示文を書く

  1. ユーザー入力ノードの後ろにLLMノードを追加し、線でつなぎます(第7章7-2・7-3)。
  2. LLMノードの設定欄で、お使いの環境で使えるAIモデルを選びます。
  3. 指示文(プロンプト)の欄に、次のような指示文を書きます。
あなたは行政文書を整理する事務担当です。
入力された文書を「概要」「期日・数値」「必要な対応」の3項目に
整理して要約してください。
文書に書かれていないことは書かないでください。
応答は日本語で書いてください。
  1. 指示文の中の、文書を差し込みたい位置で「/」を入力し、候補一覧からユーザー入力ノードの変数(document_text)を選んで差し込みます(第7章7-3)。

完了状態:LLMノードでモデルが選ばれ、指示文の欄に指示文とユーザー入力ノードの変数が入っている。

LLMノードの設定欄で、指示文の欄に指示文とユーザー入力ノードの変数が差し込まれた状態

手順4:出力ノードを追加する

  1. LLMノードの後ろに出力ノード(ワークフローの処理結果を返すノード。第10章10-2)を追加し、線でつなぎます。
  2. 出力する変数に、候補一覧からLLMノードの出力(生成した文章)を選んで割り当て、名前(例:summary)を付けます。

完了状態:ユーザー入力 → LLM → 出力の3ノードが線でつながっている。

出力ノードの設定欄で、LLMノードの text を出力する変数に割り当てた状態

ユーザー入力・LLM・出力の3ノードがつながった編集画面

手順5:テスト実行で確かめる

  1. 編集画面の右上の「テスト実行」を押します(第7章7-5)。
  2. 入力欄に、試したい文書を貼り付けて「実行開始」を押します。手元に文書がない場合は、次の架空のサンプルを使えます。
職員向け文書作成研修のご案内

標記の研修を次のとおり実施します。
日時は10月15日(木)の午後2時から4時まで、会場は庁舎3階の
大会議室です。定員は40名で、申し込みは10月8日(木)までに
庁内システムの研修申込フォームから行ってください。
当日は筆記用具を持参してください。資料は当日配布します。
定員を超えた場合は、各課1名を優先して調整します。
  1. 実行結果と、各ノードが成功したかを確認します。

完了状態:3項目(概要・期日・数値・必要な対応)に整理された要約が結果として返っている。

テスト実行の結果。概要・期日と数値・必要な対応の3項目に整理された要約が返った状態

ノードごとの成否を見たいときは、結果パネルの「実行追跡」タブを開きます(第4章4-3)。

手順6:ファイルにも対応させる(発展形)

長文の貼り付けだけでよければ、ここまでで完成です。Word・PDFなどのファイルを受け取って要約したい場合は、次のように発展させます。AIモデルはファイルをそのままは読めないため、ファイルから文字を取り出すテキスト抽出ノード(第10章10-4)をはさみます。

  1. ユーザー入力ノードの設定欄で、入力欄を「単一ファイル」型で作ります(変数名の例:document_file。段落の欄と入れ替えるか、ファイル版のワークフローを別に作ります)。
  2. ユーザー入力ノードとLLMノードの間にテキスト抽出ノードを追加し、開始 → テキスト抽出 → LLM の順に線をつなぎ直します(第7章7-3)。
  3. テキスト抽出ノードの入力に、ユーザー入力ノードのファイル変数(document_file)を指定します。取り出した文章は変数 text に入ります(第10章10-4)。
  4. LLMノードの指示文の欄を開き、差し込む変数を、ユーザー入力ノードの変数からテキスト抽出ノードの出力(text)に差し替えます。ノードの構成を変えた後は、参照している変数が残っていないかを必ず確認します(第7章7-4)。
  5. テスト実行で、手順5と同じ内容のファイルを指定して実行し、同じ趣旨の要約が返ることを確認します。

完了状態:ファイルを指定してテスト実行すると、貼り付けたときと同じ趣旨の要約が返る。

完成の確かめ方

手順5のサンプル文(または同等の架空の文書)を入力して、次の3点を満たせば完成です。

確認する点 こう返れば完成
要約の形 「概要」「期日・数値」「必要な対応」の3項目に整理されて返る
内容の正しさ 期日・数値(例:10月15日・定員40名・申込期限10月8日)が元の文書と一致している
余計な内容が無いか 元の文書に書かれていない事柄(勝手な推測・創作)が入っていない

発展形まで作った場合は、同じ文書のファイルを指定して、同じ3点を確認します。

うまくいかないときの主な確認先

症状 確認先
テスト実行で「変数が見つからない」という趣旨のエラーが出る 変数の参照と線のつなぎ方を確認します(第7章7-3・7-4、第2章2-8)
要約の形・内容が期待と違う LLMノードの指示文を見直します。LLMノードの設定項目の意味は第10章10-2
ファイルから文字が取り出せない テキスト抽出ノードの対応ファイル形式を確認します(第10章10-4)。文字情報のないPDF(画像だけのPDF)からは取り出せません
どのノードで止まったか分からない テスト実行後の確認の順番(第7章7-5「うまく動かないときの確認の順番」)に沿って切り分けます
エラーメッセージ別の対処 第14章(トラブルシューティング)