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

エンタープライズ生成AI エージェント実践アーキテクチャ ~ LangChain4j と Az...

エンタープライズ生成AI エージェント実践アーキテクチャ ~ LangChain4j と Azure OpenAI Service を活用した情報資産のエンパワーメント ~

2025/6/17のMicrosoft社様主催のイベント Java on Azure Day 2025 の登壇資料です。

トランスクリプト付きの登壇資料がこちらにあります

本資料の著作権は株式会社アルファシステムズに帰属します
https://www.alpha.co.jp/

Avatar for 鏡味秀行

鏡味秀行

June 18, 2025
Tweet

More Decks by 鏡味秀行

Other Decks in Technology

Transcript

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

    GraphRAGなど (弊社テックブログ参照)  Java: JJUG CCC で JHipster/LangChain4j  プライベート  日曜エンジニア(生活と地域をIT とAIで解決)  緑黄色社会、ドラム
  2. A LangChain4j LangChain を Java 向けに再設計した LLMフレームワーク  Spring Boot/QuarkusなどのJavaエコシステムに最適化

     主要機能  LLM(大規模言語モデル) 抽象化/  Structured Outputs/ Function Calling Tools/RAG  類似フレームワーク  Spring AI/Semantic Kernel  2025年5月に、1.0.0がGA https://docs.langchain4j.dev/
  3. A LangChain4j の良いところ 統一API抽象化  OpenAI, Claude, Gemini等を統一的に扱える  ベンダーロックインなしで容易に切り替え

     最近のLLMの「安価で大量」「高価で高性能」の使い分けにフィット 既存のJava資産との統合  Spring BootのDIやアノテーション  Quarkus拡張によるCDI Beanやネイティブ化 柔軟な抽象レベル  Low-Level/High-Level  High-Levelの宣言的、直感的なAPIが「AIエージェント」と合っている。
  4. A Tool-Likeなスタイル  API: Low-Level/High-Level API  注目技術: Structured Outputs

    Agenticなスタイル  API: High-Level API  注目技術: Function Calling/MCP LangChain4j の開発スタイル
  5. A Tool-Likeなスタイル – Low-Level API ChatModel model = AzureOpenAiChatModel.builder() .apiKey(System.getenv(“AZURE_OPENAI_KEY”))

    // 後でなくします .endpoint(System.getenv("AZURE_OPENAI_ENDPOINT")) .deploymentName("gpt-4o")) .build(); String response = model.chat(“Javaが良いところを3つ挙げて!"); // "Javaの良いところは、まず…"
  6. A Tool-Likeなスタイル – High Level API public interface Assistant {

    List<String> answer(String userMessage); } Assistant assistant = AiServices.builder(Assistant.class) .chatModel(model) // さきほど作ったLLMモデルをDI .build(); List<String> answers = assistant.answer("Javaが良いところを3つ挙げて!"); // ["1. プラットフォーム独立性…", "2. 豊富な…", …]
  7. A Structured Outputs LLMからの出力が構造データであることを保証  Azure OpenAI Service 、他の主要なLLMプロバイダーではサポート AiServiceにおける処理:

     Input: LLMへ以下をリクエスト  InputのJavaデータを、文字列表現に変換  OutputのJavaの型を、JSONスキーマで指定  Output: LLMからのレスポンスを変換  JSONスキーマで指定し、データ型が保証されたOutput→Javaのデータに変換
  8. A

  9. A RAG (Retrieval-Augmented Generation)  情報を取り出し(Retrieve) LLMが生成(Generation)  情報取り出し: 

    基本: ContentRetriever  応用: RetrivalAugmentor  制御「情報取り出し→生成のロ ジック」は決められたもの ContentRetriever contentRetriever = EmbeddingStoreContentRetriever.builder() .embeddingStore(embeddingStore) .embeddingModel(embeddingModel) .maxResults(2) .minScore(0.5) .build(); Assistant bot = AiServices .builder(Assistant.class) .chatModel(model) .contentRetriever(contentRetriever) // またはRetrivalAugmentorのDI // .retrievalAugmentor(…) .build(); 制御 Retrieve Generation
  10. A AIエージェントにおけるツール 情報資産にアクセスするためのインターフェース 個人ユース: Web ブラウジング/ファイルシステム/計算機能 エンタープライズシステム:  既存外部システム (ERP,

    CRM)  データベース (顧客DB, 商品DB)  情報リソース (ナレッジベース, 文書管理) ツール仕様: AIエージェントが理解  名前/パラメータ、それらの説明  OpenAPI Specはイメージが近い  MCPも同じ考え方 ナレッジベースTool 外部システムTool データベースTool
  11. A

  12. A Function Calling AIエージェントがツール選択に用いる要素技術 動作:  LLMにコンテキスト(状況)を与え、関係するツール仕様を与える  LLMが適切と判断したツールとパラメータを返す 

    それに従い実行する LangChain4jのAiServiceでは以下を自動でおこなう  Javaのメソッド仕様(名前/パラメータ、それらの説明)からJSON Schemaに変換してLLMへ送信  LLMの応答内容に応じ、ツール実行  結果を整形しLLMに送信し、さらなる判断を仰ぐ
  13. A

  14. A

  15. A MCP(Model Context Protocol)  ツールの実現手段の一つ  AIモデルとツールの標準 プロトコル 

    AiServiceの抽象化はそ のまま活用 McpTransport transport = new HttpMcpTransport.Builder() .sseUrl("http://localhost:3001/sse") .timeout(Duration.ofSeconds(60)) .logRequests(true) .logResponses(true) .build(); McpClient mcpClient = new DefaultMcpClient.Builder() .transport(transport) .build(); ToolProvider toolProvider = McpToolProvider.builder() .mcpClients(List.of(mcpClient)) // ツール一覧 .build(); Bot bot = AiServices.builder(Bot.class) .chatModel(model) .toolProvider(toolProvider) .build(); Tool Tool Tool M C P
  16. A Azure / Azure OpenAI Service (AOAI) LangChain4j アプリケーションをエンタープライズレベルに昇華 

    AOAIの「責任あるAI」に準じたセキュリティ対策  認証・認可/ガードレール設計  AzureでObservability  Application Insights で LangChain4jの メトリクス/ログ/トレースを一元可視化  AOAIの評価・改善環境(Preview)
  17. A LangChain4jのAOAI対応  OpenAIの公式SDKに対応  https://github.com/ope nai/openai-java  OpenAI Java

    API Libraryを取り込み  最新仕様に追従できる安定感 が強み  従来の langchain4j-azure- open-ai はAzure/Spring 統合機能が豊富 <!-- LangChain4J Core - AI Services等の基本機能 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>1.0.1</version> </dependency> <!-- LangChain4J OpenAI Official SDK --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai-official</artifactId> <!-- or <artifactId>langchain4j-azure-open-ai</artifactId> --> <version>1.0.1-beta6</version> </dependency>
  18. A 認証・認可 Entra ID統合 Managed Identity  APIキー不要の安全な認証  自動的なクレデンシャル管理

    // パスワードレス認証でモデルを作成 ChatModel model = OpenAiOfficialChatModel.builder() .baseUrl(endpoint) .isAzure(true) .modelName(deploymentName) .build(); $ az containerapp identity assign … $ az role assignment create --role "Cognitive Services OpenAI User" … <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> </dependency>
  19. A 運用モニタリング(Observability) Application Insights によるObservabilityの向上  LangChain4j+Azure環境  Application Insights連携でログやトレースの収集と分析

     Quarkusの拡張機能  OpenTelemetry拡張 + Azureエクスポーター拡張  依存関係と設定の追加のみでLLM呼び出しのスパン・属性情報が収集  MCPなどツール呼び出しもトレース可能  今後LangChain4j本体自身もOpenTelemetry対応による Observability強化予定(Label: Observability)
  20. A

  21. A 品質評価と改善 Azure OpenAI Evaluation サービス  開発・運用でLLM出力を効率的に評価  API設定により要求・応答の自動収集も可

     メタデータによるタグ付けも可 Azure OpenAI Garders  LLMによる自動評価(LLM-as-a-Judge) // 設定 ChatModel model = OpenAiOfficialChatModel.builder() .baseUrl(endpoint) .isAzure(true) .modelName(deploymentName) .store(true) .metadata(Map.of( "title", "Tool Demo", "type" , "simple" )) .build();
  22. A まとめ  LangChain4j  型安全なJavaとのデータ連携(Structured Outputs)  AiServiceとMCPなどのツールによる情報資産との連携(Function Calling)

     Azure OpenAI Service  セキュリティ、Observability、評価の実現 LangChain4j AOAI = + AIエンパワーメント 情報資産 +