aicore-sdk-java について
SAP AI SDKでJavaコードを生成するスキルで、OrchestrationClientを中心に構成されています。検証済みテンプレートと資料を使い、チャット、ストリーミング、埋め込み、グラウンディング、フィルタリングなどを扱います。
主な機能
- 01OrchestrationClientを中心としたガイド
- 02チャットとストリーミングのテンプレート
- 03埋め込み・グラウンディング・フィルタリングの例
- 04Spring AIとバッチ処理の例
- 05検証済みアセットと参照資料による補完
活用シーン
- 01Javaのチャットや複数ターン会話の作成
- 02Spring Bootコントローラーでのレスポンス配信
- 03埋め込みやベクトルストアグラウンディングの追加
- 04Spring AIまたはバッチ処理との連携
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sap/ ai-skills-library --skill aicore-sdk-javaインストール後、Claude Code で/aicore-sdk-javaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdassets/BatchOrchestration.javaChatOrchestration.javaEmbeddingsOrchestration.javaFilteringOrchestration.javaGroundingOrchestration.javaMaskingOrchestration.javaMultiTurnOrchestration.javaOpenAiNative.javaPromptRegistryOrchestration.javaRptOrchestration.javaSpringAiOpenAi.javaSpringAiOrchestration.javaStreamingOrchestration.javaevals/evals.jsontrigger_evals.jsonreferences/SDK_JAVA.md詳細
ソースとフォールバック
次の優先順位で回答を解決します。
- アセット(
assets/ディレクトリ) — 最初に一致するテンプレートを探し、見つかったらそのまま提供します。 アセットは常にオフラインで利用でき、実行可能なテスト済みコードが含まれています。 - Context7 MCP — 一致するアセットがない場合は、Context7 経由で最新のドキュメントを取得します。
resolve-library-id: SAP/ai-sdk-java、続いてget-library-docsを実行します。 Context7 からは、リポジトリの最新の API 仕様を直接取得できます。 Context7 がインストールされていない場合は、通知せずに手順 3 に進みます。 references/SDK_JAVA.md— Context7 が利用できない場合のオフライン参照資料です。 推測するのではなく、こちらを使用してください。
クラス名、メソッドシグネチャ、設定形式を捏造してはいけません。 3 つのソースのどれにも質問に関する情報がない場合は、その旨を伝え、ユーザーに https://sap.github.io/ai-sdk/docs/java/ を直接参照するよう案内してください。
ルール
- デプロイメントが存在しない場合は、コードを生成する前に SAP AI Core コンソールを確認するか、管理者に連絡してデプロイメントを一覧表示または作成してください。
- 生成するコードのコメントには、必ず認証情報に関する案内を含めてください。設定の詳細はAI Core への接続を参照するよう案内してください。
OrchestrationAiModelの定数(例:OrchestrationAiModel.GPT_4O_MINI)を使用してください。モデル名の文字列を直接指定してはいけません。- チャット、ストリーミング、埋め込み、グラウンディング、フィルタリングには、必ず主要クライアントとして
OrchestrationClientを使用してください。OpenAiClient(openaiアーティファクト)は OpenAI プロキシを直接利用する用途に限られます。一般的なチャットには推奨しないでください。 - ストリーミングには異なる API が 2 つあります。それぞれを正しく使用してください。
- Spring Boot コントローラー内の
OrchestrationClient.streamChatCompletion():差分を転送するには、必ずResponseBodyEmitterとThreadContextExecutors.getExecutor().execute()を使用してください。SseEmitter、Thread.ofVirtual()、コントローラーからの生のFluxの公開は使用しないでください。 - Spring AI の
ChatModel.stream()(OrchestrationChatModel/OpenAiChatModel):このメソッドは Spring AI のChatModelインターフェースの一部であり、正当にFlux<ChatResponse>を返します。Fluxを直接組み立てること(例:.doOnNext(…).blockLast())は正しいため、ResponseBodyEmitterに置き換えないでください。
- Spring Boot コントローラー内の
- コードを生成する前に、以下の詳細を確認してください。ユーザーがまだ提供していない情報だけを尋ねてください。
- ユースケース:チャット/ストリーミング/複数ターン/埋め込み/グラウンディング/フィルタリングのどれですか?
- モデル:利用可能なモデルについて、SAP AI Core コンソールまたは SAP GenAI Hub のドキュメントを確認してください。
- ビルドツール:Maven と Gradle のどちらですか?
- フレームワーク:プレーンな Java と Spring Boot のどちらですか?
- SDK のバグや予期しない実行時の動作については、問題を認識したうえで、アセットまたは参照ドキュメントで検証済みの回避策のみを共有し、https://github.com/SAP/ai-sdk-java/issues を案内してください。SDK の内部動作を推測したり、上記のソースで扱われていないバグを診断したりしないでください。
アセット一覧
| ユースケース | テンプレート | 依存関係 |
|---|---|---|
OrchestrationClient によるチャット | assets/ChatOrchestration.java | com.sap.ai.sdk:orchestration |
OrchestrationClient によるストリーミング | assets/StreamingOrchestration.java | com.sap.ai.sdk:orchestration |
| マルチターンの会話 | assets/MultiTurnOrchestration.java | com.sap.ai.sdk:orchestration |
| テキスト埋め込み | assets/EmbeddingsOrchestration.java | com.sap.ai.sdk:orchestration |
| RAG /ベクトルストアによるグラウンディング | assets/GroundingOrchestration.java | com.sap.ai.sdk:orchestration |
| Prompt Registry テンプレート | assets/PromptRegistryOrchestration.java | com.sap.ai.sdk:orchestration |
| Spring AI + Orchestration | assets/SpringAiOrchestration.java | com.sap.ai.sdk:orchestration |
| Spring AI + OpenAI クライアント | assets/SpringAiOpenAi.java | com.sap.ai.sdk:openai |
| LLM バッチ処理 | assets/BatchOrchestration.java | com.sap.ai.sdk:batch + openai + core |
| OpenAI Responses API のネイティブ利用 | assets/OpenAiNative.java | com.sap.ai.sdk:openai |
| RPT テーブル補完(SAP RPT model) | assets/RptOrchestration.java | com.sap.ai.sdk:sap-rpt |
| コンテンツフィルタリング(Azure + LlamaGuard) | assets/FilteringOrchestration.java | com.sap.ai.sdk:orchestration |
| データマスキング(DPI 匿名化) | assets/MaskingOrchestration.java | com.sap.ai.sdk:orchestration |
インストール方法
<dependency>
<groupId>com.sap.ai.sdk</groupId>
<artifactId>orchestration</artifactId>
<version>1.22.0</version>
</dependency>
<dependency>
<groupId>com.sap.ai.sdk</groupId>
<artifactId>core</artifactId>
<version>1.22.0</version>
</dependency>
// Gradle
implementation 'com.sap.ai.sdk:orchestration:1.22.0'
// Add core if using AiCoreService (custom resource groups):
implementation 'com.sap.ai.sdk:core:1.22.0'
最新バージョンは Maven Central で確認してください。
クイックスタート(OrchestrationClient)
import com.sap.ai.sdk.orchestration.OrchestrationClient;
import com.sap.ai.sdk.orchestration.OrchestrationModuleConfig;
import com.sap.ai.sdk.orchestration.OrchestrationPrompt;
import com.sap.ai.sdk.orchestration.OrchestrationAiModel;
// Credentials auto-loaded from AICORE_SERVICE_KEY env var or VCAP_SERVICES
var client = new OrchestrationClient();
var config = new OrchestrationModuleConfig()
.withLlmConfig(OrchestrationAiModel.GPT_4O_MINI);
var response = client.chatCompletion(
new OrchestrationPrompt("What is SAP AI Core?"), config);
System.out.println(response.getContent());
認証情報の設定
SAP AI Core の JSON サービスキーを AICORE_SERVICE_KEY 環境変数に設定します。
export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}'
または、aicore configure(Python CLI)を実行して、認証情報を ~/.aicore/config.json に保存します。
参照先:https://sap.github.io/ai-sdk/docs/java/connecting-to-ai-core
引き継ぎ
- 代わりに JS/TS コードが必要ですか? →
aicore-sdk-jsを呼び出してください - SDK のバグや予期しない動作がありますか? → https://github.com/SAP/ai-sdk-java/issues
参照ファイルを読み込むタイミング
| トリガー | アクション |
|---|---|
| ユースケースがアセット(チャット、ストリーミング、マルチターン、埋め込み、グラウンディング、Prompt Registry、Spring AI、フィルタリング、マスキング)に該当する | assets/ から対応するアセットを提供します |
| ユースケースがアセットでカバーされていない(推論、構造化出力、Spring Boot ストリーミング) | 利用可能であれば Context7(SAP/ai-sdk-java)で API の使用パターンを確認し、利用できない場合は references/SDK_JAVA.md を使用します |
| コード生成全般 | 上記のソースに照らして、クラス名とメソッドシグネチャを必ず確認します |
コメント
Markdown 対応