はじめに
LLMアプリ開発プラットフォーム Dify。
この前ちょっと触る機会があったんです。
非常に強力なツールですが、初心者が触り始めるときにどうしても気になってしまうのが 「APIの課金」 ではないでしょうか。
「このボタンを押したら、いくら課金される…?」
「ループ設定を間違えて、とんでもない請求が来たらどうしよう」
「無料枠を使い果たしたら…」
どのようにAIを呼び出しているかわからないから気になってしまいます。
そんなケチ……もとい、慎重派な僕は思いました。
「AIの部分を自分で作っちゃえば、課金を気にせず遊び倒せるんじゃない?」
今回は、Claude CodeやGeminiといったツールを活用して、Difyから「OpenAI API」として呼び出せるモックサーバーを作った記録を共有します。
今回作ったサンプルコード
以下にアップロードしました。
https://github.com/aji-taro/dify-mock
使いかたは、README.md に記載してあります。
開発のメリット
Difyは本来ノーコードツールであり、自分でバックエンドを実装するのは本末転倒かもしれません。
しかし、以下のメリットがあると考えました。
- 無料: 外部APIを利用せず、自作モックならどんなにリクエストを投げても0円(作業中に食べたおやつ代や PC の電気料金は、別カウント)
- 学習効果: Difyが内部でどのようなデータを送受信しているか可視化できる
- 将来性: 開発フェーズや結合テスト時のモックとして役立つ
活用したAIツールたち
AIツールもいろいろ使ってみようと思い、以下の布陣で挑みました。
(単に作るだけなら Claude Code だけでできますね。)
- Gemini: 開発全般を相談
- NotebookLM: DifyやOpenAIのリファレンスを読み込ませて要約
- Claude Code: プログラミング担当。「実現性は高い」との心強い回答から、数分でコードを生成(しかし、このあと苦労するのであった…)
なお、Claude Code に入力するプロンプトは、Gemini に書いてもらいました。

すんなりいかないところも
Claude Codeによるプログラミングは数分でした。
DifyのDockerコンテナを起動したら、すぐ画面を表示できた。
作ったモックサーバーも動いています。
しかし、Difyの「OpenAI API Compatible」がインストールできない…
Claude Code に相談し試行錯誤を繰り返すも、どうしてもうまくいきません。
解決の決め手は「Difyを特定のタグ 1.13.3 にチェックアウトし直す」ことでした。
# 最新版ではなく安定したタグに切り替えることで解決
git checkout 1.13.3
main ブランチの最新コミットのものを動かしていてうまくいかなかったのですが、タグ 1.13.3 にしたら普通に動いた!

気づいたこと
無事に動いたところで、Difyからのリクエストをコンソールに表示させるように変更しました。
すると、発見がありました。
Dify は、AI へのリクエストの messages の中に これまでの会話履歴を含めて送ってきているのです。
チャットアプリなら当たり前な仕様ではありますが、自分で作ったサーバーに届く生データを見ると実感できますね。
「AIをどう呼び出すべきか」という学習にも使えそうです。

そうだ、意図的にモックからエラーをレスポンスしたら、エラー系のテストをすることもできる、なんてことも思いつきました。
ソースコードに学び、記事としてアウトプット
Claude Code が書いてくれたPythonのコードは、Gemini に解説してもらいました。
ちなみに、この記事の執筆自体にも Gemini(Canvas)を活用しています。
たたき台は僕が書いて Gemini(Canvas)で仕上げました。
例えば、タイトルの「パケ死ならぬAI破産」という言葉は、AIが「破産」という言葉を出してきて僕が「パケ死」を思いついた。
記事は僕とAIの合作と言ってもいいかな。
おわりに
この記事を読んで「自分ならこんな検証に使ってみたい!」「モックサーバーをこんなふうに進化させたい!」というインスピレーションが湧いた方がいたら、ぜひ教えてください。
それでは!