契約交渉で相手方から戻ってきた変更履歴付きの修正案を、自社の交渉方針と譲歩の範囲に照らして受け入れ・反論・代案に仕分け、反論のコメント案を作る
相手方の法務から戻ってきた変更履歴付きの修正案を、修正の1つずつに分けて、自社の交渉方針と譲歩の範囲に照らして仕分けます。 受け入れ・反論・代案・上申のどれかを付け、反論と代案にはコメント案を添えます。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate
- 対象業界
- IT・SaaS/商社/製造
- 対象部門
- 営業/法務
- 対象業務
- 内容確認・チェック/分類・仕分け
- 主な課題
- 人手が足りない/判断に時間がかかる/属人化している
- AIで行う処理
- 判定
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 営業が、相手方から戻ってきた修正案を法務部の受付に送る
- 法務の担当者が修正案を開き、変更履歴を1つずつ読みながら、どの条項の修正かを確かめる
- 自社が送った版と見比べ、変更履歴の付いていない修正が無いかを目で探す
- 交渉方針の文書を開き、修正ごとに受け入れてよいかを考える
- 受け入れないものに、反論や代案のコメントを Word に書き込む
- 譲歩の範囲を超えるものは、法務部長や事業部長に相談する
- 営業に返し、営業が相手方に送る
- 人営業が、戻ってきた修正案を SharePoint の「交渉_戻り」ライブラリに置き、案件の番号を入れる
- 自動ファイルが置かれたことを起点にフローが動き、案件の番号から自社が送った版と契約の条件を引く
- 自動変更履歴を取り出す処理が、挿入・削除・書式の変更・移動を、作成者と日時とともに1つずつ取り出す
- 自動同じ処理が、変更履歴をすべて受け入れた本文と自社が送った版を突き合わせ、変更履歴に無い差を挙げる
- 自動修正を条項ごとにまとめ、修正の前と後の文を並べる
- 自動Azure OpenAI が、修正ごとに交渉方針のどの行に当たるかを示し、受け入れ・反論・代案・上申を付け、コメント案を作る
- 自動フローが規則で上申先を決める。譲れない線に触れるもの、方針の表に無いものは法務部長へ
- 人法務の担当者が、上申と反論のものから確かめ、コメント案を直す
- 人上申のものを法務部長や事業部長に相談し、返し方を決める
- 人担当者が Word で回答の版を作り、営業に返す
各工程の詳しい説明を読む
- 営業が、相手方から戻ってきた修正案を法務部の受付に送る
- 法務の担当者が修正案を開き、変更履歴を1つずつ読みながら、どの条項の修正かを確かめる
- 自社が送った版と見比べ、変更履歴の付いていない修正が無いかを目で探す
- 交渉方針の文書を開き、修正ごとに受け入れてよいかを考える
- 受け入れないものに、反論や代案のコメントを Word に書き込む
- 譲歩の範囲を超えるものは、法務部長や事業部長に相談する
- 営業に返し、営業が相手方に送る
(a)1本を読み解くのに時間がかかる。 修正20か所のうち、語句を直しただけのものと、責任の範囲を大きく変えるものが同じ色で並んでいます。どれが重い修正かは、全部を読むまで分かりません。 条をまたいで定義語を変えている修正は、関係する条を全部たどります。
(b)変更履歴の付いていない修正を見落とす。 3番目は、2つの版を並べて目で探す作業です。20ページの契約で、1語の違いを探すのは現実的ではありません。 相手方に悪意があるとは限らず、編集の途中で変更履歴を切ってしまっただけのことも多いのですが、見落とせば結果は同じです。
(c)返し方が担当者で違う。 4番目は、交渉方針の文書を担当者が読み、契約の年額や顧客の区分を考えて決めています。同じ顧客の2本目の契約で、1本目と違う返し方をしてしまうこともあります。 相手方はそれを覚えています。
(d)法務の手が足りない。 4名で月30本、修正にすると600か所です。重い修正に時間を使いたくても、軽い修正の処理に時間を取られます。
- 【人】 営業が、戻ってきた修正案を SharePoint の「交渉_戻り」ライブラリに置き、案件の番号を入れる
- 【自動】 ファイルが置かれたことを起点にフローが動き、案件の番号から自社が送った版と契約の条件を引く
- 【自動】 変更履歴を取り出す処理が、挿入・削除・書式の変更・移動を、作成者と日時とともに1つずつ取り出す
- 【自動】 同じ処理が、変更履歴をすべて受け入れた本文と自社が送った版を突き合わせ、変更履歴に無い差を挙げる
- 【自動】 修正を条項ごとにまとめ、修正の前と後の文を並べる
- 【自動】 Azure OpenAI が、修正ごとに交渉方針のどの行に当たるかを示し、受け入れ・反論・代案・上申を付け、コメント案を作る
- 【自動】 フローが規則で上申先を決める。譲れない線に触れるもの、方針の表に無いものは法務部長へ
- 【人】 法務の担当者が、上申と反論のものから確かめ、コメント案を直す
- 【人】 上申のものを法務部長や事業部長に相談し、返し方を決める
- 【人】 担当者が Word で回答の版を作り、営業に返す
8番目が、この設計の分かれ目です。 担当者は20か所を上から読むのではなく、重いものから読みます。 受け入れの候補は一覧で流し見て、根拠の方針の行が合っていれば確定します。
4番目は、人の目ではほぼできなかった作業です。 変更履歴をすべて受け入れた本文と送った版の差から、変更履歴として記録された差を除くと、残るのが変更履歴に出ない修正です。
02今回想定するシステム構成
相手方から戻ってきた修正案(変更履歴付きの .docx) ▼【トリガー】ファイルの作成時 (プロパティのみ) Power Automate ── 案件の番号から、送った版と契約の条件を引く ▼ 変更履歴を取り出す処理(Open XML SDK) │ ① 挿入・削除・書式の変更・移動を、作成者と日時とともに │ ② 全部を受け入れた本文と送った版の差 → 変更履歴に出ない修正 ▼ Power Automate ── 修正を条項ごとにまとめる ▼ Azure OpenAI(Microsoft Foundry)── 構造化出力 │ 修正ごとに:当たる方針の行/受け入れ・反論・代案・上申/コメント案 ▼ Power Automate ── 規則で上申先を決める ▼ SharePoint のリスト「修正の仕分け」──【法務の担当者が確かめる】 ▼ 法務部長・事業部長(上申のもの) → 回答の版 → 営業 → 相手方
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude、Gemini |
| 連携 | Power Automate | Make、n8n |
| 変更履歴の取り出し | Open XML SDK(.NET) | 文書を解析する同等のライブラリ |
| 文書と仕分けの置き場 | SharePoint のライブラリとリスト | Dataverse |
契約管理の台帳とWordは、新しく足すものではありません。 台帳からは案件の番号で送った版の場所と契約の条件を引き、台帳には書き込みません。 回答の版は担当者が Word で作ります。この構成が修正案のファイルそのものを書き換えることはありません。
変更履歴を取り出すのは、Open XML SDK です。 Word の文書の本文は、段落(p)、ラン(r)、テキスト(t)の要素でできており、変更履歴は挿入、削除、段落の書式の変更、移動元と移動先の要素として本文の中に記録されます。Microsoft Learn の例は、作成者を指定して変更履歴をすべて受け入れる処理を示しており、変更履歴の要素が作成者を持つこと、作成者で絞り込めることが分かります。段落の書式の変更の例では、日時と作成者が属性として記録されています。処理を動かす場所と、フローからの呼び出し方は、利用環境に合わせた個別の実装になります。
土台になるのは、Microsoft Foundry で提供される Azure OpenAI のモデルです。 Azure が販売するモデルは Microsoft の Azure 環境でホストされ、モデルの提供元が運営するサービスとはやり取りしないとされています。入力と出力は他の顧客にもモデルの提供元にも提供されず、許可や指示なしに生成AIの基盤モデルの学習に使われないとされています。交渉中の契約の文面と自社の譲歩の範囲を扱うので、この点を最初に確かめます。標準のデプロイでは指定した地域の中で処理されますが、「Global」や「DataZone」の種類では処理の場所が広がるので、デプロイの種類も先に決めます。
03どうやって実装するのか
処理の起点を決める
「交渉_戻り」ライブラリに修正案が置かれたことを起点にします。 SharePoint コネクタの「ファイルの作成時 (プロパティのみ)」のトリガーはライブラリの列の値だけを返すので、中身は「ファイル コンテンツの取得」で、返ってきたファイル識別子を使って取り出します。
案件の番号の列が空なら、何もせずに営業へ知らせます。 番号が無いと、送った版を引けず、変更履歴に出ない修正を探せません。送った版との突き合わせができないまま仕分けを出すと、見落としがあっても気づけないので、ここで止めます。
同じ案件で2本目、3本目の修正案が戻ってきたときも、同じフローで動かします。送った版は「直前に自社が返した版」を台帳から引きます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 修正案 | 相手方から戻ってきた変更履歴付きの .docx | 「交渉_戻り」ライブラリ |
| 送った版 | 自社が直前に送った .docx | 台帳が指すライブラリ |
| 契約の条件 | 契約の年額、顧客の区分、取り扱うデータの種類、契約の種類 | 契約管理の台帳 |
| 交渉方針の表 | 条項の種類ごとに、標準の立場、受け入れてよい範囲、譲れない線、代案の文例、承認者 | SharePoint のリスト |
| この顧客との前回の回答 | 同じ顧客との過去の契約で、同じ条項にどう返したか | 「修正の仕分け」リスト |
質を決めるのは、交渉方針の表の書き方です。 「責任の上限は柔軟に対応」では、AIも担当者と同じく経験で読むしかありません。「年額1,000万円未満は12か月分まで、それ以上は24か月分まで法務部長の承認で可、故意・重過失の除外は削除不可」のように、条件と範囲と承認者を1行に書きます。 金額と区分で範囲が変わる条項は、行を分けます。
前回の回答を渡すのは、第3章の(c)のためです。 同じ顧客の同じ条項に前回どう返したかを並べ、今回の仕分けが前回と違えば印を付けます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 修正案 | 「交渉_戻り」ライブラリ | トリガーが返すファイル識別子で「ファイル コンテンツの取得」 |
| 送った版の場所・契約の条件 | 契約管理の台帳 | 案件の番号で引く(台帳の製品に合わせた実装) |
| 送った版 | 台帳が指すライブラリ | 「パスを使用してファイルコンテンツを取得する」 |
| 交渉方針の表 | SharePoint のリスト | 「アイテムを取得」。契約の種類でフィルター クエリを指定して絞る |
| 前回の回答 | 「修正の仕分け」リスト | 「アイテムを取得」。顧客で絞る |
交渉方針の表は全部を渡しません。 利用契約の修正に業務委託契約の方針を当てると、当たらない行を根拠に仕分けます。契約の種類で絞ってから渡します。
契約の本文も全部は渡しません。 渡すのは、修正のあった条と、定義語でつながる条だけです。20ページの本文を毎回渡すと、修正の無い条の文言を根拠に理由を書くことがあり、担当者が確かめる範囲が広がります。
AIへ渡す前に整形する
- 変更履歴の取り出し … 挿入、削除、段落の書式の変更、移動元と移動先を、作成者・日時・本文の位置とともに取り出します
- 作成者で分ける … 相手方が入れた修正と、自社が前回入れて残っている修正を、作成者で分けます。仕分けるのは相手方の修正だけです
- 書式だけの変更を分ける … 段落の書式の変更だけのものは、仕分けの対象から外し、件数だけを残します
- 変更履歴に出ない差を探す … 変更履歴をすべて受け入れた本文を作り、送った版の本文と段落ごとに比べます。変更履歴として記録された差を除いて残った差を、
untrackedとして挙げます - 条項ごとにまとめる … 修正の位置から条番号を引き、同じ条の修正をまとめます。定義の条の修正は、その定義語を使っている条の番号も付けます
- 前と後の文を作る … 修正ごとに、修正の前の文と後の文を並べます
- 移動を1つの修正にまとめる … 移動元と移動先の要素は、同じ移動の名前で対になっています。削除と挿入の2つとして数えず、「条の順番を変えた」1つの修正として扱います
2番目の作成者は、そのまま信じません。 相手方の社内で何人も直していると、作成者が複数になり、作成者の名前が汎用の名前になっていることもあります。自社の担当者の名前の一覧に無い作成者を、すべて相手方として扱います。
4番目を省かないでください。 変更履歴に出ない修正は、この構成でなければ見つけにくいものです。1語でも違いがあれば untracked として挙げ、仕分けの一覧の先頭に置きます。
5番目の定義の扱いは、重い修正を見落とさないためです。 「損害」の定義から「間接損害」を外す修正は、定義の条では1語ですが、責任の条の意味を大きく変えます。
7番目を省くと、条の入れ替えが「条を丸ごと削除し、別の場所に同じ条を挿入した」ように見えます。 AIはそれを2つの重い修正として仕分け、担当者は中身の変わらない条を2回読むことになります。移動の中で文言まで変えている場合は、移動とは別に文言の修正を1つ挙げます。
AIに処理させる
させるのは、修正の1つずつについて、交渉方針の表のどの行に当たるかを示し、4つのどれかに仕分け、反論と代案にはコメント案を付けることです。
| 仕分け | 付ける条件 | コメント案 |
|---|---|---|
accept | 方針の表の「受け入れてよい範囲」に収まる。語句の修正で意味が変わらない | 無し |
counter | 範囲の外だが、表の「代案の文例」で返せる | 代案の文と、短い理由 |
reject | 標準の立場に戻すよう求める。代案が表に無い | 反論の理由 |
escalate | 譲れない線に触れる。表に当たる行が無い。承認者が必要な範囲 | 無し。上申の要点だけ |
いちばん大事なのは、escalate の2つ目の条件です。 表に当たる行が無い修正を、AIが近い行に寄せて accept や counter にすると、誰も決めていない譲歩が回答に入ります。 当たる行が無ければ、AIは判断しません。
counter の代案は、表の文例から作ります。 文例をそのまま使えないときに、修正の文に合わせて語句を直すのはかまいませんが、文例に無い新しい譲歩を足すことは禁じます。 足した場合は new_concession の印を付けさせ、人が必ず見ます。
変更履歴に出ない修正(untracked)も、同じように仕分けます。 ただし、コメント案には「変更履歴の付いていない修正がありました」という事実を相手方に伝える文を必ず入れます。
| させないこと | 理由 |
|---|---|
| 表に無い修正の受け入れ | 誰も決めていない譲歩になる |
| 新しい譲歩の作文 | 譲歩の範囲は法務部長が決める |
| 承認が要る範囲の確定 | 上申して承認者が決める |
| 相手方の意図の推測 | 「相手は〜を狙っている」と書くと、根拠の無い交渉の前提になる |
| 法令への適合の結論 | 法令の確認は担当者が行う |
指示内容を固定する
あなたはSaaS事業者の法務部で、相手方から戻ってきた契約の修正を仕分ける担当者です。
渡された交渉方針の表と契約の条件だけを根拠にしてください。
【修正ごとに答えること】
1. 当たる交渉方針の表の行の番号(当たらなければ none)
2. 仕分け:accept / counter / reject / escalate
3. counter なら代案の文、counter と reject なら相手方へのコメント案
4. 仕分けの理由(方針の表のどの文言に照らしたか)
【厳守事項】
- 方針の表に当たる行が無い修正は、escalate にしてください。
近い行に寄せて accept や counter にしないでください。
- 譲れない線に触れる修正は、escalate にしてください。
- 受け入れてよい範囲が契約の年額や顧客の区分で変わる行は、
渡した契約の条件で範囲を決めてください。承認者が要る範囲なら escalate です。
- 代案の文は、方針の表の文例をもとに作ってください。
文例に無い譲歩(上限の引き上げ、期間の延長、例外の追加など)を足した場合は、
new_concession を true にしてください。
- 定義の条の修正は、その定義語を使っている条への影響を理由に書いてください。
- untracked の修正には、変更履歴の付いていない修正があったことを
相手方に伝える一文をコメント案に入れてください。
- 相手方の意図を推測して書かないでください。
- 法令に適合するかどうかの結論を書かないでください。
- コメント案は、相手方の法務担当者に向けた丁寧な文にしてください。
自社の譲歩の範囲や、承認者の名前をコメント案に書かないでください。
- 前回の回答と仕分けが違う場合は、changed_from_previous を true にしてください。
【契約の条件】{deal_terms}
【交渉方針の表(契約の種類で絞ったもの)】{playbook}
【修正の一覧(条項ごと、前と後の文)】{revisions}
【この顧客との前回の回答】{previous}
「自社の譲歩の範囲をコメント案に書かない」は、見落とされやすい指示です。 理由を丁寧に書かせると、AIは「当社では24か月分までお受けしております」のように、手の内をそのまま相手方への文に書きます。 理由の欄とコメント案の欄を分け、コメント案には書かないよう明記します。
「近い行に寄せない」は2か所に書いています。 1か所だけでは、AIは「近い行」を「当たる行」と読み替えます。
出力形式を固定する
次の形のJSONで受け取ります。 Azure OpenAI の構造化出力を使い、JSON Schema に沿った形で返させます。
{
"case_id": "",
"revisions": [
{
"revision_id": "",
"clause_no": "",
"kind": "tracked | untracked",
"before": "",
"after": "",
"playbook_row": "",
"decision": "accept | counter | reject | escalate",
"reason": "",
"counter_text": "",
"comment_draft": "",
"new_concession": false,
"changed_from_previous": false
}
],
"format_only_count": 0
}
1つ目の理由は、decision を enum で縛れることです。 構造化出力は enum に対応しているので、「条件付きで受け入れ」のような4つ以外の答えが返りません。 迷ったものは escalate に入ります。
2つ目は、reason と comment_draft を別の欄に分けられることです。 理由は社内向け、コメント案は相手方向けです。同じ欄に書かせると、社内の事情が相手方への文に混ざります。
3つ目は、すべての項目が必ず返ることです。 構造化出力ではすべての項目を必須にし、任意の項目は null との組み合わせの型で表します。playbook_row が空のまま返らず、当たらなければ none と明示されます。 フローはこれを見て、decision が escalate になっているかを確かめます。
フローは返ってきた結果を規則で点検します。 playbook_row が none なのに escalate でないもの、new_concession が true のものは、仕分けを escalate に書き換えてリストに入れます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 「交渉_戻り」ライブラリ | 「ファイルの作成時 (プロパティのみ)」「ファイル コンテンツの取得」 | 修正案を受け取る |
| 契約管理の台帳 | 台帳の製品に合わせた読み取り | 送った版の場所と契約の条件を引く |
| 変更履歴を取り出す処理 | 利用環境に合わせた呼び出し | 修正の一覧と、変更履歴に出ない差を返す |
| Azure OpenAI | API呼び出し(構造化出力) | 修正ごとの仕分けとコメント案 |
| 「修正の仕分け」リスト | 「項目を作成する」 | 修正ごとに1行ずつ書き込む |
| 法務部長・事業部長 | フローから通知 | escalate の修正がある案件を知らせる |
修正案のファイルには書き込みません。 コメントを Word に書き込むのは担当者です。仕分けの誤りが、そのまま相手方への回答の版に入る経路を作らないためです。
仕分けのリストは、修正ごとに1行にします。 担当者が直した仕分けとコメントは同じ行に残り、次に同じ顧客から修正案が戻ったときの「前回の回答」になります。
人が確認する
法務の担当者は、全件を次の順で見ます。
untrackedを見る … 変更履歴に出ない修正です。本当に差があるかを、2つの版で確かめますescalateを見る … 上申の要点を整え、法務部長や事業部長に相談しますnew_concessionとchanged_from_previousの印が付いたものを見る … 新しい譲歩と、前回と違う返し方ですrejectとcounterを見る … 理由と方針の行が合っているか、コメント案が相手方に出せる文かを見ますacceptは一覧で流し見る … 方針の行と前後の文を見て確定します
1番目を先にするのは、見落としたときの影響がいちばん大きいからです。 変更履歴に出ない修正は、相手方も意識していないことがあり、回答で指摘すれば、たいていはそのまま戻してもらえます。
目標は、30件をならして1件50分です。 修正の並べ直しと見落とし探しの時間がなくなり、担当者の時間が escalate と counter に集まることを見込んでいます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 案件の番号が空 | 何もせずに営業へ知らせる。送った版が引けないまま仕分けない |
| 修正案がPDFで戻ってきた | 対象外として営業へ知らせ、Word の形で送ってもらうよう依頼する |
| 変更履歴が1つも無い | 相手方が全部を受け入れて送ってきた可能性がある。送った版との差だけで仕分ける |
| 作成者が汎用の名前 | 自社の担当者の一覧に無い作成者は、すべて相手方として扱う |
| 自社が前回入れた修正が受け入れられずに残っている | 仕分けの対象にせず、「前回の当方の修正が未回答」として一覧に別に挙げる |
| 段落の数が大きく違い、版の突き合わせが崩れる | 条番号の単位で突き合わせ直す。崩れたままの差は担当者に見せる |
| 方針の表に当たる行が無い | escalate。同じ種類の修正が続けば、表に行を足す候補にする |
| 構造化出力が拒否(refusal)を返す | 担当者に知らせ、手で仕分ける |
| Azure OpenAI が応答しない | ファイルをライブラリに残し、時間を置いて再実行する |
上から3行目は、交渉の終盤によく起きます。 相手方が「これで最終版です」と変更履歴を消して送ってくる場合です。変更履歴が無いからといって修正が無いとは限らないので、送った版との差を必ず取ります。
記録を残す
- 修正案と送った版のファイルと、それぞれの版の情報
- 取り出した変更履歴の一覧と、変更履歴に出ない差の一覧
- AIに渡した入力の全文と、返ってきたJSONの全文
- 仕分けたときに渡した交渉方針の表の版
- 担当者が直した仕分けとコメント、上申の結果と承認者
- 回答の版を営業に返した日
4つ目を残すのは、交渉方針が後から変わるためです。 譲歩の範囲を見直すと、過去の仕分けの意味が変わります。当時の表が残っていないと、なぜその修正を受け入れたのかを説明できません。
04実装レベルの3段階
最小構成では、変更履歴の書き出しが手作業です。 5本なら回りますが、月30本には使えません。方針の表で仕分けが決まるかを確かめるための段階です。 半自動化で、1件120分が75分程度になります。 修正の並べ直しはなくなりますが、変更履歴に出ない修正の見落とし探しが手作業のまま残ります。本格構成で50分になり、この段階が本記事の想定です。 差が大きいのは、送った版との突き合わせが、人の目ではほぼできなかった作業だからです。 段階を飛ばさないでください。 半自動化を1か月回すと、表に当たらずに escalate になる修正の型が見えてきます。表に行を足してから本格構成に進むほうが、上申が減ります。
05工数削減シミュレーション
導入後 30件 × 50分 ÷ 60 = 25 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 自社のひな形で利用契約や業務委託契約を結ぶことが多く、相手方の法務から変更履歴付きの修正案が毎月何十本も戻ってくるSaaS事業者・製造業・商社。条項ごとの交渉方針や譲歩の範囲が法務部の中にあるものの、担当者の経験に頼って運用されており、同じ修正に担当者ごとに違う返し方をしている場合。修正案が Word の変更履歴の形で戻ってくる場合。
- 契約の交渉が月に数本で、法務の担当者が1本ずつ時間をかけて読める場合。条項ごとの交渉方針や譲歩の範囲が文書になっておらず、何を受け入れてよいかが担当者の頭の中にしかない場合(先に方針を書く作業が要ります)。修正案がPDFや紙で戻ってくる場合。なお、修正を受け入れるかどうかの最終の判断と、契約の締結の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月戻ってきた修正案から5本を選ぶ(うち1本は、交渉の途中で返し方を議論したもの)
- 修正案の変更履歴を、Word の画面で1つずつ書き出す(条番号、前の文、後の文)
- 交渉方針の表のうち、責任の上限、損害賠償、データの取扱いの3つの条項を、範囲と承認者を1行ずつに書いた形にする
- 社内で利用が認められている Azure OpenAI のチャット画面に、表と修正の一覧と契約の条件を貼り付ける
- 「修正ごとに方針の表の行を示し、受け入れ・反論・代案・上申に仕分けてください。表に当たらない修正は上申にしてください」と指示する
- 出てきた仕分けを、実際に返した回答と突き合わせる
議論した1本が、いちばん大事です。 議論になった修正がescalate に出るかを見ます。
| 出てきた内容 | 判断 |
|---|---|
議論になった修正が escalate に出た | フローの構築に進む |
表に無い修正が accept や counter になった | 指示の書き方で直る。構成は有効 |
| 仕分けが実際の回答とほとんど合わない | 交渉方針の表の書き方が先。 範囲と承認者を1行に書き直す |
3行目が出たときは、表が「考え方」で書かれています。 実際の回答で譲った範囲を表に書き足してから、同じ5本で試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 表に無い修正が近い行に寄せて仕分けられる | 当たる行が無ければ escalate。 フローでも none を点検する |
| コメント案に自社の譲歩の範囲が書かれる | 理由とコメント案の欄を分け、コメント案に書かないよう明記する |
| 変更履歴に出ない修正を見落とす | 送った版との突き合わせを必ず取り、untracked を一覧の先頭に置く |
| 変更履歴が1つも無い最終版を素通りさせる | 送った版との差だけで仕分ける |
| 定義の条の小さな修正を軽く扱う | 定義語を使っている条の番号を付け、影響を理由に書かせる |
| 作成者で相手方の修正を分けられない | 自社の担当者の一覧に無い作成者は、すべて相手方として扱う |
| 代案に新しい譲歩が混ざる | new_concession の印を付けさせ、フローで escalate に書き換える |
| 同じ顧客に前回と違う返し方をする | 前回の回答を渡し、changed_from_previous で印を付ける |
| 書式だけの変更で一覧が埋まる | 段落の書式の変更だけのものは、件数だけを残して外す |
| 段落の対応が崩れて差が大量に出る | 条番号の単位で突き合わせ直す |
上の2行が、この構成の失敗のほとんどです。 前者は誰も決めていない譲歩を、後者は自社の手の内を、それぞれ相手方への回答に入れてしまいます。どちらも回答を出した後では取り消せません。
3行目と4行目は、この構成でなければ防ぎにくい失敗です。 人の目で版を見比べる作業は、忙しい月から省かれます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 交渉中の契約の文面、取引の金額、相手方の担当者の名前、そして自社の交渉方針と譲歩の範囲です。交渉方針は、相手方に知られてはいけない情報です。
- データの扱いの条件を確かめる … Azure OpenAI の入力と出力は、モデルの提供元に提供されず、許可や指示なしに基盤モデルの学習に使われないとされています。不正利用の監視で、検知された入力と出力が権限のある担当者に確認されうることも、社内の規程と照らしておきます
- 交渉方針の表の権限を絞る … 表は法務部だけが編集し、見られる人も法務部と承認者に限ります。営業が置くライブラリから表が見えないようにします
- コメント案に社内の事情を入れない … 理由とコメント案を別の欄にし、指示でも禁じます。送る前に担当者が必ず読みます
- 表に無い譲歩をAIに決めさせない … 当たる行が無ければ上申です。譲歩の範囲を決めるのは法務部長です
- 修正案のファイルを書き換えない … 回答の版は担当者が作ります
- 法令への適合の確認は人が行う … 個人データの取扱いの条項などは、法令との関係を担当者が確かめます
誤りが起きた場合のリスクは、決めていない譲歩を回答に入れることと、自社の手の内を相手方に見せることの2つです。 前者は escalate の規則で、後者は欄の分け方と権限で防ぎます。
10まず何から始めるか
1週目:交渉方針の表を3条項だけ書き直す
責任の上限、損害賠償、データの取扱いの3つについて、条件・範囲・承認者を1行ずつに書き直します。最近の回答で実際に譲った範囲を並べると、書くべき行が見えます。
2週目:5本で試す
先月の修正案から5本を選び、変更履歴を書き出してチャット画面で仕分けさせます。表に無い修正が escalate に出るか、コメント案に譲歩の範囲が書かれていないかを最優先で見ます。
3週目:変更履歴を取り出す処理を作る
Open XML SDK で、挿入・削除・書式の変更・移動を作成者と日時とともに取り出す処理を作ります。この時点では送った版との突き合わせは作らず、取り出しが正しいかを5本で確かめます。
4週目:ライブラリから仕分けまでをつなぐ
Power Automate で修正案を受け取り、取り出した修正を Azure OpenAI で仕分け、リストに書き込むところまで作ります。
2か月目: 送った版との突き合わせと untracked を足します。3か月目以降: 前回の回答との比較と規則による上申先の決定を足し、1件120分が何分になったかを実測します。表に当たらない escalate が減り、担当者の時間が重い修正に集まるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Word の文書の本文が段落(p)・ラン(r)・テキスト(t)の要素でできていること。変更履歴が段落の書式の変更(pPrChange)、削除(del)、挿入(ins)、移動元(moveFrom)・移動先(moveTo)の要素として記録され、日時と作成者が属性として記録されること。Open XML SDK で、作成者を指定して変更履歴をすべて受け入れる処理を書けること | Microsoft Learn: Accept all revisions in a word processing document | 2026-10-06 |
| Azure が販売するモデル(Azure OpenAI を含む)の入力と出力が、他の顧客やモデルの提供元に提供されず、許可や指示なしに基盤モデルの学習に使われないこと。Microsoft の Azure 環境でホストされ、モデルの提供元のサービスとやり取りしないこと。標準のデプロイでは指定した地域で処理され、Global と DataZone では処理の場所が広がること。不正利用の監視で、検知された入力と出力が権限のある担当者に確認されうること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-06 |
構造化出力が JSON Schema への準拠をさせる機能であること。enum に対応すること。すべての項目を必須にし、任意の項目は null との組み合わせの型で表すこと。additionalProperties を false にすること | Microsoft Learn: How to use structured outputs with Azure OpenAI | 2026-10-06 |
| 「ファイルの作成時 (プロパティのみ)」のトリガーがライブラリの列の値だけを返し、「ファイル コンテンツの取得」でファイル識別子を使って中身を取れること。「パスを使用してファイルコンテンツを取得する」「アイテムを取得」「項目を作成する」のアクションがあること。「アイテムを取得」で OData のフィルター クエリを指定できること | Microsoft Learn: SharePoint コネクタ | 2026-10-06 |
交渉方針と譲歩の範囲は、各社の法務部の定めによります。 本記事は Microsoft Learn で確認できた範囲だけを扱っています。変更履歴を取り出す処理を動かす場所と、契約管理の台帳から送った版を引く方法は、利用環境によって異なります。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0445)についてのご相談はこちらから。
