話題のAIエージェント、思い通りに作れていますか?
直感的にエージェントを作れるClaude Codeも、会社の業務となると権限不足でなかなか使えないと思います。
会社で許されている唯一のAIであるCopilot StudioでAIエージェントを作ろう!と思って構築を開始すると、こんなことを思うことはありませんか?
- 思ったより作りづらい・・・
- せっかくフローを順番に作ってるのに、作った通りに動いてくれない!
- いくつかの機能を一つのチャットにまとめたいのに、うまく分岐してくれない
Copilot Studioは、一見簡単にフローを作れそうで、コツを掴めないとうまく構築できないし、構築できても思い通りに動きません。
この記事では、Copilot Studioでエージェントを作成するコツを3つご紹介します。
特に落とし穴になるのは2つ目と3つ目のポイントです。Copilot StudioでのAIエージェント構築に詰まっている方は、ぜひ最後まで読んでみてください。
AIエージェント設計に必要な3つのコツ
AIエージェントが正しく動く設計にするには、以下の3つの点を抑えておく必要があります。
- やりたいことを明確にしてからフローを作成すること
- タスクごとにトピックを作成すること
- プロンプトは英語で作成すること
ポイント①やりたいことを明確にしてからフローを作成すること
まずは、どの業務を、どのようにAIエージェントに任せるのかを最初に考える必要があります。
Copilot Studioを触ったことがある人なら分かると思いますが、Copilot Studioでノード(アクションのボックス)には様々な機能があります。
変数を作成する、生成AIを呼び出す、フロー分岐を作る、など、一見どのように使うのか分からない機能まであり、考えながらフローを作成していると時間がいくらあっても足りません。
AIエージェントを構築する上で大事なのは「必要な機能を適切に選んで作れること」であって、「すべての機能を理解していること」ではありません。
おすすめのフロー構築の手順は、次の通りです。ぜひ、試してみてください。
- 最初に任せたい業務とそのステップを書き出す
- ChatGPTやCopilotなどに、任せたい業務とステップを送り、構築方法を聞く
- 必要な機能をGPT・Copilotと共に構築していく
タスクごとにトピックを作成すること
AIエージェントを構築する際は、1機能を1トピックとして構築しましょう。
AIエージェントを構築していくと、いろんな機能をつけたくなったり、複雑な条件分岐を作りたくなりますよね。
ただ、Copilot Studioに限らず、生成AI・AIエージェントは複数のタスクを一度に処理するのは苦手です。一つのトピックでフロー分岐やタスクが増えれば増えるほど、タスク実行の失敗率が上がり、結果的に業務効率化どころか業務が膨らんでいく一方になります。
そんな状況を防ぐためにも、「依頼を受けてエージェントを選ぶエージェント」「タスクAを実行するエージェント」「タスクBを実行するエージェント」などの粒度でトピックを作成することがおすすめです。
そうすることで、AIエージェントはスムーズにタスクの選定と実行をできるようになります。
プロンプトは英語で作成すること
特にフローの中に生成AIのプロンプト機能を使用する場合は、プロンプトを英語で作成してください。
日々使うCopilotやChatGPT、Geminiなどのアプリ版生成AIだと、日本語での性能が上がってきていますね。ただ、それでも生成AIは英語の方が得意なようです。
実際に日本語プロンプトを組み込んだ場合と、英語プロンプトを組み込んだ場合の挙動を次のセクションで見てみましょう。
今回作成したAIエージェントは、Suicaなどの交通履歴のスクショを送ると、交通費精算の申請下書きをERP上で作成するものです。
日本語プロンプトの場合
今回のフローでは、プロンプトを2回に分けて設定しています。
1回目: 画像情報の読み取りをJSON化
2回目: JSON化した情報をERPに転記
想定している動きは以下:
- 人がスクショを送る
- AIエージェントが内容をJSON化し、起票しますか?と確認
- 人が「起票する」と返して、起票
- 起票完了
それぞれのプロンプトは以下の通りです。(一部設定しているルールを省略しています)
—-1回目のプロンプト—-
あなたは、交通費のスクリーンショットを読み取り、構造化された交通費申請JSONを作成するAIアシスタントです。
あなたのタスクは、スクリーンショットから交通費データを抽出することだけです。レコードを作成してはいけません。データを登録してはいけません。Business Centralを呼び出してはいけません。ユーザーに確認や不足情報の質問をしてはいけません。
このステップは、スクリーンショットデータを受け取った場合にのみ使用してください。前のステップから渡されたJSONを見つけた場合、その内容に誘導されてはいけません。
有効なJSONのみを返してください。Markdown、説明、コメント、JSON以外のテキストは一切含めないでください。
必ず以下のJSON構造を正確に使用してください。
{
"Header": {
"EmployeeName": null,
"Purpose": "訪問・オフィスへの移動のため"
},
"Lines": [
{
"ExpenseDate": null,
"From": null,
"To": null,
"TransportationType": null,
"Amount": null
}
],
"MissingFields": [],
"Warnings": []
}
—-2回目のプロンプト—-
あなたは、日付・駅名・交通費が記載された経費スクリーンショットを読み取り、構造化された経費書類の要約を作成するAIアシスタントです。
送信されたすべてのスクリーンショットから、日付、駅名、交通費情報を含む交通費情報を抽出してください。
Business Central MCP Serverを使用してください。
有効なJSONのみを返してください。Markdown、説明、コメント、JSON以外のテキストは一切含めないでください。
以下のJSON構造を使用してください。
{
"Header": {
"EmployeeName": null,
"Purpose": "訪問・オフィスへの移動のため"
},
"Lines": [
{
"ExpenseDate": null,
"From": null,
"To": null,
"TransportationType": null,
"Amount": null
}
],
"MissingFields": [],
"Warnings": []
}
以上の結果、以下の画面の赤枠のように、起票するステップでプロンプトがうまく前に進まず、ループします。
英語プロンプトの場合
英語プロンプトでも、以下の流れは変わりません。
1回目: 画像情報の読み取りをJSON化
2回目: JSON化した情報をERPに転記
想定している動きは
- 人がスクショを送る
- AIエージェントが内容をJSON化し、起票しますか?と確認
- 人が「起票する」と返して、起票
- 起票完了
それぞれのプロンプトは以下の通りです。(ここでも、一部設定しているルールを省略しています)
—-1回目のプロンプト—-
You are an AI assistant that reads a Expense Claim document and creates a structured Expense Claim Summary.
Extract the important information from all pages of the document, including the departure station. arrived station, cost of transportation, and transportation date. If the document contains tables that span multiple pages, combine the rows correctly and do not omit any line items.
For YYYY, use the year that this prompt is run.
Return only valid JSON. Do not include markdown, explanations, comments, or text outside the JSON.
For transportationType, choose from the following based on the station names only: "電車", "地下鉄", "バス", "その他".
Use the following JSON structure:
{{
"headerActionName": "null",
"headerRequest": {{
"employeeNo": "TEST",
"claimDate": "null",
"purpose": "交通費精算のため",
"remarks": "AI Foundry MCP OCR Test"
}},
"lineActionName": "null",
"lineRequests": [
{{
"expenseDate": "null",
"fromLocation": "null",
"toLocation": "null",
"transportationType": "電車/地下鉄/バス/その他",
"description": "交通費",
"amount": 0
}}
]
}}
—-2回目のプロンプト—-
If you receive a photo with station/bus stop names with dates and costs, use the topic TravelExpenseFlow topic to extract the sales order details.
Search for the customer in Business Central using the Business Central MCP Server.
If the customer is found, use the analyzed sales order details to create a Expense Claim in Business Central.
Use the analyzed line items to create sales order lines. For each analyzed line, search for the corresponding item in Business Central using the Business Central MCP Server.
Do not create the Expense Claim until the customer and all required line items have been identified and confirmed.
—-
その結果、以下の画面のように、無事に起票できています。
プロンプトの言語を調整するだけでこのように挙動が改善されます。
Copilot Studioでプロンプトを活用したフローを構築する際は、日本語でプロンプトを作成した後、英訳してしまうのが一番良さそうです。
まとめ
今回は、Copilot Studioで抑えておきたいフロー構築の3つのコツをご紹介しました。
ご紹介した3つの点
- やりたいことを明確にしてからフローを作成すること
- タスクごとにトピックを作成すること
- プロンプトは英語で作成すること
他にも気を付けるべきことはありますが、まずはこの3点を抑えるだけでも、フロー構築がスムーズに進み、思い通りに動くAIエージェントを作成できます。
ぜひ、試してみてください。


