admin
무료Power Platform のテナント / 環境ガバナンスを確認・設定する。通常開発では事前チェックせず、環境チェックの明示依頼時または開発・デプロイ障害時だけ診断する。依頼者の現在有効な委任権限と対象範囲を確認し、権限内の最小診断・承認済み修復・限定リトライ、権限不足なら管理者への依頼へ分岐する。環境・DLP・ACP・環境グループ・テナント戦略の確認と dry-run 付き管理操作を提供する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
AI Builder の AI プロンプト(GPT Dynamic Prompt)を Dataverse API で作成し、Copilot Studio エージェントにツール(アクション)として追加する。Power Automate フローとの統合パターンも含む。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
AI Builder の AI プロンプト(GPT Dynamic Prompt) を Dataverse API で作成し、 Copilot Studio エージェントに ツール(アクション) として追加する。 Power Automate フローから aibuilderpredict_customprompt で呼び出すパターンも含む。
AI Builder で AI 処理を実装する場合、以下の方針に従う:
✅ AI プロンプト(カスタムプロンプト)を常に第一選択肢とする
- 請求書処理、ドキュメント情報抽出、分類、要約 等すべて
- プロンプトテキスト + document/image 入力で柔軟に対応
- トレーニングデータ不要、即座にデプロイ・更新可能
- プロンプト変更だけで出力形式・抽出項目を自由に調整
❌ プレビルトモデル(請求書処理モデル等)は原則使用しない
- 従来型のプレビルトモデルやカスタムモデルはトレーニング(学習)が必要
- AI プロンプトで同等の処理がプロンプトだけで実現できる
⚠ プレビルトモデルを使う例外ケース(稀)
- 手書き文字の高精度 OCR が必須で AI プロンプトでは精度不足の場合
- 既存のプレビルトモデルが組み込まれたワークフローを維持する必要がある場合
AI プロンプトを構築する前に、プロンプト設計をユーザーに提示し承認を得ていること。
設計提示時に含める内容:
| 項目 | 内容 |
|---|---|
| プロンプト名 | 英語推奨(スキーマ名に使用される) |
| プロンプトテキスト | リテラルテキスト+入力変数の組み合わせ |
| 入力変数 | 名前・型(text / document / image)・説明・テスト値 |
| 出力形式 | text or json(JSON の場合はスキーマ+サンプル) |
| モデルパラメータ | モデル種別(gpt-41-mini 等)・temperature |
| 利用先 | Copilot Studio ツール or Power Automate フロー |
| shouldPromptUser | 各入力変数をユーザーに自動的に尋ねるか(true/false) |
本スキルの利用が確定したら、standard の共通契約に加え、 1 回の AskUserQuestion で次をまとめて確認する。
| # | 質問 | 合格条件 |
|---|---|---|
| 1 | 対象環境で AI Builder を利用できるか | 必要なライセンス / AI Builder capacity があり、利用制限を確認している |
| 2 | AI プロンプトを作成・公開する権限があるか | msdyn_aimodel 等の必要テーブルと AIModelPublish を実行できる担当者がいる |
| 3 | 利用先はどこか | Copilot Studio / Power Automate、接続参照、実行ユーザー、呼び出し側ライセンスを確定している |
| 4 | 入力データをモデルへ送信してよいか | document / image / text の分類、個人情報、保持・リージョン要件を承認済みである |
| 5 | プロンプト、入力、JSON schema、モデル、テスト値は承認済みか | 正常系、拒否すべき入力、期待出力を記録している |
System Administrator を常用せず、AI モデルの作成・公開とソリューション追加に必要な
Dataverse 権限だけを持つ担当者を優先する。capacity または権限が未確認なら
AIModelPublish を呼び出さない。
2026-04-15 検証済み: AIModelPublish アクションは1ステップでモデルを完全にアクティブ化する。
従来(旧パターン — ❌ 複雑で環境差異に弱い):
1. Create Model
2. Create Training Config (statecode=2, statuscode=6 を指定)
3. Create Run Config (statecode=2, statuscode=7 を指定)
4. PATCH Model (_msdyn_activerunconfigurationid_value + statecode=1)
→ 環境によって statecode/statuscode 指定や _value PATCH が拒否される
正解(新パターン — ✅ シンプルで確実):
1. Create Model(msdyn_TemplateId@odata.bind 形式)
2. AIModelPublish(msdyn_ プレフィックスなし unbound action)
→ Published Training Config (state=2, status=6) を自動生成
→ Run Config (state=2, status=7) を自動生成(RunConfigurationId の値が ID になる)
→ Model を Active (state=1, status=1) に自動変更
→ 完了! わずか 2 API コール
更新時:
1. 既存 Model を検索 → Active Run Config の ID を取得
2. Run Config の msdyn_customconfiguration を PATCH
→ 完了!(再公開不要)
import requests
token = get_token()
headers = {
"Authorization": f"Bearer {token}",
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Content-Type": "application/json; charset=utf-8",
}
r = requests.post(
f"{DATAVERSE_URL}/api/data/v9.2/AIModelPublish", # ★ msdyn_ プレフィックスなし!
headers=headers,
json={
"TemplateId": GPT_TEMPLATE_ID, # GPT Dynamic Prompt テンプレート固定値
"ModelId": model_id, # 作成した Model の GUID
"RunConfigurationId": model_id, # ★ model_id を渡すと Run Config ID = model_id
"ModelName": PROMPT_NAME,
"CustomConfiguration": custom_config_json_str,
"RunConfiguration": custom_config_json_str,
},
)
assert r.status_code < 400, f"AIModelPublish 失敗: {r.status_code}"
# → Model が Active、activeRun = model_id
| 項目 | 説明 |
|---|---|
| アクション名 | AIModelPublish(msdyn_AIModelPublish ではない! プレフィックスなし) |
| RunConfigurationId | model_id を渡すと Run Config がその ID で自動作成される |
| 自動生成物 | Published Training (state=2,status=6) + Run Config (state=2,status=7) |
| 結果 | Model が state=1(Active)に自動変更される |
| 副作用 | Published Training Config は DELETE 不可(405)→ 無害 |
| 失敗時 | 既に Active な Run Config がある場合 AnotherRunConfigAlreadyPublished |
AI Builder の AI プロンプトは 3 つの Dataverse テーブル + 1 つの botcomponent で構成される。
┌─────────────────────────┐
│ msdyn_aimodel │ ← AI プロンプト本体
│ (msdyn_aimodels) │
│ │
│ msdyn_name │ プロンプト名
│ _msdyn_templateid_value│ GPT Prompt テンプレート ID
│ _msdyn_activerunconfigurationid_value │ → Run Config
│ statecode=1 (Active) │
└──────────┬──────────────┘
│ 1:N
▼
┌─────────────────────────┐
│ msdyn_aiconfiguration │ ← 設定(AIModelPublish で自動生成)
│ (msdyn_aiconfigurations│
│ │
│ Training (type=190690000, state=2, status=6) │ Published Training
│ Run (type=190690001, state=2, status=7) │ Active Run Config
│ msdyn_customconfiguration = JSON │ ← プロンプト定義本体
└─────────────────────────┘
┌─────────────────────────┐
│ botcomponent │ ← エージェントとの紐付け(Copilot Studio 利用時のみ)
│ (botcomponents) │
│ │
│ componenttype=9 │ トピックと同じ型
│ kind: TaskDialog │ AI プロンプトアクション
│ action.aIModelId │ → msdyn_aimodel の GUID
│ _parentbotid_value │ → エージェント (bots)
└─────────────────────────┘
| テンプレート名 | ID |
|---|---|
| GPT Dynamic Prompt | edfdb190-3791-45d8-9a6c-8f90a37c278a |
{
"version": "GptDynamicPrompt-2",
"prompt": [
{ "type": "literal", "text": "以下の情報を分析してください: " },
{ "type": "inputVariable", "id": "input_text" },
{ "type": "literal", "text": " を基にレポートを作成。" }
],
"definitions": {
"inputs": [
{
"id": "input_text",
"text": "input_text",
"type": "text",
"quickTestValue": "テスト用のサンプルテキスト"
}
],
"formulas": [],
"data": [],
"output": {
"formats": ["json"],
"jsonSchema": {
"type": "object",
"properties": {
"summary": { "type": "string" },
"key_points": { "type": "array", "items": { "type": "string" } }
}
},
"jsonExamples": [
{ "summary": "出力例", "key_points": ["ポイント1", "ポイント2"] }
]
}
},
"modelParameters": {
"modelType": "gpt-41-mini",
"gptParameters": { "temperature": 0 }
},
"settings": {
"recordRetrievalLimit": 30,
"shouldPreserveRecordLinks": null,
"runtime": null
},
"code": "",
"signature": ""
}
| type | 説明 | 必須フィールド |
|---|---|---|
literal | 固定テキスト | text |
inputVariable | 入力変数への参照 | id |
| type | 説明 | 備考 |
|---|---|---|
text | テキスト入力 | quickTestValue でテスト値 |
document | ドキュメント入力 | ファイルアップロード |
image | 画像入力 | 画像ファイル |
| formats | 説明 | 追加フィールド |
|---|---|---|
["text"] | テキスト出力 | なし |
["json"] | JSON 出力 | jsonSchema + jsonExamples 必須 |
| 値 | モデル |
|---|---|
gpt-41-mini | GPT-4.1 mini |
gpt-41 | GPT-4.1 |
o3-mini | o3-mini |
kind: TaskDialog
inputs:
- kind: AutomaticTaskInput
propertyName: text
name: text
shouldPromptUser: true
modelDisplayName: AI Prompt Sample
modelDescription: AI Prompt Sample
action:
kind: InvokeAIBuilderModelTaskAction
aIModelId: {your-ai-model-id} # AI Model 作成時に払い出される環境固有 ID
outputMode: All
詳細な構築手順・デプロイスクリプトテンプレートは 構築リファレンス を参照。
AI Builder プロンプトを Power Automate フロー内で呼び出す パターン。 Copilot Studio ツールではなく、Dataverse トリガー等と組み合わせて自動実行する場合に使う。
詳細は Power Automate 連携リファレンス を参照。
✅ テンプレート ID は固定値 edfdb190-3791-45d8-9a6c-8f90a37c278a(GPT Dynamic Prompt)
✅ Model 作成は msdyn_TemplateId@odata.bind 形式を使用
✅ AIModelPublish (msdyn_ プレフィックスなし) で1ステップ完全アクティブ化
✅ RunConfigurationId に model_id を渡す → Run Config がその ID で作成される
✅ 更新時は Active Run Config の msdyn_customconfiguration を PATCH するだけ
❌ _msdyn_templateid_value を使う → 一部環境で拒否される
❌ _msdyn_activerunconfigurationid_value を直接 PATCH → 一部環境で拒否される
❌ statecode/statuscode を Config 作成時に指定 → 一部環境で拒否される
❌ PublishAIConfiguration を新規モデルに使う → AIModelPublish 単体で十分
❌ msdyn_AIModelPublish(msdyn_ プレフィックス付き)→ 404
❌ msdyn_Publish → 404
❌ SetState → 404
✅ prompt 配列は literal と inputVariable を交互に配置
✅ inputVariable の id は definitions.inputs の id と一致させる
✅ JSON 出力の場合は jsonSchema + jsonExamples の両方を定義
✅ modelType は有効な値を使用(gpt-41-mini, gpt-41, o3-mini)
✅ temperature は 0〜1 の float 値
✅ componenttype=9(トピックと同じ型番)
✅ schemaname は {botSchema}.action.{PromptNameNoSpaces} 形式
✅ YAML の kind は TaskDialog
✅ action.kind は InvokeAIBuilderModelTaskAction
✅ action.aIModelId は msdyn_aimodel の GUID(ハイフン付き小文字)
✅ inputs の propertyName は customconfiguration の inputs.id と一致
✅ shouldPromptUser: true でエージェントがユーザーに入力を求める
❌ yaml.dump() で YAML を生成 → PVA パーサーと非互換
❌ componenttype を間違える → エージェントに表示されない
✅ msdyn_aimodel の作成は solution ヘッダー付きで POST
✅ AIModelPublish 後、自動生成された Config もソリューションに含まれる
✅ AddSolutionComponent (componenttype=401) で検証・補完
❌ デフォルトソリューションに入ったままにする → 環境間移行不可
✅ aibuilderpredict_customprompt で Active Model を参照(recordId パラメータ)
✅ Model が Active でないとフロー有効化時に GetPredictionSchema 検証で失敗
✅ Model → Flow の順でデプロイ(Model が Active 必須)
✅ フロー定義の dict キーに動的値を使う場合は f-string 必須
✅ 新しい Dataverse 列を追加した後は PublishAllXml でコネクタメタデータ更新
❌ Draft Model を参照するフローを有効化 → "GetPredictionSchema failed"
公式ドキュメント: https://learn.microsoft.com/en-us/microsoft-copilot-studio/add-inputs-prompt#limitations
| 条件 | 対応形式 |
|---|---|
| 標準(Code Interpreter オフ) | PNG, JPG, JPEG, PDF のみ |
| Code Interpreter オン | 上記 + Word (.doc/.docx), Excel (.xls/.xlsx), PowerPoint (.ppt/.pptx) |
| 制限項目 | 値 |
|---|---|
| ファイルサイズ合計 | 25 MB 未満(全ファイル合計) |
| ページ数 | 50 ページ未満 |
| 処理タイムアウト | 100 秒(超過するとタイムアウトエラー) |
ConvertFile で PDF 変換してから渡す全パラメータの定義(取得元コメント付き)は references/.env.example を参照。
実値はリポジトリルートの .env に置く(.gitignore 済み)。
# AI Builder AI Prompt 用(既存 .env に追加)
AI_PROMPT_NAME=AI Prompt Sample
AI_PROMPT_BOT_ID=https://copilotstudio.../bots/xxxxxxxx-xxxx-.../overview
# ↑ BOT_ID と異なるエージェントに追加する場合のみ指定
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Power Platform のテナント / 環境ガバナンスを確認・設定する。通常開発では事前チェックせず、環境チェックの明示依頼時または開発・デプロイ障害時だけ診断する。依頼者の現在有効な委任権限と対象範囲を確認し、権限内の最小診断・承認済み修復・限定リトライ、権限不足なら管理者への依頼へ分岐する。環境・DLP・ACP・環境グループ・テナント戦略の確認と dry-run 付き管理操作を提供する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Copilot Studio 新 UI の Agent flows / Workflows を構築・公開・検証する。Dataverse レコード作成/更新トリガーから既存の発行済み Copilot Studio v2 を Agent ノードで呼ぶ標準経路、Code Apps との非同期要求/結果連携、および手動 Start + inline Agent の API ライフサイクル検証を扱う。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
株主総会の想定問答を、IR 抜粋(決算短信・説明資料・招集通知など)を根拠に下書きし、利用者の確認後に Dataverse の想定問答テーブルへ「下書き」として登録するスキル。 Use when ユーザーが「配当について想定問答を作って」「この論点の想定問答を 3 件追加して」「招集通知から想定問答を作って」「想定問答を登録して」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
株主総会の想定問答を点検し、根拠の IR 抜粋に無い数値・存在しない根拠 ID・回答者や注意事項の抜け・趣旨の重複・下書きのまま残っているものを一覧にするスキル(書き込みはしない)。 Use when ユーザーが「想定問答を点検して」「根拠の無い数値が無いか確認して」「下書きの想定問答を一覧にして」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data)を使用する。書き込み・削除のツールは使わない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
株主総会の質疑応答のリハーサル台本(議長・株主・回答役員の読み上げ原稿)を、承認済みの想定問答から作り、Dataverse のリハーサル台本テーブルへ登録するスキル。 Use when ユーザーが「リハーサルの台本を作って」「QA-001〜QA-010 で読み上げ原稿を作って」「番号を言わない株主も入れた台本を作って」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
コードファースト資産(エージェント定義・Code Apps の構成・IaC など)を秘匿化・汎用化したテンプレートとして Git 管理し、pre-commit ゲート → 自律レビューゲート → 承認・デプロイ → リリース記録までを CI/CD で回すための共通基盤。GitHub Actions / Azure Pipelines / その他 Git ホスティングと、GitHub Secrets / Azure DevOps 変数グループ / Azure Key Vault の各シークレットストアに対応し、プロダクト固有のデプロイ手順は各スキルへ委譲する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.