結論:法務担当者はコーディング不要の専用SaaS(LegalOn・LegalForce・GVA assist)か、LangChain+Claude APIの3ステップ実装のどちらかで、NDAや標準的な業務委託契約のレビュー工数を平均50%削減できます。
- 要点1:LegalOnが2026年1月〜3月に複数のAIエージェント機能をリリース。プレイブック(自社審査基準)を自動生成できる「プレイブックエージェント」が特に強力
- 要点2:コード実装する場合はLangChain+Claude APIの3ステップで構築可能。Pythonの基礎知識があれば非エンジニアでも再現できます
- 要点3:NDA30分→15分、業務委託契約90分→40〜50分が複数事例での平均的な工数削減幅
対象読者:法務担当者・CLO・コンプライアンス担当で「AIを契約書レビューに使いたいが何から始めるか分からない」方
今日やること:本記事のStep 1のコードを5分でローカル実行し、Claude APIへの接続を確認する
「毎月30本のNDAレビューが積み上がっていて、締め切りに追われっぱなしです」
10社以上の法務部門向けAI導入を支援してきた中で、最もよく聞く悩みがこれです。1本あたり20〜30分のNDAが30本あれば、純粋なレビュー工数だけで月10〜15時間。これにドラフト修正や社内承認のやりとりが加わると、法務担当者の可処分時間は一気に圧迫されます。
2026年時点で、この課題はAIエージェントによってかなりの部分を解消できるようになりました。専用SaaSは導入障壁が低く、LangChain+Claude APIを使った自作実装は細かいカスタマイズが可能です。どちらも「弁護士の代替」ではなく「法務担当者の作業速度を上げるブースター」として機能します。
この記事では、日本の法務現場で使われている3つの主要ツールの比較と、非エンジニアでも再現できるLangChain+Claude APIの実装コードを公開します。
まず試したい「5分即効」セットアップ3選
即効テクニック1:Claude APIでNDAを即時チェックする(コピペ実行可)
まず最小構成でAI契約書レビューを体験してみましょう。以下はAnthropic公式の法律文書要約ガイドを参考にした、NDAをClaude APIに渡してリスク項目を抽出するサンプルです。
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, anthropic>=0.25.0
# インストール: pip install anthropic
import anthropic
import os
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
# サンプルNDA本文(実際は契約書テキストを代入)
nda_text = """
第1条(秘密情報の定義)
本契約において「秘密情報」とは、一方当事者が他方当事者に開示する
技術上、営業上その他事業に関する一切の情報をいう。
第2条(秘密保持義務)
受領当事者は開示当事者の書面による事前の承諾なしに
第三者に対して秘密情報を開示してはならない。
"""
prompt = f"""
以下の秘密保持契約書(NDA)を法務観点でレビューし、
下記の構造でJSONを出力してください。
1. missing_clauses: 一般的なNDAに通常含まれるが、この契約書に欠けている条項のリスト
2. risk_items: リスクになり得る条項と、その理由(最大5件)
3. suggested_revisions: 修正を推奨する箇所と修正案(最大3件)
4. overall_assessment: 総合評価(OK/要確認/要修正のいずれか)
契約書本文:
{nda_text}
"""
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=2000,
system="あなたは企業法務に精通した法律アシスタントです。契約書を正確に分析し、リスクを具体的に指摘してください。出力はすべてJSON形式にしてください。",
messages=[{"role": "user", "content": prompt}]
)
print(response.content[0].text)
効果(想定シナリオ):NDA初稿のリスク条項チェックに要していた約20分が5〜8分程度に短縮できます。ただし複雑な交渉条件が絡む場合は法務担当者・弁護士による判断が必須です。
即効テクニック2:LangChainで複数契約書を一括処理するパイプライン
単発のAPI呼び出しから一歩進めて、月末に溜まった複数のPDFを一括処理するパイプラインを作ります。
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+
# インストール: pip install langchain langchain-anthropic pypdf
from langchain_anthropic import ChatAnthropic
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains.summarize import load_summarize_chain
from langchain.prompts import PromptTemplate
import os
# Claude APIクライアント初期化
llm = ChatAnthropic(
model="claude-sonnet-4-6", # 大量処理はsonnetでコスト最適化
anthropic_api_key=os.environ["ANTHROPIC_API_KEY"],
max_tokens=2000
)
# プロンプトテンプレート(自社のレビュー観点に合わせてカスタマイズ)
map_prompt_template = """
以下の契約書テキストの一部を分析し、法務リスクを日本語で簡潔に箇条書きしてください:
{text}
出力例:
- 秘密保持期間が無期限: 実務上問題が生じる可能性あり
- 損害賠償の上限なし: 高リスク
"""
map_prompt = PromptTemplate(template=map_prompt_template, input_variables=["text"])
combine_prompt_template = """
以下は契約書の各セクションの分析結果です。
これらを統合して、最終的なレビュー結果を以下の形式でまとめてください:
【リスク評価】高/中/低
【主要リスク項目】(3項目以内)
【修正推奨事項】(2項目以内)
【総評】(2〜3文)
各セクションの分析:
{text}
"""
combine_prompt = PromptTemplate(template=combine_prompt_template, input_variables=["text"])
def review_contract_pdf(pdf_path: str) -> str:
"""PDFを読み込んでAI契約書レビューを実行する"""
loader = PyPDFLoader(pdf_path)
docs = loader.load()
# 長い契約書はチャンク分割して処理
splitter = RecursiveCharacterTextSplitter(chunk_size=8000, chunk_overlap=500)
split_docs = splitter.split_documents(docs)
chain = load_summarize_chain(
llm,
chain_type="map_reduce",
map_prompt=map_prompt,
combine_prompt=combine_prompt,
verbose=False
)
result = chain.invoke({"input_documents": split_docs})
return result["output_text"]
# 実行例
# print(review_contract_pdf("./nda_sample.pdf"))
ポイント:長文契約書も map_reduce チェーンでチャンク分割処理するため、コンテキスト制限を超えません。map_prompt に自社のレビュー基準を追加することで、カスタムプレイブックとして機能します。
即効テクニック3:プレイブックに沿った条項チェック(自社基準をAIに覚えさせる)
最も実務的な即効テクニックは「自社の契約審査基準(プレイブック)をプロンプトに組み込む」ことです。
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, anthropic>=0.25.0
import anthropic
import json
import os
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
# 自社プレイブック(実際は社内ルールに合わせて編集)
PLAYBOOK = {
"秘密情報の範囲": {
"required": "口頭・書面を問わず開示された情報を秘密情報の定義に含めること",
"risk_if_missing": "口頭開示情報がカバーされない可能性"
},
"秘密保持期間": {
"required": "契約終了後3年以上の秘密保持期間を設定すること",
"risk_if_missing": "契約終了後すぐに競合に情報を使用される可能性"
},
"損害賠償上限": {
"required": "損害賠償額の上限を契約金額の範囲内に限定する条項を入れること",
"risk_if_missing": "過大な損害賠償責任を負う可能性"
}
}
def check_playbook_compliance(contract_text: str, playbook: dict) -> dict:
"""プレイブックに基づいて契約書を審査する"""
playbook_str = json.dumps(playbook, ensure_ascii=False, indent=2)
prompt = f"""
以下の自社プレイブック(審査基準)と契約書本文を照合し、
各審査項目についてOK/NGの判定と根拠を返してください。
【自社プレイブック】
{playbook_str}
【契約書本文】
{contract_text}
出力形式(JSON):
{{
"compliance_results": [
{{
"item": "審査項目名",
"status": "OK" または "NG" または "不明",
"evidence": "契約書内の根拠となるテキスト(存在しない場合は空文字)",
"comment": "具体的な判定理由"
}}
],
"overall_status": "全項目OK" または "要確認" または "修正必須"
}}
"""
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=2000,
system="あなたは企業法務の専門家です。プレイブックと照合して契約書を正確に審査してください。",
messages=[{"role": "user", "content": prompt}]
)
raw = response.content[0].text
start = raw.find("{")
end = raw.rfind("}") + 1
return json.loads(raw[start:end])
# 実行例(コメントアウトを外して動作確認)
# result = check_playbook_compliance(nda_text, PLAYBOOK)
# print(json.dumps(result, ensure_ascii=False, indent=2))
効果(想定シナリオ):NDA初稿チェックが平均30分から約12〜15分に短縮できます(編集部支援事例・2026年1〜5月・NDA審査を複数件実施したケースの平均値)。
法務AI 3強ツール比較:GVA assist・LegalForce・LegalOn
コードを書かずに始めたい場合、日本市場には3つの主要プレイヤーがあります。2026年6月11日時点の情報をもとに比較します。
| ツール | 特徴 | 向いているケース | 料金目安 | AIエージェント機能 |
|---|---|---|---|---|
| LegalOn | プレイブックエージェントで自社基準を自動生成。AIアシスタントが契約書修正まで一連で実行 | 月50本以上の定型契約が多い。自社審査基準をAIに学習させたい | 要問い合わせ(ストレージ容量・オプションで変動) | プレイブックエージェント(2025年11月〜)、LegalOnアシスタント(2026年1月〜) |
| LegalForce | 英文含む約70類型に対応。弁護士監修の対応方針・サンプル条文が付属 | 英文契約が多い。弁護士監修コンテンツを即使いたい | 要問い合わせ(規模・利用人数で変動) | カスタム自動レビュー(プレイブック登録)対応 |
| GVA assist(OLGA) | 2026年1月にOLGAにリブランド。弁護士監修ナレッジで抜け漏れ検知 | 業務委託・売買契約が中心。比較的導入しやすい価格帯から開始 | 月額75,000円〜(AI PICKS・strate.biz 2026年調査時点の参考値) | 基本的なAIレビュー機能を搭載 |
料金情報の最終確認:2026年6月11日(各社公式サイト・メディア掲載情報をもとに編集部調査。最新料金は各社公式サイトでご確認ください)
LegalForceとLegalOnは公式サイトで料金を開示しておらず、企業規模・利用状況に応じた個別見積もりになります。比較検討する際は、まず各社に問い合わせて自社の契約量・種別を伝えましょう。
LangChain+Claude APIを使った実装3ステップ(非エンジニア向け詳細)
「専用SaaSは予算的に難しいが、自社の審査基準でAIを動かしたい」という場合は、LangChain+Claude APIの組み合わせが有効です。3ステップで最小構成を動かせます。
Step 1: 環境構築とClaude APIの動作確認(所要時間:約15分)
# 必要なパッケージをインストール
pip install anthropic langchain langchain-anthropic pypdf python-dotenv
# .envファイルにAPIキーを設定(ハードコード禁止)
# .env の内容(このまま貼り付けてAPIキーに書き換える):
# ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作確認用スクリプト(接続テスト)
from dotenv import load_dotenv
import anthropic
import os
load_dotenv() # .envファイルからAPIキーを読み込む
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
# 接続テスト
test_response = client.messages.create(
model="claude-haiku-4-5", # 動作確認は軽量モデルで
max_tokens=100,
messages=[{"role": "user", "content": "APIの接続テストです。「接続OK」と返してください。"}]
)
print(test_response.content[0].text)
# 出力例: 接続OK
「接続OK」が表示されれば環境構築は完了です。
Step 2: 契約書テキスト抽出パイプライン(PDF対応)
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, pypdf>=3.0
import pypdf
import re
from pathlib import Path
def extract_contract_text(file_path: str) -> str:
"""PDF契約書からテキストを抽出してクリーニングする"""
path = Path(file_path)
if path.suffix.lower() == ".pdf":
reader = pypdf.PdfReader(file_path)
text = "n".join([
page.extract_text()
for page in reader.pages
if page.extract_text()
])
else:
raise ValueError(
f"サポートされていない形式: {path.suffix}。"
"PDF形式で保存してから実行してください。"
)
# ページ番号・余分な空白を除去
text = re.sub(r"ns*d+s*n", "n", text)
text = re.sub(r"s+", " ", text)
text = text.strip()
print(f"テキスト抽出完了: {len(text)} 文字")
return text
# 実行例
# contract_text = extract_contract_text("./nda_sample.pdf")
Step 3: AIレビューエージェントの実装(出力を構造化して確認しやすくする)
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# 動作環境: Python 3.11+, anthropic>=0.25.0
import anthropic
import json
import os
from dataclasses import dataclass, field
from typing import List, Dict
@dataclass
class ReviewResult:
"""AIレビュー結果の構造体"""
overall_risk: str = "不明"
missing_clauses: List[str] = field(default_factory=list)
risk_items: List[Dict] = field(default_factory=list)
revision_suggestions: List[Dict] = field(default_factory=list)
def run_ai_review(contract_text: str, contract_type: str = "NDA") -> ReviewResult:
"""
契約書テキストに対してAIレビューを実行し、構造化結果を返す
Args:
contract_text: 契約書のテキスト本文
contract_type: 契約書の種類(NDA, 業務委託, 売買等)
Returns:
ReviewResult: 構造化されたレビュー結果
"""
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
prompt = f"""
契約書種類: {contract_type}
以下の契約書を法務観点でレビューし、JSONで回答してください。
出力フォーマット(必ずこの形式で):
{{
"overall_risk": "高" または "中" または "低",
"missing_clauses": [
"欠落している条項名: 理由"
],
"risk_items": [
{{
"clause": "問題のある条項の引用(50文字以内)",
"risk_level": "高" または "中" または "低",
"reason": "リスクの具体的理由(100文字以内)"
}}
],
"revision_suggestions": [
{{
"target": "修正対象条項",
"suggestion": "修正案(200文字以内)"
}}
]
}}
制約:
- missing_clauses は最大5件
- risk_items は最大5件、リスクの高い順に並べる
- revision_suggestions は最大3件
- 架空・推測の情報は含めない。不明な点は「不明」と記載する
契約書本文:
{contract_text}
"""
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=3000,
system="あなたは企業法務に精通した法律アシスタントです。出力は必ず有効なJSONのみで返してください。前置きや説明は不要です。",
messages=[{"role": "user", "content": prompt}]
)
raw_json = response.content[0].text
# モデルが余分なテキストを追加した場合に備えてJSON範囲を抽出
start_idx = raw_json.find("{")
end_idx = raw_json.rfind("}") + 1
data = json.loads(raw_json[start_idx:end_idx])
return ReviewResult(
overall_risk=data.get("overall_risk", "不明"),
missing_clauses=data.get("missing_clauses", []),
risk_items=data.get("risk_items", []),
revision_suggestions=data.get("revision_suggestions", [])
)
def print_review_report(result: ReviewResult, contract_name: str = "契約書"):
"""レビュー結果を読みやすい形式で表示する"""
print(f"n{'='*50}")
print(f"AI契約書レビューレポート: {contract_name}")
print(f"{'='*50}")
print(f"総合リスク評価: 【{result.overall_risk}】n")
if result.missing_clauses:
print("【欠落条項】")
for item in result.missing_clauses:
print(f" ✗ {item}")
print()
if result.risk_items:
print("【リスク項目】")
for item in result.risk_items:
print(f" [{item['risk_level']}] {item['clause']}")
print(f" → {item['reason']}")
print()
if result.revision_suggestions:
print("【修正提案】")
for s in result.revision_suggestions:
print(f" 対象: {s['target']}")
print(f" 提案: {s['suggestion']}")
print()
# 実行例
# result = run_ai_review(contract_text, "NDA")
# print_review_report(result, "サンプルNDA.pdf")
実装完了後のポイント:
- AI出力はあくまで初稿。法務担当者が必ず最終確認する
- コスト最適化は
claude-sonnet-4-6(ドラフトチェック) /claude-opus-4-8(最終確認)で使い分け - 契約書本文をAPIに渡す前に、個人情報・取引金額等の機密情報の取り扱いを社内ポリシーで確認
工数削減の試算:NDA・業務委託契約を対象に
複数の支援事例と公開されている調査データをもとに、AIエージェント導入による工数削減を試算します。
事例区分:想定シナリオ(複数の導入支援経験をもとに構成した典型的なシナリオです)
| 契約書の種類 | AI導入前(平均) | AI導入後(平均) | 削減率の目安 |
|---|---|---|---|
| NDA(秘密保持契約) | 30分/件 | 12〜15分/件 | 50〜60% |
| 標準的な業務委託契約 | 90分/件 | 40〜50分/件 | 44〜56% |
| カスタム条件の多い業務委託 | 180分/件 | 120〜150分/件 | 17〜33% |
| M&A・複合契約 | 個別対応(AIは補助のみ) | 個別対応(AIは補助のみ) | 効果限定的 |
AIは定型条項の確認・抜け漏れ検知・修正案の初稿作成では高い効果を発揮します。一方、複雑な交渉条件やM&A案件では人間の高度な判断が不可欠で、AIはあくまで「検索・確認作業の自動化」に限定されます。
月次の定型契約が20本の場合の試算例:NDA10本(30分→15分で月に約150分確保)+業務委託10本(90分→50分で月に約400分確保)=月約9〜10時間を高付加価値業務に充てられます。
LegalOn 2026年AIエージェント機能アップデート詳細
LegalOn Technologiesは2025年末から2026年にかけて精力的にAIエージェント機能をリリースしています。非エンジニアの法務担当者が直接使える機能が増えたため、特に注目です。
- 2025年11月:プレイブックエージェント(LegalOn Technologies公式発表)
既存の審査基準を記したExcel・Wordをアップロードするだけで、LegalOn形式のプレイブックを自動生成。プレイブック作成の初期工数を大幅に削減 - 2026年1月:LegalOnアシスタント 契約書修正機能(PR TIMES発表・2026年1月6日)
指示するだけで修正案の検討から本文への反映まで一括実行。修正履歴と修正根拠が自動で記録される。Microsoft 365+Wordアドインが必要 - 2026年3月:プレイブック作成支援エージェント強化(LegalOn Technologies公式発表・2026年3月16日)
契約ひな形(.docx)をアップロードするだけでレビュー観点を整理したプレイブック案を生成。生成内容を画面上で編集・追記が可能
これら一連のアップデートにより、LegalOnは「AI補助ツール」から「自律的に動くAIエージェント」へと段階的に進化しています。既存の法務SaaSユーザーは、プレイブック機能との統合を優先して検討してみてください。
【要注意】よくある失敗パターンと回避策
失敗1:AI出力をそのまま最終版として使う
❌ Claude APIの出力をレビューなしにそのまま契約相手に送付
⭕ AI出力を「初稿・チェックリスト」として活用し、必ず法務担当者・弁護士が最終確認
なぜ重要か:AIは一般的な条項の抜け漏れは高精度で検知しますが、業界慣行・相手企業の過去の交渉履歴・自社特有のリスク許容度を考慮した判断は苦手です。「AIが大丈夫と言ったから」は法的責任の免責理由にはなりません。
失敗2:契約書をそのままAPIに渡して情報漏洩リスク
❌ 個人名・取引先名・金額が入った生データをAPIに渡す
⭕ APIに渡す前に、機密情報のマスキング(仮名化)または情報取り扱い同意の確認を実施
なぜ重要か:Anthropic等の主要API提供者はAPIリクエストをモデル訓練に使用しないと表明していますが(Anthropic Privacy Policy参照)、社内情報セキュリティポリシーおよび顧問弁護士への確認は必須です。
失敗3:プロンプトが汎用すぎて自社の審査基準が反映されない
❌ 「この契約書のリスクを教えてください」(汎用すぎる指示)
⭕ 「当社プレイブックの3条件(秘密保持期間3年以上、損害賠償上限有り、口頭開示含む)を照合して判定してください」(自社基準を明記)
なぜ重要か:AIは指示が曖昧なほど汎用的な回答を返します。法務の場合、業界標準のリスクではなく「自社にとってのリスク」を検知することが目的です。上記のStep 3のプレイブックアプローチで解決できます。
失敗4:APIキーをコードにハードコードして漏洩
❌ client = anthropic.Anthropic(api_key="sk-ant-xxxxx")(ソースコードに直書き)
⭕ 環境変数(.envファイル)またはシークレットマネージャーで管理。.gitignore に .env を必ず追加
なぜ重要か:GitHubにAPIキーをコミットすると、ボットが数秒以内に検知して不正利用される事例が多発しています。キー漏洩後は即座に無効化・再発行が必要になります。
セキュリティと本番運用ルール
AI契約書レビューを本番導入する前に確認すべき事項をまとめます。
- データ処理同意:契約書本文には相手方の機密情報が含まれます。AI処理の可否は自社の情報セキュリティポリシーと顧問弁護士に確認してください
- 免責表示の設置:AIレビュー結果を社内共有する場合、「本レポートはAIが生成した参考情報です。法的判断は必ず専門家(法務担当者・弁護士)が行ってください」という注記を必ず添付してください
- 出力のバージョン管理:AIが出力したレビュー結果と最終的な法務判断の差分を記録しておくことで、将来のモデル改善・プロンプト改善に活用できます
- エラーハンドリング:APIのタイムアウト・JSON解析エラーに対してリトライロジックと手動フォールバックを設けてください
- 専門家への相談:本記事の内容はAI活用の参考情報です。個別の法的判断については法務担当者・弁護士にご相談ください
参考・出典
- プレイブックエージェント提供開始 — LegalOn Technologies公式(2025年11月26日、参照日: 2026-06-11)
- LegalOnアシスタント 契約書修正機能リリース — PR TIMES(2026年1月6日、参照日: 2026-06-11)
- プレイブック作成支援AIエージェント強化 — LegalOn Technologies公式(2026年3月16日、参照日: 2026-06-11)
- Legal summarization — Anthropic Claude API公式ドキュメント(参照日: 2026-06-11)
- AI契約書レビューツール比較 — StartLink(2026年調査、参照日: 2026-06-11)
- Anthropic integrations — LangChain公式ドキュメント(参照日: 2026-06-11)
まとめ:今日から始める3つのアクション
- 今日:本記事のStep 1のコードをローカルで実行し、Claude APIへの接続を確認する(所要15分)
- 今週中:社内で最も件数が多い定型契約(NDAなど)1種類を選び、自社プレイブックをStep 3のコードに組み込んでパイロットを実施する
- 今月中:専用SaaSの評価を並行して進め、コスト・カスタマイズ性・セキュリティ要件で自作 vs SaaSの判断基準を確定する
AIは法務担当者の代替ではありません。定型チェック・抜け漏れ検知・修正案の初稿作成という「時間はかかるが判断は機械的な作業」をAIに任せることで、本来注力すべき交渉・リスク判断・社内調整に時間を使えるようになります。
あわせて読みたい:
- 人事・採用担当のためのAIエージェント活用ガイド2026 — 採用業務の自動化と評価設計
- 【2026年最新】営業チーム向けAIエージェント構築・活用ガイド — 商談準備・フォローアップの自動化
- AIエージェントのガバナンス・権限ポリシー設計2026 — 法務・コンプライアンス視点での運用設計
著者:佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー10万人以上。100社以上の企業向けAI研修・導入支援実績。著書『AIエージェント仕事術』。ご質問・ご相談はお問い合わせフォームからどうぞ。
この記事を読んで導入イメージが固まってきた方へ
UravationではAIエージェント導入の研修・コンサルを行っています。法務部門向けのAI活用設計から実装支援まで、お気軽にご相談ください。
