Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agentic AIのアーキテクチャ設計と Context Engineering 〜 Lan...

Avatar for 鏡味秀行 鏡味秀行
November 14, 2025
150

Agentic AIのアーキテクチャ設計と Context Engineering 〜 LangChain4jによるJava実装

JJUG CCC 2025 Fall のセッション資料です。
本資料の著作権は株式会社アルファシステムズに帰属します。

デモは以下です
https://github.com/hide212131/langchain4j-claude-skills-agent

Avatar for 鏡味秀行

鏡味秀行

November 14, 2025
Tweet

More Decks by 鏡味秀行

Transcript

  1. A 自己紹介  鏡味(かがみ) 秀行 (ほぼ53歳)  職務:  社内の生成AIの普及展開

     発表: JJUG CCC/Java on Azure Day JHipster/LangChain4j  プライベート  日曜エンジニア(生活と地域をITとAIで解決)  緑黄色社会 、ドラム
  2. A 皆さまのモチベーションをUP! ここにいる方々は、既にAgentic AI / Context Engineering技術を体得済みかも or すぐに体得できる! 

    1年前から衝撃的な進化をしている Agentic AI  その実例であるCoding Agentが、生成AI界での一番の成功 のユースケース  Coding Agentを使うための試行錯誤が Context Engineering に直結  Java技術者ならあとはLangChain4jで使い方を学ぶだけ!
  3. A Agentic AIの認知アーキテクチャ (2024.3) DeepLearning.AI: Four AI Agent Strategies That

    Improve GPT-4 and GPT-3.5 Performance  Reflect(内省)  Tool Use (ツールの使用) ≒ Act  Planning(計画)  Multi-Agent Collaboration(マルチエージェント)
  4. A Plan / Act / Reflect Agentic AIの 認知アーキテクチャの一つ 汎用的・普遍的な意思決定モデル

     Plan: 戦略立案、ゴール設定、タスク分解  Act: ツール/API実行、環境の操作  Reflect: 結果の検証、評価、計画の更新 様々な派生モデルあり  ReAct (“Reasoning + Acting”)  Plan-and-Execute  Plan-Act-Observe-Reflect Plan Act Reflect
  5. A Plan(計画) 目標の明確化と作業の効率化が目的 人間が計画する目的はAgentにも当て はまる  タスク分割と中間ゴールによる明確化  AIを路頭に迷わせないガードレール 

    全体地図作成による効率的な処理  情報の量や必要なタイミングの把握  後述のContext Engineeringに関係  並列化などによる処理時間の制御
  6. A Act(行動) モデルが外部リソースに対して(関数/HTTP/DB/検 索) 働きかける  Coding Agentでは:  Tool

    Calling(or Function Calling)  MCP(Model Context Protocol)  LLMがツールと引数を提案し、Agentが行動  入出力スキーマ定義で、LLMの非決定性をより型安全に  権限付与とセキュリティ懸念  要所でHuman In The Loopでの予防 提案 行動
  7. A Reflect(反省) 結果、過程、フィードバックにより方針を更新する  LLMの非決定性の性質を補うもの  Coding Agent例: エラー分析と再実行 

    品質を上げるにはこまめなフィードバック  まとまっての大がかりな変更はコスト高  Planで「達成水準」を作成し、後からチェック
  8. A なぜ2種類にわけて議論するのか? LLMアプリの安定性/柔軟性のトレードオフ  LLMの可能性を最大限に生かせば Pure Agent型  従来ロジックを組むには大変だった処理を実現 

    多種多様なユーザの入力内容の解釈  解釈に基づいた動的で複雑な処理を臨機応変に進行  一方、多くのユースケースは確実なWorkflow型を求める  まだLLMの不確実性のリスクは無視できない  「無理してPure Agentにしない」「堅実にいこう」
  9. A Context Engineering とは Agentic AIの台頭もあり、従 来の“Prompt Engineering” よりも広範囲の概念が求められ る傾向

    12-factor-agents/content/factor-03-own-your- context-window.md at main · humanlayer/12-factor- agents · GitHub 制約を持つLLMモデルに適切な文脈を与え、最適解を導く手法。 より広義に「LLMの能力を最大化させる手法」とも捉える
  10. A Context Engineeringの必要性  大規模言語モデルの本質的なコンテキスト長制約  Lost in middle (途中を忘却)

    問題の存在  LLMの性能向上で解消されるかは不明  Transformerの仕組み: トークンが他のトークンに注意 (Attension)を払い、入力量 n に対する計算量が O(n²)  流行り技術?一過性に過ぎない?  適切な文脈を構築するミッションは続くのではないか。
  11. A Context Engineeringは Coding Agentでどのように活用されているか Coding Agent(テクニック) Context Engineering 指示はプロンプトよりもファイ

    ルとして置くが良い 必要な時に読みコンテキストサ イズ減 MCPツールは絞るのが良い 常時コンテキスト圧迫防止 プロジェクト概要ファイルが有 効 モデルが全体文脈を把握 適度に新規セッション 文脈のシンプル化
  12. A Context Engineeringは Coding Agentでどのように活用されているか② Coding Agent(認知モデル) Context Engineering Plan:

    作業時にタスク分解 タスクを短く単一作業としてコ ンテキストのシンプル化 Act: 適切なTool Calling 外部委託でLLMの不得手を補 い能力の最大化 Reflect: 成果物の評価 フィードバック文脈を与えLLM の非決定性をカバー
  13. A LangChain4j LangChain を Java 向けに再設計した LLMフレームワーク  Spring Boot/QuarkusなどのJavaエコシステムに最適化

     主要機能  LLM(大規模言語モデル) 抽象化/  Structured Outputs/ Tool Calling/RAG  類似フレームワーク: Spring AI  現在v1.8.0  2025年8月のv1.3.0よりAgentic対応の強化 https://docs.langchain4j.dev/
  14. A AI Service – シングルAgent LangChain4jのAgentic AIの前身 以下のみで、ユーザ要求に対してAgenticに回答 1. 役割とAPIを定義

    2. LLMとツールを設定(Injection) (次ページ) interface Assistant { @SystemMessage("あなたは数値的な処理を行うアシスタントです。") String chat(String userMessage); }
  15. A Assistant assistant = AiServices.builder(Assistant.class) .chatModel(model) // LLMモデルをDI .tools(new Calculator())

    // 計算ツールをDI .build(); String response = assistant.chat( “‘hello’と‘world’という単語の文字数の合計の平方根は何ですか??”); class Calculator { @Tool("文字列の長さを計算") int stringLength(String s) {…} @Tool("2つの数値の合計を計算") int add(int a, int b) {…} @Tool("数値の平方根を計算") double sqrt(int x) {…} } 何をどの順で 使おうか…? 計算Tool ① var a = stringLength(“hello”); ② var b = stringLength(“world”); ③ var c = add(a, b); ④ var answer = sqrt(c);
  16. A Agents – マルチAgent対応 v1.3.0以降 langchain4j-agentic と langchain4j- agentic-a2a が導入され複数エージェントの協調が容易に

     ワークフローによる制御(逐次/ループ/並列/条件分岐)  エージェント間の情報の共有 (AgenticScope)  スーパバイザとサブエージェント  Agent2Agent Protocol(A2A)対応 Agentic AI と Context Engineering の具現化
  17. A public interface CreativeWriter { // 作家Agent @UserMessage(""" あなたは創造的な作家です。 指定されたトピックに基づいて、3文以内の物語の草稿

    を作成してください。 物語のみを返し、それ以外は返さないでください。 トピックは {{topic}} です。 """) @Agent("指定されたトピックに基づいて物語を生成します。") String generateStory(@V("topic") String topic); }
  18. A public interface StyleEditor { // 編集者Agent @UserMessage(""" あなたはプロの編集者です。 以下の物語を分析し、{{style}}

    スタイルにより適合し、 より一貫性のある形に書き直してください。 物語のみを返し、それ以外は返さないでください。 物語は "{{story}}" です。 """) @Agent("指定されたスタイルにより適合するよう物語を編集 します") String editStory(@V("story") String story, @V("style") String style); }
  19. A public interface NovelCreator { // 小説作成Agent @Agent String createNovel(@V(“topic”)

    String topic, @V("style") String style); } NovelCreator novelCreator = AgenticServices .sequenceBuilder(NovelCreator.class) .subAgents(creativeWriter, styleEditor) .outputKey("story") .build(); String story = novelCreator.createNovel( "ドラゴンと魔法使い", "ファンタジー");
  20. A public interface NovelCreator { // 小説作成Agent @Agent String createNovel(@V(“topic”)

    String topic, @V("style") String style); } NovelCreator novelCreator = AgenticServices .supervisorBuilder(NovelCreator.class) .supervisorContext("作家の作業を優先する") .subAgents(creativeWriter, styleEditor) .outputKey("story") .build(); String story = novelCreator.createNovel( "ドラゴンと魔法使い", "ファンタジー");
  21. A Skillの構造 成果物作成の概要や手順を文書 化した ‘SKILL.md’ と、サポー トする文書やスクリプト/リソース 群で構成。 手順には「その場でコード生成し て実行」も含まれる

    PowerPoint スライドSkill SKILL.md html2pptx.md scripts/ html2pptx.js • タイトル • 概要 • 内容 詳細実現 方法 スクリプトや リソース群 Code execution with MCP: building more efficient AI agents / Anthropic
  22. A アプリについて  選んだ理由:Agentic AI と Context Engineeringの良 い実例 

    普遍的で多様なタスクをAgentが処理  Contextの最適化処理  注意: Claude Skills の実際の振る舞いではないです!  処理系のコードは公開されていない  あくまで公開仕様から、実現方法を想像したもの
  23. A ユースケースとアプリの振る舞い “AnthropicブランドのスタイルでJJUG CCCのスライドを作 成したい” 1. アプリに上記のプロンプトを渡す 2. GitHub –

    anthropics/skills: Public repository for Skills の中からアプリが適切なSkillを選ぶ 選択してくれると期待するのは、 1. ‘brand-guidelines’: Anthropicのスタイルのスキル 2. ‘document-skills/pptx’: スライドを作るスキル 3. Skillを順に実行し、パワーポイントのスライドを作成
  24. A LangChain4jの設計観点  どの場面で Workflow型を使うか、Pure Agent型 を使うか。  Plan /

    Act / Reflect の使いどころ  どの場面で Supervisor / SubAgents を使うか
  25. A Plan ActOperator 「Anthropicブラ ンドのスタイルで JJUG CCCのスラ イドを作って」 Pure Agent型

    Workflow型 PPTX Skill Brand Skill ReadReference WriteArtifact ScriptDeploy RunScript Validator SkillRuntime Brand Skill Non-AI Agent PPTX Skill Brand Skill
  26. A Workflow型/Pure Agent型 アプリの仕様 “目的に沿ったSkillを選別し、仕様(SKILL.md) を読み、処理する。それを繰り返し、最終成果物を出す。” を見て 「固定」か「柔軟・複雑」かを見極める。  固定:「Skillを選別→仕様を読む→作る、繰り返す」

     柔軟・複雑: Skillは多種多様。ガイドラインだけのものから、スクリ プト作成・実行手順を含むものまで。  Workflowだと…  自由度の高いSkillのフォルダ構成への対応。再帰とパターンマッチング。  SKILL.mdの参照リソースがドキュメントかスクリプトか?のパターンマッチング
  27. A Pure Agent の設計 柔軟な仕様書形態に応えられるもの。例えば’pptxスキル’… “まず SKILL.md を読む、すると新しいスライドを作成手順の概 要が書かれているが、詳しくは html2pptx.md

    を見よと書い てあるのでそれを読む。 html2pptx.md にはコード生成や、用 意されているライブラリを使う方法が書かれているので、指示に 従いコードを生成する。その後ライブラリと共にファイルを配置し て実行するとpptxファイルが出来上がる。成果物見渡して目的は 達成したと思ったら終了”
  28. A Plan/Act/Reflect アプリ品質のボトルネックになりそうなところに手を入れていく  Plan: Skillカタログから必要なものを選別し、計画を立てる  ClaudeSkillsの仕様にそったもの  Act:

    計画に従ってSkill群を実行  Reflect: 個々のSkill実行による中間成果物を評価  こまめなフィードバックによる品質向上  最後の中間成果物=最終成果物  大外から見たら‘Plan-and-Execute’
  29. A 課題:FWでのContextの最適化 Pure Agentなど抽象度が高いAPIを使うほどに、Context管理はブ ラックボックス化して使いづらくなる  LangChain4j  「最後に受け取った会話」など固定化されたコンテキスト 

    Claude Skillsが持つ特性の実現、しにくかった L1/L2/L3層のProgressive DisclosureはPure Agentを使いこなすこ とは 手の届かないところは抽象度を低くしていく 参考: AI Agentフレームワークを使うべきなのか? LayerX AI エージェントブログリレー より
  30. A LangChain4jの抽象度 アーキ 機能 所感 Pure Agent 複数Agent 宣言型Supervisor+SubAgent PromptやContext制御が埋め込まれて

    いるためContext Engineeringの柔軟 性は低 Workflow 複数Agent + 宣言型Workflow Context制御はある程度可能。実現したい フローがWorkflow宣言で可能かどうか AiServices 単一Agent Tool Calling + MCP Structured Outputs MCP を含めた Tool Calling 処理と Structured Outputs による Javaの POJOとの親和性が良い 複数Agentや長期セッション時のメモリ管 理が課題 OpenAI Official SDK などベンダ固有 SDK (OpenAIの場合) Tool Calling + MCP Structured Outputs (OpenAIの場合)低レイヤながらJava型 との親和性あり ベンダSDKごとの機能のばらつきが課題 ChatModel ベンダAPIの抽象化 Structured Outputs Structured Outputsのみ使用なら選択 (↓を使うほうが良い場合も) 高 低
  31. A まとめ  Agentic AIのPlan/Act/Reflectの概念を意識  Workflow/Pure Agent型は安定性/柔軟性のトレードオフ  Context

    EngineeringはAgent振る舞いを体感して意識  LangChain4jで Agentic AI / Context Engineering 実装を効率的に  技術選定においては、仕様の複雑性やFWの自由度を考慮
  32. A さいごに ー AIの社会実装の使命 我々IT業界とJavaエンジニアは、Coding Agentの実践経験を 活かし、エンタープライズ系AIの社会実装を前進させられる  Coding Agentが生成AI界での一番のユースケース

     Agentic AI / Context Engineering アーキテクチャの 知見が理解可能な状況に  エンタープライズ系と言えば、Javaですよね!  これからのAIでの社会実装をJava/LangChain4jで!
  33. A 経営企画本部 AI推進室 室長 鏡味 秀行 JJUG CCC 2025 Fall

    ご清聴ありがとうございました! Agentic AIのアーキテクチャ設計と Context Engineering 〜 LangChain4jによるJava実装