ml-kit-genai-prompt-api について
Android 開発者向けに、ML Kit GenAI Prompt API の導入と最適化手順を案内するスキルです。プロンプト、キャッシュ、モデルのライフサイクル、構造化出力を扱います。
主な機能
- 01Prompt API 導入の前提条件
- 02プロンプト最適化のガイダンス
- 03長いプロンプトのプレフィックスキャッシュ
- 04モデルの利用可否確認とインスタンス解放
- 05構造化出力の実装ガイダンス
活用シーン
- 01Android アプリへの Prompt API 導入
- 02200 語を超えるプロンプトの最適化
- 03テキスト解析の型付き出力への変更
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ android/ skills --skill ml-kit-genai-prompt-apiインストール後、Claude Code で/ml-kit-genai-prompt-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/get-started.mdprefix-caching.mdprompt-design.mdprompt-optimization.mdstructured-output.mdsystem-instructions.md詳細
このスキルでは、Android アプリに ML Kit GenAI Prompt API を統合し、最適化するための手順を説明します。
前提条件
- Android API レベルは 26 以上である必要があります。
minSdkが 26 未満の場合は、26 に更新してください。 - ML Kit GenAI Prompt API の依存関係(
com.google.mlkit:genai-prompt)を、バージョン1.0.0-beta4以上でアプリレベルのbuild.gradleファイルに追加してください。 com.google.mlkit:genai-schema-compilerの依存関係を使用していて、KSP プラグインのバージョンが 2.3.6 未満の場合は、2.3.6 に更新してください。
詳細な手順
1. プロンプトの最適化
ML Kit Prompt API で使用するプロンプトを最適化するには、 プロンプト最適化ガイドに従ってください。
2. プレフィックスキャッシュの最適化
プロンプトが 200 語を超える場合は、プレフィックスキャッシュ APIを実装してください。
3. ライフサイクルとベストプラクティス
-
最初の推論を呼び出す前に、モデルのダウンロードが完了し、利用可能になっている必要があります。生成モデルの実装ガイドに従い、推論を行う前にモデルの
FeatureStatusがAVAILABLEであることを確認してください。 -
Activity、Fragment、またはViewModelが破棄されるときに、close()を呼び出して ML Kit のインスタンスを解放してください。例:// Instantiating model in activity, fragment, or ViewModel val generativeModel = Generation.getClient() // When activity, fragment, or ViewModel is destroyed generativeModel.close()
4. 構造化出力
構造化出力を使用するようプロンプトを実装またはリファクタリングする場合は、 次のルールに従ってください。
-
API の利用可否を確認する: 使用する前に
isStructuredOutputFeatureAvailable()で、デバイスで構造化出力機能を利用できることを確認してください。詳しい手順については、構造化出力 API ガイドを参照してください。 -
戻り値の型: 関数のシグネチャでは、
Stringや JSON 文字列ではなく、@Generable型のオブジェクトを返してください。例:
fun parseEmail(email: String): String { ... }次のようにリファクタリングします。
fun parseEmail(email: String): ParsedEmail? { ... } -
例:
リファクタリング前のコード例:
suspend fun parseEmail(email: String): String { val parseEmailPrompt = "Parse this email and return the sender, title, and short summary of the email less than 10 words: " val parsedEmail = generativeModel.generateContent(parseEmailPrompt + email) return parsedEmail.candidates[0].text }
構造化出力 API を使用した後のコード例:
@Generable data class ParsedEmail( @Guide(description = "Sender of the email") var sender: String = "", @Guide(description = "Title of the email") var title: String = "", @Guide(description = "Summary of the email less than 10 words") var summary: String = "" ) suspend fun parseEmail(email: String): ParsedEmail? { val parseEmailPrompt = "Parse this email: $email" val baseRequest = GenerateContentRequest.Builder(TextPart(parseEmailPrompt)).build() val typedRequest = generateTypedContentRequest(baseRequest, ParsedEmail::class) val typedResponse = generativeModel.generateContent(typedRequest) return typedResponse.candidates[0].response }