スキップしてメイン コンテンツに移動

AIに「ハンコ」を押させるな:LangChainのHuman-in-the-loopで実現する責任ある自動化

AIに「ハンコ」を押させるな:LangChainのHuman-in-the-loopで実現する責任ある自動化

はじめに:AIが勝手にメール送っちゃった事件

「お客様に変なメール届いてるんですけど!」
完全自動化を目指しすぎた結果、AIエージェントが誤った内容のメールを顧客リスト全員に送信してしまった…。想像するだけで胃が痛くなりますね。

AIは便利ですが、幻覚(ハルシネーション)を見ます。だからこそ、重要なアクション(メール送信、DB更新、契約締結など)の前には、必ず**「人間のチェック(承認)」**を挟むべきです。今回は、LangChain (LangGraph) を使って、この「Human-in-the-loop」をシステム的に実装する方法をご紹介します。

基礎知識:Human-in-the-loop (人間介入) とは

「自動化の意味ないじゃん」と思うかもしれませんが、逆です。「9割はAIが下書きし、最後の1割(決定)だけ人間がやる」ことで、生産性と安全性を両立させるのがモダンなAI開発のアプローチなのです。

上司の承認印(ハンコ)みたいなものです。嫌われがちなハンコ文化ですが、事故防止装置としては優秀なんですよ。

実装・設定:LangGraphでの承認フロー実装

LangGraphを使えば、状態遷移図としてワークフローを記述できます。ここで interrupt_before を使うのがポイントです。

from langgraph.graph import StateGraph

# グラフの作成
workflow = StateGraph(State)
workflow.add_node("draft_email", draft_email_agent)
workflow.add_node("send_email", send_email_tool)
workflow.add_edge("draft_email", "send_email")

# ★ここが重要! send_email の前で一時停止する設定
app = workflow.compile(interrupt_before=["send_email"])

こうしておくと、メールの下書きが終わった時点で処理が一時停止します。管理画面などで人間が中身を確認し、「承認」ボタンを押して初めて send_email が実行されるわけです。

応用テクニック:Slack連携によるスムーズな承認

いちいち管理画面にログインして承認するのは面倒ですよね。Slackのインタラクティブボタンを使えば、「承認」「却下」ボタン付きの通知をSlackに飛ばし、そこから直接AIの処理を再開させることができます。
「外出先からスマホでポチッと承認」。管理職としても、このスピード感はありがたいです。

トラブルシューティング:ステート管理の落とし穴

Human-in-the-loopを実装するには、処理の状態(State)をどこかに永続化する必要があります。デフォルトのメモリ上保存だと、承認待ちの間にサーバーが再起動したらタスクが消滅してしまいます。
本番運用では必ず PostgresSaver などを使ってDBに状態を保存しましょう。

まとめ:最後の責任を取るのは私たち人間だ

AIエージェントの自律化が進めば進むほど、Human-in-the-loopの重要性は増していきます。

「AIが勝手にやりました」は、ビジネスの世界では通用しません。最後の最後で「Goサイン」を出す権限と責任は、我々人間が手放してはいけないのです。

この記事はAI技術を活用して作成されましたが、内容は慎重に確認されています。

コメント