生成AIに仕事をお願いするとき、
「この場合はこう判断して」
「この項目はこの形式にそろえて」
「分からないものは勝手に推測しないで」
と、毎回細かなルールを説明していないでしょうか。
実際の業務には、単なる知識だけではなく、
「この仕事は、こういう手順・ルールで進める」
というノウハウがあります。
今回は、そんな業務知識や作業手順をAIエージェントに持たせる「Agent Skills」を、Strands Agentsで試してみました。
題材にしたのは、フォーマットの異なる請求書・見積書から、必要な情報を同じ形式で取り出す業務です。
フォーマットが違う帳票を、どうやって同じように処理する?
請求書や見積書は、会社によってフォーマットが違います。
ある帳票には「請求書番号」と書かれていて、別の帳票では「No.」になっている。
日付も、
「2026年7月1日」
「2026/07/01」
など、表現が異なるかもしれません。
一方、システムで扱いたい情報は、
- 会社名
- 帳票番号
- 発行日
- 振込期限
- 摘要
- 金額
など、ある程度共通しています。
そこで今回は、発行元や書式が異なる4種類の請求書・見積書PDFを用意。
AIに読み取らせて、同じ形式のJSONへ変換できるか試しました。
「仕事のやり方」をSkillにする
今回利用したのが「Agent Skills」です。
Agent Skillsでは、SKILL.mdというファイルに、AIに覚えてほしい業務知識や作業手順を記述できます。
今回の帳票処理では、例えば、
- 表記が違っても共通の項目として扱う
- 日付は
YYYY-MM-DDに統一する - 明細は全行読み取る
- 明細金額の合計と小計を照合する
- 読み取れない項目を推測で埋めない
- 読み取れなかった理由を記録する
といったルールをSkillとして定義しました。
単に、
「このPDFを読んでください」
とAIにお願いしているわけではありません。
「この仕事では、何を確認し、どんなルールで判断し、どういう形式で結果を返すのか」
まで教えているのがポイントです。
必要なSkillだけをAIが読み込む
業務が増えるたびに、すべてのルールを毎回AIへ渡していたら、プロンプトはどんどん長くなってしまいます。
Agent Skillsでは、最初からすべてのSkillの内容を読み込むわけではありません。
AIエージェントの起動時に渡されるのは、Skillの名前や説明といった情報だけ。
AIが、
「今回の仕事にはこのSkillが必要だ」
と判断したときに、そのSkillの詳しい手順を読み込みます。
そのため、たくさんのSkillを登録しても、必要のない業務知識まで毎回コンテキストに入れる必要がありません。
業務ごとのノウハウを分けて管理しながら、必要なものだけAIに使わせられる仕組みです。
AIに全部任せるわけではない
今回の実装でもう一つ大切にしたのが、
「何をAIに任せて、何を通常のプログラムに任せるか」
です。
例えば、帳票によって異なるレイアウトや表記を理解して、
「この項目が発行日だ」
「この部分が明細だ」
と判断する処理は、AIが得意です。
一方、消費税の計算は決められた式で確実に計算できます。
そこで今回は、消費税をAIに計算させず、通常のPythonプログラムで処理しました。
DynamoDBへの保存も同様です。
Skillが担当するのは、あくまで帳票から必要な情報を抽出するところまで。
保存処理は通常のプログラム側に任せています。
つまり、
曖昧さを理解する部分はAI、決められた処理を確実に実行する部分はプログラム
と役割を分けています。
生成AIを使うからといって、すべてを生成AIにやらせる必要はありません。
実際に4種類の帳票を読み取ってみた
作成したSkillを使い、フォーマットの異なる請求書2件、見積書2件を処理しました。
結果、それぞれ書式が異なっていても、共通項目を同じ形式で抽出し、明細ごとにDynamoDBへ保存できました。
さらに今回は、ローカル環境だけでなくAWSのAgentCore Runtimeにもデプロイしています。
SkillはS3に配置し、エージェントの起動時に読み込む構成にしました。
この構成なら、Skillの内容を変更したときも、コンテナそのものを再デプロイする必要はありません。
S3上のSkillを更新し、ランタイムを再起動することで変更を反映できます。
業務ルールが変わったときに、Skillだけを更新できるわけです。
AIに「知識」だけでなく「仕事の進め方」を渡す
今回Agent Skillsを試して面白かったのは、
AIにできることを増やす方法が、プログラムを追加するだけではなくなっている
という点です。
例えば、
「帳票をどう読むか」
「どの情報を取り出すか」
「表記の違いをどう扱うか」
「読み取れなかったときにどうするか」
といった、人が仕事をするときに使っているノウハウをSkillとして切り出せます。
そして、必要になったときにAIがそのSkillを使う。
これまで人が覚えていた業務知識や作業手順を、AIエージェントが再利用できる形にしていく。
Agent Skillsは、そんなAIエージェントの作り方につながる仕組みだと感じました。
まとめ
今回は、Strands AgentsのAgent Skillsを使って、フォーマットの異なる帳票から共通項目を抽出しました。
ポイントは、単に「AIでPDFを読み取れた」ということではありません。
業務知識や作業手順をSkillとして切り出し、AIエージェントに仕事のやり方を与えられること。
そして、
- 曖昧な情報を理解・判断するところはAI
- 業務固有の知識や手順はSkill
- 確実に処理できる計算や保存は通常のプログラム
と、それぞれの得意分野を組み合わせることです。
Acroquestでは、新しいAI技術を試すだけでなく、
「実際の業務にどう組み込めば使える技術になるのか」
というところまで考えながら検証しています。
AIエージェントに興味がある方、AIを使って実際の仕事の仕組みを変えてみたい方は、ぜひ一度お話ししましょう。
記事の詳細、検証に用いた実装コードなど詳しくは当社技術ブログに記載しておりますので、詳細を知りたい場合はこちらをご覧ください。
ぜひ、当社で一緒に働いてみませんか?
チャレンジングな案件が多く、成長の機会が多く得られる環境です
当社では、機械学習/AIや生成AIに加えて、AWSやAzureを活用したITサービス開発事業を推進しています。そこで、最先端技術を駆使しながら、社会を進化させたい情熱とスキルのある機械学習・AIエンジニア、クラウドエンジニアを募集しています!
私たちが取り組む案件は、最先端技術を用いる内容や高難易度の内容が多く、チャレンジングな環境なので、成長の機会が多く得られることをお約束します。
/assets/images/10338/original/b4c1f58c-4c92-447a-a0cc-671371e80f3a.png?1392712942)