langchain4j-ai-services-patterns
LangChain4jを使用してLLMとの統合・チャットボット・AIエージェント・会話AIをJavaで宣言的に構築するためのパターンを提供します。インターフェースベースのパターン・アノテーション・メモリ管理・ツール統合を活用し、型安全なAIサービスを生成します。ボイラープレートを最小限に抑えたAI搭載Javaアプリの作成、メモリ付き会話AIの実装、ファンクションコール対応AIエージェントの構築時に活用してください。
description の原文を見る
Provides patterns to build declarative AI Services with LangChain4j for LLM integration, chatbot development, AI agent implementation, and conversational AI in Java. Generates type-safe AI services using interface-based patterns, annotations, memory management, and tools integration. Use when creating AI-powered Java applications with minimal boilerplate, implementing conversational AI with memory, or building AI agents with function calling.
SKILL.md 本文
LangChain4j AI Services パターン
このスキルは、インターフェースベースのパターン、システムメッセージおよびユーザーメッセージのアノテーション、メモリ管理、ツール統合、および低レベルの LLM インタラクションを抽象化した高度な AI アプリケーションパターンを使用して、LangChain4j で宣言的 AI Services を構築するためのガイダンスを提供します。
概要
LangChain4j AI Services は、アノテーション付きの Java インターフェースを使用して AI 機能を定義し、型安全で宣言的な AI をボイラープレートを最小限に提供します。
使用時期
以下の場合にこのスキルを使用します:
- Java インターフェースを使用した最小限のボイラープレートで宣言的 AI Services を構築する
- メモリ管理を備えた型安全な会話型 AI を作成する
- 関数/ツール呼び出し機能を備えた AI エージェントを実装する
- 構造化データ(列挙型、POJO、リスト)を返す AI Services を設計する
- RAG パターンを宣言的に統合する
手順
LangChain4j で宣言的 AI Services を作成するには、以下の手順に従います:
1. AI Service インターフェースを定義する
AI インタラクション用のメソッドシグネチャを持つ Java インターフェースを作成します:
interface Assistant {
String chat(String userMessage);
}
2. システムメッセージおよびユーザーメッセージ用のアノテーションを追加する
@SystemMessage および @UserMessage アノテーションを使用してプロンプトを定義します:
interface CustomerSupportBot {
@SystemMessage("You are a helpful customer support agent for TechCorp")
String handleInquiry(String customerMessage);
@UserMessage("Analyze sentiment: {{it}}")
Sentiment analyzeSentiment(String feedback);
}
3. AI Service インスタンスを作成する
AiServices ビルダーまたは create を使用してサービスをインスタンス化します:
// Simple creation
Assistant assistant = AiServices.create(Assistant.class, chatModel);
// Or with builder for advanced configuration
Assistant assistant = AiServices.builder(Assistant.class)
.chatModel(chatModel)
.build();
4. 複数ターン会話用のメモリを構成する
複数ユーザーシナリオで @MemoryId を使用したメモリ管理を追加します:
interface MultiUserAssistant {
String chat(@MemoryId String userId, String userMessage);
}
Assistant assistant = AiServices.builder(MultiUserAssistant.class)
.chatModel(model)
.chatMemoryProvider(userId -> MessageWindowChatMemory.withMaxMessages(10))
.build();
5. ツールを統合して関数呼び出しを実行する
@Tool アノテーションを使用してツールを登録し、AI 関数の実行を有効にします:
class Calculator {
@Tool("Add two numbers") double add(double a, double b) { return a + b; }
}
interface MathGenius {
String ask(String question);
}
MathGenius mathGenius = AiServices.builder(MathGenius.class)
.chatModel(model)
.tools(new Calculator())
.build();
6. 検証とテストを実施する
具体的な検証パターンを使用して AI Services をテストします:
// 1. Test with sample inputs
String response = assistant.chat("Hello, how are you?");
assert response != null && !response.isEmpty();
// 2. Validate structured outputs with assertions
Sentiment result = bot.analyzeSentiment("Great product!");
assert result == Sentiment.POSITIVE;
// 3. Log tool calls with side effects for audit
MathGenius math = AiServices.builder(MathGenius.class)
.chatModel(model)
.tools(new Calculator())
.build();
// 4. Test memory isolation between users
String userA = assistant.chat("User A message", "session-a");
String userB = assistant.chat("User B message", "session-b");
assert !userA.equals(userB); // Verify memory isolation
例
実践的な包括的な例については、examples.md を参照してください。以下を含みます:
- 基本的なチャットインターフェース
- メモリを備えたステートフルアシスタント
- 複数ユーザーシナリオ
- 構造化出力抽出
- ツール呼び出しと関数実行
- ストリーミング応答
- エラーハンドリング
- RAG 統合
- プロダクションパターン
API リファレンス
完全な API ドキュメント、アノテーション、インターフェース、および構成パターンは references.md で利用できます。
ベストプラクティス
- 文字列ベースのプロンプトの代わりに型安全なインターフェースを使用する
- 適切な上限を設定した適切なメモリ管理を実装する
- パラメータドキュメント付きの明確なツール説明を設計する
- カスタムエラーハンドラでエラーを優雅に処理する
- 予測可能な応答のための構造化出力を使用する
- ユーザー入力の検証を実装する
- プロダクションデプロイメント用のパフォーマンスを監視する
依存関係
<!-- Maven -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.8.0</version>
</dependency>
// Gradle
implementation 'dev.langchain4j:langchain4j:1.8.0'
implementation 'dev.langchain4j:langchain4j-open-ai:1.8.0'
参考資料
- LangChain4j Documentation
LangChain4j AI Services - API ReferencesLangChain4j AI Services - Practical Examples
制約事項と警告
- AI Services は LLM の応答に依存しており、これらは非決定的です。テストは変動を考慮する必要があります。
- メモリプロバイダーは会話履歴を保存します。複数ユーザーシナリオで適切なクリーンアップを確保してください。
- ツール実行はコストがかかる場合があります。レート制限とタイムアウトハンドリングを実装してください。
- 機密データ(API キー、パスワード)をシステムメッセージやユーザーメッセージに渡さないでください。
- 大きなコンテキストウィンドウは高いトークンコストをもたらします。メッセージプルーニング戦略を実装してください。
- ストリーミング応答には、部分的な障害に対する適切なエラーハンドリングが必要です。
- AI が生成した出力は、プロダクションシステムで使用する前に検証する必要があります。
- 副作用を持つツールに注意してください。AI モデルは予期せず呼び出す可能性があります。
- トークン制限はモデルごとに異なります。プロンプトとコンテキストがモデルの制約内に収まることを確認してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- giuseppe-trisciuoglio
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。