メンバ:森、土田、川幡、河野、中村、神崎、富久、橋村、伊尻
----- Session1 ----- 1830-1934 土田さん:LangChain V1.2 概要
エージェント開発を支える共通機能の整理
資料:LangChain v1.2について202601.pdf
ソース:https://github.com/ktsuchida11/AIWorkshop202601/blob/main/middleware_agent.py
簡単にエージェントをつくりたい:LangChainだけで実装
ワークフローをつくりたい: LangGraphも利用する
LangChain Create_agentを中心としたパッケージ
LangChain-core コアの抽象化
LangGraph ワークフロー実装のAPI
Langchain-openai/langchain-anthropiなど 各モデル向けの実装
Langchain v1.2のまとめ
・create_react_agent → create_agentに変更
・エージェントのインプットとアウトプットを構造化
・Middleware機能の追加
・機能のフェードアウト Prompt template/Output parser/LCEL が公式ページ例からなくなった
・LangGraphでLocalServerにできる
・LangChainの脆弱性
エージェントのインプットとアウトプットを構造化
・出力(特に「構造化出力 / structured output」)の取り扱いが大きく改善され、モデルによる構造化データ生成がメインループで直接行われるよう
@データ損失防止:出力ミスによる情報欠落のリスクが低減
A直接利用可能な形式:解析不要でデータとしてそのまま扱える
Bバリデーションによる安心感:スキーマに沿った出力なので、型に合わない結果はエラーとして検出される
・Standard Content Blocks(標準コンテンツブロック)」という考え方により、モデルに関係なく reasoning(思考部分)、text(自然言語出力)、tool outputs(ツールからの出力)などを構造化して扱う仕組みが整備
structured outputについて
・ProviderStrategyはモデルプロバイダ側でネイティブに対応している場合に有効で、OpenAIやGroKのような一部モデルが直接スキーマ対応して出力
・ToolStrategyはモデルがネイティブ対応しないときに用いられ、LangChainが内部的にツール呼び出し戦略で構造化出力
・通常、schemaを直接指定するだけでモデルが対応すればProviderStrategyが自動的に使われ、対応モデルがない場合はToolStrategyにフォールバックする
Built-in Middleware とは?
・LangGraph 上でエージェント/ワークフローを実行するときに、モデル呼び出しやツール呼び出しの「前後」に共通処理を挟み込むための仕組み
・各ノードのロジックを書き換えずに、横断的な関心事を後付けできる:
コンテキスト管理(要約・編集・古い情報のクリアなど)
ガバナンス/安全性(Human-in-the-loop、PII マスキング、モデレーションなど)
信頼性/コスト管理(リトライ、フォールバック、回数制限、プロンプトキャッシュなど)
開発者向け機能(シェル実行、ファイル検索、ツール選択・エミュレーションなど)
・使い方のイメージ:graph 実行時に middleware=[...] を指定すると、対象イベントごとに自動で処理が走る
Built-in Middleware の全体像
・目的別カテゴリ
コンテキスト・タスク管理
ガバナンス・安全性・コンプライアンス
信頼性・コスト最適化
開発者生産性・ツール連携
・Provider 別
Provider-agnostic:ほとんどのミドルウェア(Summarization, HITL, Call limit, Fallback, PII など)
Anthropic 向け:Prompt caching, Bash tool, Text editor, Memory, File search など
OpenAI 向け:Content moderation(OpenAIModerationMiddleware)
コンテキスト・タスク管理系
・SummarizationMiddleware
会話履歴がコンテキスト上限に近づいたら、古いメッセージを自動要約
直近メッセージは保持しつつ、過去を「要約 1 メッセージ」に圧縮
・ContextEditingMiddleware(例: ClearToolUsesEdit)
古いツール実行結果だけを削除/プレースホルダ置換してトークン削減
・TodoListMiddleware
ToDo リスト作成・更新機能を付与し、マルチステップタスクを管理
・(Anthropic)Claude Memory / Text Editor / State File Search
長期メモリやテキスト編集・仮想ファイル検索で長期タスクやコード編集をサポート
ガバナンス・安全性・コンプライアンス系
・HumanInTheLoopMiddleware
ツール実行前に処理を一時停止し、「承認・編集・却下」を人が判断
DB 書き込み、メール送信、決済など高リスク操作のガードレール
・PIIMiddleware
メールアドレスやクレカ番号などの PII を検出し、マスク・伏字・ブロックなどで処理
入力・出力・ツール結果のどこに適用するかを制御可能
・OpenAIModerationMiddleware(OpenAI 専用)
OpenAI モデレーション API で入力・出力・ツール結果をチェックし有害コンテンツを制御
信頼性・コスト最適化系
・ModelFallbackMiddleware
メインモデル失敗時に別モデルへ自動フォールバック
モデル障害時のレジリエンス向上・コスト最適化に有効
・ToolRetryMiddleware
ツール呼び出し失敗時に自動リトライ(指数バックオフなどを設定可能)
ネットワーク一時障害などに強いエージェントを構築
・ModelCallLimit / ToolCallLimit
コスト上限や API 呼び出し回数の SLO を守るための制御
・(Anthropic)PromptCachingMiddleware
長いシステムプロンプトやツール定義をキャッシュし、レイテンシとコストを削減
開発者生産性・ツール連携系
・LLMToolSelectorMiddleware
サブ LLM で「どのツールを使うべきか」を選別し、本体モデルには絞り込んだツールだけ渡す
トークン削減・精度向上に寄与
・LLMToolEmulator
実ツールを呼ばずに、LLM が「ツール結果っぽいレスポンス」を生成(モック)
外部 API 未実装・コスト高ツールの代替として開発初期に便利
・ShellToolMiddleware
永続シェルセッションをエージェントから操作可能(実行ポリシーで権限制御)
・FilesystemFileSearchMiddleware
ファイルシステムに対する Glob / Grep をツールとして提供し、コードベースやドキュメント検索に有効
・(Anthropic)Text Editor / StateFileSearch
Claude のテキスト編集と仮想ファイル検索で大規模リファクタリングを支援
Provider 別 Middleware 一覧
・Provider-agnostic(どの LLM でも利用可能)
Summarization / Human-in-the-loop
Model call limit / Tool call limit / Model fallback
PII detection / To-do list / LLM tool selector / Tool retry / LLM tool emulator
Context editing / Shell tool / File search
・Anthropic 専用 Prompt caching / Bash tool / Text editor / Memory / File search
・OpenAI 専用 Content moderation(OpenAIModerationMiddleware)
自社エージェントでの活用パターン例
・社内 Q&A / 社内ポータルボット
Summarization + ContextEditing:長時間利用でも履歴維持
PIIMiddleware / OpenAIModeration:コンプライアンス対応
・業務自動化エージェント(メール送信、チケット登録など)
HumanInTheLoop:高リスク操作の事前確認
ToolCallLimit / ToolRetry:外部 API 安全利用
・開発者向けコーディングエージェント
FilesystemFileSearch + ShellTool:コード検索・テスト実行
(Anthropic)Text Editor / Memory:リファクタリングと継続的作業
カスタム middleware
・[@before_model]などのデコレーターが用意されていて呼び出したいところの値を設定した関数を作成するだけ
・クラスで実装する場合はAgentMiddlewareを継承してbefore_modeなどを実装
機能のフェードアウト(Prompt template / Output parser / LCEL)
・言いたいこと(結論):これらは「廃止」ではなく、公式ドキュメントの“入口の作例”で主役ではなくなったため、フェードアウトして見えます。いまの入口は Agent(`create_agent`)中心です。
・何が変わったか:以前の「PromptTemplate → LCEL(`|`合成)→ OutputParser」型の例より、v1 系は `create_agent` + middleware + structured output の導線が前面に出ます。
構造化出力は、プロンプトでJSONを書かせてパースする方式(prompted output)が非推奨になり、`response_format` での prompted output はサポート対象外と明記されています。
古い記事やサンプルで PromptTemplate/LCEL/OutputParser を見てもまだりようできるので焦らなくてOK。ただし、公式の推奨は Agent(create_agent)+ middleware + structured output に移っている。
LangGraphでLocalServerにできる
・何ができる?:`langgraph dev` で Agent Server をローカル起動できます(開発・テスト用の in-memory モード)。 ([LangChain Docs][6])
・何が嬉しい?:ローカルに API サーバが立つので、外部ツールやUIから叩ける形で動作確認・デモがしやすい(/docs が提供される想定)。
・注意点:`langgraph dev` は in-memoryで、開発・テスト向け。本番は永続ストレージ等を伴うデプロイが前提
LangChainの脆弱性
・対象の脆弱性(2025年12月公開)
Python(langchain-core): CVE-2025-68664 / GHSA-c67j-w6g6-q2cm (GitHub)
JavaScript(@langchain/core / langchain): CVE-2025-68665 / GHSA-r399-636x-v7f6 (GitHub)
・脆弱性の種類(要点)
Serialization Injection(シリアライズ注入):シリアライズ時に、ユーザー由来の自由形式データ内の 'lc' キー を適切にエスケープできず、後段の load() / loads()(JSは load())で LangChainオブジェクトとして誤解釈され得る。 (GitHub)
・攻撃が成立する典型パターン
LLM出力やユーザー入力に混入したデータ(例:metadata, additional_kwargs, response_metadata)がシリアライズされ、後でデシリアライズされる経路で悪用される。 (GitHub)
・環境変数シークレットの漏えい:secrets_from_env(Python)や secretsFromEnv(JS)が有効だと、細工された構造により 環境変数から秘密情報を読み出しされ得る。 (GitHub)
・(条件付きで)クラスのインスタンス化による副作用:
Python:許可された信頼名前空間(langchain_core 等)内の Serializable サブクラスが生成され、__init__ の副作用(ネットワークアクセス等)に繋がり得る。 (GitHub)
・影響を受ける条件(代表例)
Python:astream_events(version="v1") や Runnable.astream_log() が内部で該当シリアライズを使う(v2は非該当と明記)。 (GitHub)
Python:dumps() / dumpd() を 非信頼データに対して使い、その結果を load() / loads() で復元する。 (GitHub)
・影響バージョンと修正版
Python(pip: langchain-core)
影響あり:>= 1.0.0, < 1.2.5
影響あり:< 0.3.81
修正済み:1.2.5 / 0.3.81
JavaScript(npm: @langchain/core)
影響あり:>= 1.0.0, < 1.1.8
影響あり:< 0.3.80
修正済み:1.1.8 / 0.3.80
JavaScript(npm: langchain)
影響あり:>= 1.0.0, < 1.2.3
影響あり:< 0.3.37
----- 講義ノート(河野)
langchain v1 -> v1.2 になって安定したので紹介
langchain 簡単にエージェントつくる
langgraph より高度な内容で実装したい
エージェントのインプットとアウトプット
データ損失防止、直接利用可能な形式、バリデーションによる安心感
structured outputについて:軽く知っておく程度で
Built-in Middleware とは?
Langgraph/langchain 上で問い合わせする場合の共通手順を設定できる
コンテキスト管理、ガバナンス、信頼性、開発サポート
create agent 時に middleware= を指定して利用する
Built-in Middleware の全体像
SummarizationMiddleware 会話履歴がコンテキスト上限に近づいたら要約
直近を保持しつつ過去を要約1メッセージ化
ContextEditingMiddleware
古いツール実行結果だけを削除、プレースホルダ置換してトークン削減
TodoListMiddleware
todoリスト作成、マルチステップタスク管理
Anthropic対応:Claude Memory/Text Editor/StateFile Search
ガバナンス・安全性・コンプライアンス系
Human in the loop:実行中の承認等
Pll
信頼性・コスト最適化
失敗時に別モデルにフォールバック
開発者ツール
サブLLMでどのツールを使うべきか選別、本体モデルには絞り込んだツールだけ渡す
モック生成
外部APi未実装時の代替
Provider 別対応
・自社エージェントでの活用パタン例
社内QA ポータルbot
長期履歴保持、コンプライアンス対応
業務自動エージェント メール送信・チケット登録等
カスタムmiddleware
機能フェードアウト
Langgraph を localserver化できるメリット
ローカル動作すると開発・試験しやすい
Langchainの脆弱性 v.2025/12
シリアライズ注入、環境変数シークレットの漏洩
新versionでは解消済み
実装演習
(1)構造化して outputしたい
langgraph stateの概念が引き継がれる:変数・型・クラスで共有
例:web リサーチエージェント:日銀レポートを取得して格納
レポート発表前後のマーケット状況の変化をエージェントにきく
AWS claude は呼び出し回数制限が入るので chatGPTを使った
プロンプト:2024/12のレポートを要約し、会合前後のマーケットの変化をレポートして下さい
structured response に値が入っていく
従来はプロンプト内にこれら要素を書いて渡していたが、構造化が自動的に行われる
(2)middleware agent利用
web検索した結果を html fileにして出力する agent
file save 時に確認メッセージを表示する
checkpoint:問い合わせ時のロールバックポイント 永続化できる
割り込み処理で確認メッセージを呼び、その後 check point に resumeする
サマライズ、容量を小さくしながら内容を保持する
セキュリティ担保 個人情報・APIキーなどチェックする
OpenAIのAPIキーが入っていたら自動的にマスクする
セキュア情報が入った処理を中断する
どういう対応を行ったかも教えてくれる
対象とするキーはカスタマイズできる
----- QA
こうの 自作したサービスに共通処理として外部 middlewareを入れやすい構造?
つちだ web処理時の middlewareのように共通で行う処理的な概念
かわばた USでこのような機能を入れておくように、という法令対応のため?
つちだ 業務的なセキュリティ要求ではないか ガバナンス充実して事故を防ぐ
かわばた ユーザ操作に応じて middleware処理を変えられるのはよい
正規表現的なフィルタより複雑なものをつくれそう
----- Session2 ----- 1934-2110 かわばたさん:最新AIテクノロジー概説
** 共通テストの話題
- AIも間違えた2026共通テストの問題。生成AIが得意の数学で満点を取れなかった理由を東大院生が解説 | 学校・受験 | 東洋経済オンライン :: https://toyokeizai.net/articles/-/930500
** Anthropic Claude Code
(最近、非常に人気のプログラム支援AI)
*** 入門・チュートリアル
- <2026-01-21> Agentic Coding 実践ワークショップ - Speaker Deck :: https://speakerdeck.com/watany/agentic-coding-workshops-20260121
- <2026-01-25> Claude Codeベストプラクティスまとめ :: https://speakerdeck.com/minorun365/claude-codebesutopurakuteisumatome
- <2026-01-20> [翻訳] Anthropic ハッカソン優勝者による Claude Code 完全ガイド【基礎編】 :: https://zenn.dev/studypocket/articles/claude-code-complete-guide
- <2026-01-03> 【2026年最新版】Claude Code 完全入門ガイド|創業者直伝のノウハウ、おすすめSkills・SubAgnets、SaaSの未来、月額400円活用術まで2.7万文字で詳細解説。|チャエン | 重要AIニュースを毎日発信 :: https://note.com/chaen_channel/n/n170fbfcd94bf
- <2026-11-18 Fri> シンプルなTODOアプリを、Claude Codeを使って5分で作って30分で公開する | gihyo.jp :: https://gihyo.jp/article/2025/11/get-started-claude-code-03
- 【書評】実践Claude Code入門|npaka :: https://note.com/npaka/n/n9ac45fcb2d16
*** Claude Code の各種拡張機能
- <2026-01-19> 濫立するClaude Codeの機能の使い分け:スキル、サブエージェント、スラッシュコマンド、CLAUDE.md、Hooks :: https://zenn.dev/notahotel/articles/a175aa95629d0b
- <2026-01-04> Claude Code の7つの拡張機能、結局どう使い分ければいいの? :: https://zenn.dev/tmasuyama1114/articles/claude_code_extension_guide
- <2025-12-30> Claude Codeの真価を引き出す:Skills・MCP・Subagentsの組み合わせ術|hiromi maeo :: https://note.com/enhanced/n/n3424d05df50f
- <2025-12-24> Claude Codeの拡張機能が分からなくなったので全部整理した(CLAUDE.md / サブエージェント/ スラッシュコマンド / スキル / MCP) #AI - Qiita :: https://qiita.com/nak1104/items/a0274cd106ea7b6f1771
- <2025-12-15> Claude Codeのユーザー設定プロンプトを使い分けてコンテキスト管理を最適化する (CLAUDE.md, rules, slash commands, skills, subagents) | Atusy's blog :: https://blog.atusy.net/2025/12/15/claude-code-user-config/
** OpenAI
*** Open Responses
LLM間の推論インタフェースの標準化
- Open Responses の概要|npaka :: https://note.com/npaka/n/nb8d8a64e0cbf
- Open Responses: Open-Source Standard for LLM Interoperability - SuperGok :: https://supergok.com/open-responses-llm-interoperability/
*** GPT-5.2
- GPT-5.2 の概要|npaka :: https://note.com/npaka/n/n7a4bdf31d37a
*** Gemma
- FunctionGemma の概要|npaka :: https://note.com/npaka/n/nc3b38de5c25f
- TranslateGemma の概要|npaka :: https://note.com/npaka/n/ne22141b07a0f
*** Gemini
- Gemini Personal Intelligence の概要|npaka :: https://note.com/npaka/n/n4bfbc8d0b09c
- Gmail の Gemini 新機能まとめ|npaka :: https://note.com/npaka/n/n6b3701ac65db
- Geminiの勢いが止まらない。ChatGPTが圧倒されるのも仕方ない | ギズモード・ジャパン :: https://www.gizmodo.jp/2026/01/similarweb_global_ai_tracker_2026_jan_1_gemini_got_share.html
** 日本語Local LLM比較
- 2026年最新!小型LLM日本語ガチランキング【Qwen3 vs Gemma3 vs TinyLlama】Ollamaで爆速カスタム術も :: https://zenn.dev/kewa8579/articles/2996512cafaec4
** Qwen
- Qwen-Image-Edit-2511 の概要|npaka :: https://note.com/npaka/n/n79cc62c5e0a8
- Qwen3-TTS-VD-Flash ・ Qwen3-TTS-VC-Flash の概要|npaka :: https://note.com/npaka/n/nfec8195b385a
** 最近の注目の本
- 対称性と機械学習/岡野原 大輔|自然科学書 - 岩波書店 :: https://www.iwanami.co.jp/book/b10144338.html
- ゼロからつくるDeep LearningE LLM編 :: レビューが終わり、半年後に出版予定。
----- 講義ノート(河野)
過去2か月の topic
共通テストを AIで解かせた
LLMほぼ解けるようになっていた、驚き
ChatGPT/Geminiは数学オリンピックの問題は解ける
AIが間違えた 2026共通テストの問題
問題文を画像で送信すると OCRが弱くてうまく認識できなかった
人間が文字化して渡せば解けた
ClaudeCode
最近性能が大きく改善した
UIも良く出来てる
拡張機能が充実してきた:どんなのがある?
良いサンプル:シンプルな todoアプリを ClaudeCodeを使って 5分で作って 30分で公開する
丸投げ型の紹介
推薦書籍:ClaudeCodeによるAI駆動開発入門
最近の高機能:skills
書評:実践ClaudeCode入門 業務システム開発プロジェクトへの応用方法の示唆
ソフトウェア開発工程のレイヤを自由に移動してサポートできる
開発プロセス全体を見渡しながら ClaudeCodeを使える
開発そのものを安定化する方向で使う
spec駆動開発
内容を完全にしながら開発していける
プロンプトの工夫、スペックをどう作るか、MCP/Actionの活用、レビューと検証
大学にて学生に論文を書かせる指導を AIにサポートさせるのは有効
ClaudeCode:windowsで動作可能となった
powershell でOK、UIも大丈夫だった
本の内容を pdfにして Google notebookLMに入れたい
epub を Androidで読むと drm解除で localに保存するので、これを PCで取得できる
書籍:Anthropicハッカソン優勝者による CouldeCode完全ガイド
ClaudeCode の拡張フレームワーク Skills/SubAngents が好評
・hook:特定のイベントに連動して実行
Aが起こったらBを行うといった処理、ClaudeCodeが何かを通知した場合にPCの音を鳴らす
jsonによる設定ファイルとして動作安定性を確保
・CLAUDE.md:常に知っておくべき知識、オリジナルマークダウン、Sonnet4.5では 200kトークンまで
多くなるとサマライズする
・サブエージェント:独立した作業、作業過程記憶は不要
agentsフォルダ内に定義したエージェントを作業中にコールする、作業過程は不要で結果のみ利用する場合、開発中の確認ツールなど:コンテキストの忘却
・スラッシュコマンド:ショートカットとして繰り返し複雑な手順を呼び出したい
/ を入れておくと短縮形を補完しながら処理を実行できる:skillsと類似。人間が処理内容・タイミングを明示できる、エイリアスのような機能
・スキル:上記以外の処理を指定
CaludeCode起動時に知識の冒頭部を読み、必要に応じて全体を読み込んで利用する。コンテキスト・メモリ・処理速度を最適化する。
・MCP:AIアプリ全体を対象としたプロトコル、コンテキストの観点から必要なもののみにした方がよい
・プラグイン:追加機能をパッケージ化して共有・配布する機能
CluadeCodeはいろいろ拡張できる
プロが作った skillsをまとめて利用したい
vibecodingで動くものはできるが堅牢なシステムをつくるのは容易でない
Superpowers:鬼PM+エリート外注部隊のスキルを追加できる
メインエージェント:PM、サブエージェント:実働部隊
来年にはデフォルトで入ってくるかも?
Anthropicハッカソン優勝者の設定集 everything-Coulde-Codeリポジトリを読み解く
ClaudeCodeは拡張機能で各エンジニアのノウハウを追加して共有できる仕組みを作ったのがすごい
集合知エコシステムとしての進化が期待される
OpenAI Open response
推論するための LLMどうしの会話APIの標準化
ビルダー=LLM
ステートレス、暗号化対応
モデル設定パラメータ標準化
ストリーミング:セマンティックイベント
curlでOpenResponses を呼ぶ
モデルプロバイダとルータによるモデルオーケストレーションの組み合わせ
huggingfaceがサポートしている
OpenAI GPT5.2
物腰がやわらかくなり、ハルシネーション低減
vision改良:LVM対応:画像も入力可能
local LLMを動かしやすい ollamaで visionをサポート:画像生成対応
まずは MacOSのみ、z-image turbo(china), FLUX.2 Klein(US)
メモリを多く要求する
Gemma:OpenSource、ローカル動作可能
FunctionGemma:自然言語を APIアクションに変換
人・コンピュータ双方の言語を翻訳して動作可能:自然言語とソフトウェア実行の連携化
カスタマイズ可能:ファインチューニングでプライベート学習強化
256k:エッジデバイスで実行可能:nvidia jetson nano、スマホ
TranslateGemma:翻訳に特化したモデル
55言語コミュニケーション 27B
ローカルで動くコンパクト高性能オープンモデル:高精度・高効率、モバイル推論サポート
Geminiモデルをオープンアーキテクチャに凝縮2段階ファインチューニング
SFT:教師ありファインチューニング、RL:強化学習
厳密に 55言語をサポート、追加 500言語ペアで学習
強力なマルチモーダルも導入:Vistra画像翻訳もサポート:画像内テキストも認識
カスタマイズも可能
Gemini:proprietary
gmail組み込み対応化
gmailユーザ 30億人
受信トレイ管理:受信トレイアシスタント機能
受信トレイになんでも質問:AI overview:有料サービス
会話全体を要約して要点を簡潔にまとめる
自然言語でメール内容を要約
Help me writeで文章をブラッシュアップ
suggested replies:返答を自動下書き
Proofread:高度な文法・トーン・スタイルチェック:有料
Gemini personal intelligence
ユーザ自身を理解してナビゲートする:まず US向けリリース
Geminiをパーソナライズできる
Gmail/Google photo/Youtube/Google searchの連携し、個人に合わせたコミュニケーションと応答を可能とする
個人のファイルデータから回答を作成してくれる
x Grok 4.1
非常に優秀になった。ハルシネーションが低減されている
Qwen 中国系LLM
小型LLM(1b-4b)日本語比較
Qwen3-1.7B:日本語会話はたいへんなめらか
Gemma3-4B:日英翻訳が優秀
TinyLlama-1.1B:クラシックになった
nvidia DGX spark
peta flops(fp4) float 4bit:たくさん並列接続動作可能
nano chatをつくってみる
書籍:zeroからつくる deeplearning 6 LLM編:新刊
公開レビュー原稿:完成度高かった
ライブラリに頼らず高性能LLMをつくっていく
論文を読んで強化学習用 GRPOを実装している:Group relative policy optimization
情報系学生だと理解できるレベルで説明
QA----
つちだ CouldeCodeの機能は Github Copilotでも類似機能がでている
local LLM やってみたい
こうの claude code 本おもしろそう
----- 次回 AIws#82 2026/2/20