Dify × ローカルLLMで契約書チェックを成立させる、いちばん地味で安全な方法

Dify × ローカルLLMで契約書チェックを成立させる、いちばん地味で安全な方法 HowTo
Dify × ローカルLLMで契約書チェックを成立させる、いちばん地味で安全な方法

序章|Difyで契約書チェックを「成立させる」という話

契約書チェックに生成AIを使う、という話は珍しくなくなった。
条文を読み、怪しい点を指摘し、抜け漏れを洗い出す。
技術的には、すでに十分可能だ。

だが、本稿で扱うのは
「何ができるか」ではない。
どうすれば、現場で“成立するか”という話だ。

前提条件は明確にしておく。

本稿は、

  • Difyを使い
  • ローカルLLMを前提に
  • 契約書という機密情報を扱い
  • それでも現場が安心して使える形を探る

そのための実務的な整理である。

派手なAI活用事例は出てこない。
自動化も誇張しない。
判断をAIに委ねることもしない。

目指すのは、
契約書チェックが“事故らずに回り始める最小構成”だ。


契約書は、機密情報の中でも特に厄介な部類に入る。

個人情報だけでなく、
取引条件、価格、責任範囲、交渉の痕跡。
組織の意思決定そのものが、文書として封じ込められている。

だからこそ、
「AIで契約書をチェックできる」という話は、
便利さと同時に、必ずガバナンスの問題を引き連れてくる。

  • どこに送られるのか
  • 誰が見るのか
  • 誤った指摘を信じた場合、誰が責任を負うのか

この問いを曖昧にしたままでは、
どれほど高性能なモデルを使っても、
現場では“使ってはいけないもの”になる。


本稿では、あえて話を単純にする。

  • Vision(画像認識)は使わない
  • 契約書をPDFのまま読ませない
  • 「できなくはない」ことより
    「やらないほうが安全な理由」を優先する

結論から言えば、
Difyで契約書チェックを成立させる最適解は、
ただのチャットボットだ。

WordやPDFを放り込んで解析させるのではない。
必要な範囲を、人が一度テキストとして抜き出し、
その内容について論点整理をさせる。

地味だ。
だが、この地味さこそが、
ローカルLLM × Difyという構成で
契約書を扱うための、いちばん安全な道になる。

第1章|契約書チェックにおけるLLMの本質的な価値

契約書チェックという作業は、
しばしば「正解を当てる仕事」だと思われがちだ。

この条文は問題ないか。
この表現は一般的か。
リスクはどこにあるのか。

だが、実務の現場で行われている契約書チェックは、
それほど単純ではない。

多くの場合、最初に必要とされるのは
結論ではなく、整理だ。

  • この契約書は、何についての合意なのか
  • どこが通常で、どこが例外なのか
  • 読んでいて引っかかる点は、どこに集中しているのか

こうした問いに対し、
即座に「OK」「NG」を出す必要はない。

むしろ、
判断を下す前段階で、
思考を一度、外に出す相手が必要になる。


現場では、すでにこの役割を
LLMが静かに担っていることが多い。

法務に回すほどではない。
上司に聞くには、まだ早い。
だが、自分一人で抱えるには不安が残る。

そうしたときに、

  • 契約書の一部を貼り付け
  • 「論点として注意すべき点を挙げてほしい」
  • 「一般的な契約と比べて違和感が出やすい箇所はどこか」

といった問いを投げる。

返ってくるのは、
断定ではない。
最終判断でもない。

だが、
頭の中に散らばっていた不安が、
言葉として並び直される。

それだけで、
次に何をすべきかが見えてくる。


ここで重要なのは、
LLMが「契約書を理解しているか」ではない。

また、
法的に正しい判断を下せるかでもない。

LLMが果たしている役割は、
考えを整理するための外部化された思考装置だ。

  • 抜け漏れに気づく
  • 視点を増やす
  • 思考の偏りを一度崩す

この用途において、
最新モデルかどうかは本質ではない。

Visionが使えるかどうかも、
まだ関係がない。

必要なのは、
「ここに相談していい」という場所があること。
そして、
その相談が事故らない範囲に収まること。


Dify上のチャットボットは、
この役割を極めて素直に満たす。

  • ブラウザで開ける
  • LAN内で完結できる
  • ログも残せる

しかも、
業務システムほど重くならない。

契約書チェックという題材において、
この「軽さ」は重要だ。

重たい仕組みを用意した瞬間、
相談は減る。
使われなくなる。

結果として、
LLMは再び
「個人が黙って使う裏技」に戻ってしまう。

第2章|DifyでVisionを使えば、できなくはない

契約書チェックにおいて、
Vision(画像認識)を使いたくなる気持ちは、自然だ。

現実の契約書は、
WordやPDFでやってくる。
スキャンされた書類も多い。
レイアウトも、表も、注釈も混ざっている。

それをそのままアップロードし、
「この契約書の注意点を教えてほしい」
と投げられたら、確かに楽だ。

技術的にも、これはすでに可能である。

  • Vision対応のLLMを使えば
  • PDFや画像を直接入力し
  • 条文構造や文脈を踏まえた応答を得ることができる

Dify自体も、
Vision対応モデルを使えば
チャットUI上で画像アップロードを有効にできる。

商用API、たとえばOpenAIのVisionモデルを使う構成であれば、
この体験は比較的あっさり実現する。

「契約書を放り込むだけでチェックできる」
そう言いたくなる環境は、確かに作れる。


ここで、あえて否定はしない。

Visionを使えば、

  • コピペの手間は減る
  • OCRの工程は消える
  • 見た目そのままの文書を扱える

できなくはない。

少なくとも、
Difyというプラットフォームが
Visionを拒絶しているわけではない。


だが、本稿の前提に戻ろう。

扱っているのは、
ローカルLLMを前提とした
Difyによる“お手軽DX”である。

ここで一つ、視点を切り替える必要がある。

Visionは、
「便利かどうか」以前に、
どこで、誰の責任で使うのか
という問いを強く引き寄せる機能だ。

特に、契約書のような文書では、
その影響が顕著に出る。


Visionを使うということは、
単に入力形式が増える、という話ではない。

  • 読み取り精度のばらつき
  • レイアウト解釈の揺れ
  • 行間を補完してしまう推論

これらが、
ユーザーには見えない形で混入する。

テキストであれば、
「ここに書いてある内容」を
人が一度確認した上で投げられる。

だが、Visionでは、
どこまでをどう解釈したかが曖昧になる。

契約書チェックにおいて、
この曖昧さは致命的になりうる。


もう一つ、無視できない問題がある。

それは、
ローカル運用との相性だ。

Vision対応モデルは、
多くの場合、
商用APIとのセットで語られる。

つまり、
「Visionを使う」という選択は、
そのまま
外部APIを使う判断に直結しやすい。

契約書という題材で、
これは単なる技術選択では済まない。

第3章|ローカル運用において、Visionは争点を増やす

DifyでVisionを使う、という話は
技術の話であると同時に、
運用とガバナンスの話でもある。

特に、ローカルLLMを前提にDifyを使っている場合、
Visionは単なる入力手段の拡張では終わらない。

理由は単純だ。

ローカルLLMを選ぶ組織は、
すでに何らかの判断をしている。

  • クラウドに出したくない情報がある
  • 入力内容の所在を明確にしたい
  • 説明責任を内部で完結させたい

契約書を扱うなら、
この判断はむしろ自然だ。


ここでVisionを持ち込むと、
一気に論点が増える。

  • 画像やPDFは、どこで解析されるのか
  • モデルは本当にローカルで完結しているのか
  • OCRや画像処理の段階で、外部に出ていないか

商用APIを使えば、
これらは「サービス仕様」に回収される。

だが、ローカル運用を選んでいる組織にとって、
その説明は通らないことが多い。

なぜ、わざわざローカルにしたのに、
契約書だけ外に出すのか。

この問いに、
技術的な正解はない。

あるのは、
組織としての判断だけだ。


さらに厄介なのは、
Visionがもたらす“見えない処理”である。

テキスト入力であれば、
人が一度、内容を確認する。

だが、PDFや画像をそのまま投げる場合、
どこまでが入力として解釈され、
どこが無視されたのかが分からない。

  • 脚注
  • 但し書き
  • 小さな注記

こうした要素が、
Vision推論の中でどう扱われたかは、
ユーザーには確認しようがない。

契約書チェックにおいて、
この不透明さは致命的だ。


つまり、ローカル運用におけるVisionは、

  • 技術的に難しい
  • 運用上、説明が難しい
  • 事故が起きたときに、原因を特定しづらい

という三重苦を抱える。

便利かどうか以前に、
扱いづらい。

第4章|Dify × LM Studioでは、Visionは使えないという現実

ここまでの話を踏まえたうえで、
いちど感情を排して、現実だけを整理しておく。

2026年現在、DifyとLM Studioを組み合わせたローカル環境では、
Vision推論は実質的に使えない。

これは「設定が足りない」とか
「モデル選択を間違えている」といった話ではない。


まず前提として。

  • Vision対応をうたうVLモデルは存在する
  • LM Studioでも、それらのモデルは起動できる
  • 画像ファイルのアップロード自体は、Dify側で可能

ここまでは事実だ。

問題は、その先にある。


Difyは、モデルがVision対応かどうかを
コネクタ単位で判断している。

OpenAIやGoogleなどの商用APIでは、
この判定が明確に行える。

  • Vision対応モデルか
  • 画像入力を受け取れるか
  • API仕様として保証されているか

その結果、
DifyのUI上で「Vision対応」がONになり、
画像入力が正式に有効化される。


一方、LM Studioはどうか。

LM Studioは、
OpenAI互換APIとしてDifyに接続される。

この互換APIは、
テキスト生成を主目的とした仕様になっており、
Vision入力を正式に扱うための情報を
Dify側に渡さない。

その結果、何が起きるか。

  • Vision対応モデルを選んでも
  • VLモデルを起動していても
  • 画像をアップロードできるように見えても

DifyはVisionをONにできない。

DIyでOpenAI互換コネクタではVisionをONにできない

UI上では、
Visionは未対応のままになる。

DIyでOpenAI互換コネクタではVisionが有効にはならない。

重要なのは、
これはモデルの性能の問題ではない、という点だ。

  • Qwen系
  • Gemma系
  • その他のVLモデル

どれを選んでも結果は同じ。

Dify × LM Studio という構成では、
Vision推論は前提にできない。


さらに厄介なのは、
中途半端に“動いているように見える”ことだ。

  • ファイルはアップロードできる
  • LLMは何かしらの返答を返す

だが、その推論は
Visionに基づいていない。

画像の内容を見ているわけではなく、
ファイル名や周辺文脈からの推測
それっぽい回答を生成してしまう。

VLモデルである Qwen3-VL-4Bを使用しても、推測で適当な答えが返ってきてしまう

これは便利どころか、
最悪の状態だ。

誤っていることに、
ユーザーが気づけない。


この挙動は、
設定ミスでもバグでもない。

DifyとLM Studioの設計上の境界線だ。

  • Difyは、Vision対応が保証されない限りONにしない
  • LM Studioは、Vision入力を保証するAPIを提供していない

その結果として、
「使えない」という現実が生まれている。


ここで一度、整理しよう。

  • Vision対応モデルは存在する
  • ローカルでも動かせる
  • だが、DifyとLM Studioの組み合わせでは
    Visionを安全に使う経路がない

この事実は、
好みや思想の問題ではない。

現在の技術的制約そのものだ。

第5章|それでもVisionを使わない判断が、いちばん合理的だった

ここまで読んで、
こう思った人もいるかもしれない。

APIを書けばいいのでは?
別の実装をすれば、Visionは使えるのでは?

技術的には、その通りだ。

  • 独自にAPIを実装する
  • Vision対応の推論経路を自前で用意する
  • Difyの外で処理して結果だけ渡す

やろうと思えば、できなくはない。

だが、それは
Difyでお手軽DXをやる
という前提から外れる。


ここで、改めて目的を思い出そう。

本稿の目的は、
「最先端のAI活用」を見せることではない。

  • 現場が
  • 無理をせず
  • 事故らず
  • 継続して使える

その状態を、最短距離で作ることだ。

Visionを契約書チェックに使う場合、
この目的に対して
明らかに割に合わない負債が発生する。


まず、技術的負債。

  • API実装の保守
  • モデル更新への追随
  • 仕様変更時の検証

これらは、
契約書チェックという用途に対して
過剰だ。

次に、運用上の負債。

  • Vision推論の結果を
    どこまで信じていいのか
  • 誤読が起きた場合、
    どこで検知するのか

Visionは、
「間違っていることが分かりにくい」。

この特性は、
契約書という題材と致命的に相性が悪い。


さらに、ガバナンス上の負債がある。

  • なぜVisionを使うのか
  • なぜローカルで完結しないのか
  • なぜ、そのリスクを取るのか

これらの問いに、
明確な業務上の必然性がなければ、
説明は通らない。

便利だから、では弱い。


ここで重要なのは、
Visionを使わないことが、価値の放棄ではない
という点だ。

第1章で整理した通り、
契約書チェックにおけるLLMの本質的価値は、

  • 判断を代替することではなく
  • 読み飛ばしを防ぐことでもなく

思考を整理し、論点を浮かび上がらせること
にある。

この価値は、
テキスト入力だけで十分に成立する。


つまり、結論はこうなる。

  • Visionを使えば、できなくはない
  • だが、やる理由がない
  • むしろ、やらないほうが安全で合理的

Dify × ローカルLLMという構成において、
契約書チェックにVisionを持ち込まない判断は、
妥協ではない。

設計上の最適解だ。

第6章|結論:Difyでは「ただのチャットボット」が最適解になる

ここまでの議論を踏まえると、
結論は拍子抜けするほど地味になる。

Difyで契約書チェックを成立させる最適解は、
何の変哲もないチャットボットである。

Visionは使わない。
PDFを直接読ませない。
Wordファイルもアップロードしない。

必要な範囲を、
人が一度テキストとして切り出し、貼り付ける。

それだけだ。


この構成が優れている理由は、
技術的に簡単だからではない。

責任の線が、はっきりするからだ。

  • どこまでが入力か
  • どの条文を対象にしているか
  • 何をLLMに期待しているか

すべてが、
ユーザーの操作として可視化される。

「ここに書いてある内容について相談した」
という事実が、そのままログに残る。

Visionのように、
どこまで読んだのか分からない、
という状態が発生しない。


さらに、この構成は
ガバナンスとの相性が良い。

  • 入力は人が選別している
  • 判断や結論は求めていない
  • あくまで論点整理に限定している

これなら、

  • 法務の前段
  • 上司レビューの前段
  • 自分の思考整理

どこに置いても破綻しない。


Difyというプラットフォームは、
この用途に驚くほどよく合っている。

  • UIがある
  • LAN内で完結できる
  • ログが取れる

それ以上の機能は、
この段階では不要だ。

むしろ、
余計な機能を足すほど、
契約書チェックという用途から
遠ざかっていく。


重要なのは、
この構成が後戻り可能だという点だ。

  • Visionを使いたくなったら、後で検討すればいい
  • API実装が必要になったら、その時にやればいい
  • PhaseDで新たに立案すればいい

だが、最初から
そこに行く必要はない。


Difyでお手軽DXをやる、という文脈では、

  • まず置く
  • 勝手に使われる
  • 事故らない

この3点を満たすことが、
何より重要だ。

ただのチャットボットは、
この条件をすべて満たしている。

第7章|契約書チェック用・Difyプロンプト道場

ここまでで、構成は確定した。

  • Visionは使わない
  • ローカルLLM前提
  • Dify上のチャットボット
  • 役割は「判断しない思考整理役」

あとは、
LLMに余計なことをさせないための制約を与えるだけだ。

この章は、
高度なプロンプト設計の話ではない。
むしろ逆で、
どこまで削れるかの話になる。


7-1. 契約書チェックで、LLMにやらせてはいけないこと

まず、禁止事項を明確にする。

契約書チェック用途で、
LLMにやらせてはいけないのは次の4つだ。

  • 判断を下すこと
  • 結論を出すこと
  • 是非・可否を断定すること
  • 修正案を提示すること

これらはすべて、
人間の責任領域に属する。

LLMがここに踏み込んだ瞬間、
便利さと引き換えに、
説明不能なリスクが生まれる。


7-2. 役割を極端に限定する

そこで、役割をここまで絞る。

論点整理だけを行う補助者

具体的には、

  • 注意が必要そうな箇所を挙げる
  • 一般的な契約で争点になりやすい点を列挙する
  • 読み手が確認すべき観点を提示する

それ以上はしない。

「どうすべきか」は聞かせない。
「問題かどうか」も言わせない。


7-3. 最小構成のプレプロンプト例

Difyのチャットボットに設定する
プレプロンプトは、これで十分だ。

あなたは契約書チェックの補助者です。
判断・結論・是非・推奨・修正案を出してはいけません。
断定的な表現を避けてください。
入力された文章について、
・論点になりやすい箇所
・注意して確認すべき点
・読み手が見落としやすい観点
のみを整理してください。
※本整理は一般的な実務上の論点を示すものであり、
個別案件についての法的判断を行うものではありません。

これ以上、説明は要らない。

「なぜ禁止なのか」を書き足したくなるが、
それは人間向けの説明であって、
LLMには不要だ。

制約は、
理由ではなく条件として与える。

Difyのプレプロンプトは、LLMプロばてぃの「SYSEM」に書こう
Difyのプレプロンプトは、LLMプロばてぃの「SYSEM」に書こう

7-4. 実際の使い方(地味で正しい)

運用は、拍子抜けするほど単純だ。

  1. 契約書の対象範囲を人が選ぶ
  2. その部分をテキストで貼り付ける
  3. 「論点整理をお願いします」とだけ投げる

それだけでいい。

全文を貼る必要はない。
むしろ貼らない方がいい。

  • 今どこを読んでいるのか
  • 何が気になっているのか

それが曖昧なままでは、
LLMの出力も曖昧になる。


7-5. なぜこの構成が事故らないのか

この使い方には、
事故を防ぐ構造が最初から埋め込まれている。

  • 入力は人が選別している
  • LLMは判断しない
  • 出力は「気づき」に留まる

仮に誤った指摘があっても、
それは判断材料の一つでしかない。

「AIがそう言ったから」
という逃げ道が、
最初から存在しない。


7-6. 使用例(業務委託基本契約書)

しっかり勘所を抑えられおり、十分実用に耐える。

■ 論点になりやすい箇所

「仕様書」の成立条件(第3条)

仕様書の成立は「発注書提出」+「受注書提出」の時点で成立とされるが、

→「提出」が「合意」を意味しているか不明。
→両方の提出が「成立」の条件として明示されているが、書面の内容や署名・印鑑の有無、双方の承認の有無が明示されていない。

「着手金の返金」の条件(第6条)

→「乙の重過失を除き、返金には一切応じない」とあるが、
→「重過失」という表現が曖昧。**※「重大な過失」や「明確な損害」**の定義が契約内にないため、実務で争いが発生しやすい。

「納品・検収」の期間(第7条)

→「確認依頼通知受領後20日以内に連絡がない→検収完了」とあるが、
→「連絡がない」は「返信がない」であり、「確認依頼」の内容が「納品完了」を意味するか不明。
→「納品完了」の判断が契約上の検収基準として明示されていない。

...
Difyで作成した「契約書チェッカー」の使用例(業務委託基本契約書)。本例では、契約書本文を人が確認した上でテキストとして入力している。
Difyで作成した「契約書チェッカー」の使用例(業務委託基本契約書)。本例では、契約書本文を人が確認した上でテキストとして入力している。

終章|2026年現在、この判断がいちばん壊れにくい

本稿で示した構成は、
決して洗練されたAI活用事例ではない。

  • Visionは使わない
  • 契約書を丸ごと放り込まない
  • 判断も結論もAIに委ねない

やっていることは、
Dify上に
少し制約の強いチャットボットを置いただけだ。

だが、この地味さには理由がある。


契約書チェックという業務は、
失敗したときの説明コストが極端に高い。

  • なぜ、その判断に至ったのか
  • どこまでをAIに任せたのか
  • 人は何を確認したのか

これらを言葉で説明できない構成は、
どれほど便利でも長くは使われない。

本稿で採った構成は、
最初からその説明ができる。

  • 入力は人が選んだ
  • AIは論点整理しかしない
  • 判断は人が行った

この三点が、
ログと操作履歴としてそのまま残る。


Visionを使わない判断も、
技術的な敗北ではない。

Dify × LM Studio × ローカルLLMという環境において、
Vision推論は現状、
安全に成立させる経路が存在しない

それなら、
無理に使わない。

使えるようになったら検討すればいい。
別の作戦を立てればいい。

重要なのは、
今この瞬間に
事故らずに回る構成を選ぶことだ。


Difyでお手軽DXをやる、という文脈では、

  • 高度さよりも
  • 網羅性よりも
  • 将来性よりも

「今日から使えて、
明日も止まらない」ことの方が価値がある。

その条件を満たすのが、
この“ただのチャットボット”だった。


これは完成形ではない。
だが、出発点でもない。

すでに現場で行われていた
「黙ってLLMに相談する」という行為を、
公式に置いただけだ。

それだけで、
契約書チェックという重たい業務は、
少しだけ扱いやすくなる。

AIの未来を語る必要はない。
2026年現在、
ここで止めておくのが正解だった。

この判断が、
あとから見て
「賢かった」と評価されるかどうかは分からない。

だが少なくとも、
壊れにくい。

それで十分だ。