Craft AI Modules を利用する
Craft AI ModulesはCraft FunctionsからAIモデルを簡単に利用できる機能です。次のような特徴があります。
- プレイドがフルマネージドでホストしているので、AIモデルの契約や保守/運用が不要です。
- 入力に使ったデータはモデルの再トレーニングには使用されないなど、エンタープライズ基準のAIモデルを提供しており、安心して利用できます。
Craft AI Modulesでは、Craft Functionsから利用できるAPIクライアントを経由して各種AIモデルにアクセスします。

各プロバイダにおける構成要素は次のとおりです。
Gemini Enterprise Agent Platform
Section titled “Gemini Enterprise Agent Platform”- Craft Functions向けのクライアント
aiModulesというクライアントを提供しています。
Craft AI Modulesでできること
Section titled “Craft AI Modulesでできること”Craft AI Modulesでは、標準の aiModules クライアントを使って、生成AIを利用したコンテンツ生成やベクトル化、検索結果の並べ替えを実行できます。
| 機能 | メソッド | 用途 |
|---|---|---|
| Geminiによるコンテンツ生成 | gcpGeminiGenerateContent | テキスト生成、要約、分類、抽出、画像や動画などを使った回答生成 |
| Geminiによるストリーミング生成 | gcpGeminiGenerateContentStream | Geminiの生成結果を逐次受け取りたい場合 |
| Text Embeddings | gcpEmbeddingsText | テキスト検索、類似度計算、分類、クラスタリングなどで使うベクトルの作成 |
| Multimodal Embeddings | gcpEmbeddingsMulti | テキストまたは画像からベクトルを作成 |
| Rerank | gcpRerank | 検索候補をクエリとの関連度順に並べ替え |
利用できるモデルは利用可能なモデル一覧をご確認ください。各メソッドの詳しい引数や戻り値はリファレンスをご確認ください。
Geminiでコンテンツを生成する
Section titled “Geminiでコンテンツを生成する”gcpGeminiGenerateContent では、Geminiモデルを使ってコンテンツを生成できます。次のような用途で利用できます。
- 通常のテキスト生成、要約、分類、抽出、文章変換
contentsに複数ターンの会話履歴を渡すマルチターン会話systemInstructionによるシステム指示generationConfig.responseMimeTypeとgenerationConfig.responseSchemaによる構造化出力generationConfig.thinkingConfigによるThinking設定tools.functionDeclarationsとtoolConfig.functionCallingConfigによるFunction CallingcraftExtra.ragOptionsによるCraft RAGとの連携inlineDataによる画像、PDF、音声、動画などのバイナリ入力
gcpGeminiGenerateContentStream を使うと、Geminiの生成結果をストリーミングで受け取れます。入力の指定方法は gcpGeminiGenerateContent と同様です。
画像・動画などの入力
Section titled “画像・動画などの入力”画像、PDF、音声、動画などのファイルをGeminiに渡す場合は、contents[].parts[] の inlineData にBase64エンコードしたデータを指定します。
const response = await aiModules.gcpGeminiGenerateContent({ model: "gemini-2.5-flash", contents: [ { role: "user", parts: [ { text: "この画像の内容を説明してください。" }, { inlineData: { mimeType: "image/png", data: "BASE64_ENCODED_IMAGE", }, }, ], }, ],});Embeddingsでベクトルを作成する
Section titled “Embeddingsでベクトルを作成する”gcpEmbeddingsText では、テキストをベクトル化できます。検索クエリや検索対象ドキュメントのベクトル作成、類似度計算、分類、クラスタリングなどに利用できます。
instances[].task_type を指定すると、検索クエリ用、検索対象ドキュメント用、分類用など、用途に応じた埋め込みを作成できます。parameters.outputDimensionality で出力次元数も調整できます。
gcpEmbeddingsMulti では、テキストまたは画像をベクトル化できます。画像を指定する場合は、Base64エンコードした画像データを bytesBase64Encoded に指定します。dimension には 128、256、512、1408 のいずれかを指定できます。
gemini-embedding-2を利用する
Section titled “gemini-embedding-2を利用する”gcpEmbeddingsText に model: "gemini-embedding-2" を指定すると、テキストをベクトル化できます。gemini-embedding-001 と同じ instances、task_type、parameters を指定できます。task_type は用途を示すための値で、Craft AI Modulesがモデル向けのテキスト指示に変換します。検索ではクエリに RETRIEVAL_QUERY、文書に RETRIEVAL_DOCUMENT を指定してください。文書には title も指定できます。
export default async function (_data, { MODULES }) { const { aiModules } = MODULES;
const result = await aiModules.gcpEmbeddingsText({ model: "gemini-embedding-2", instances: [ { content: "配送状況を確認したい", task_type: "RETRIEVAL_QUERY" }, { content: "注文履歴から配送状況を確認できます。", title: "配送状況の確認", task_type: "RETRIEVAL_DOCUMENT", }, ], parameters: { outputDimensionality: 768 }, });
return { queryEmbedding: result.predictions[0].embeddings.values, documentEmbedding: result.predictions[1].embeddings.values, };}outputDimensionality は整数の 128〜3072 を指定でき、省略時は 3072 です。1入力は8192トークンを超えると暗黙的に切り詰められます。parameters.autoTruncate に false は指定できません。
このモデルはグローバルエンドポイントを使用するため、環境リージョンや日本リージョンオプションは適用されません。
Craft AIトークンの計算方法については、Craft AI Modules の Craft AIトークンとコストをご確認ください。
Rerankで検索結果を並べ替える
Section titled “Rerankで検索結果を並べ替える”gcpRerank では、検索クエリと検索候補を渡して、候補を関連度順に並べ替えられます。ベクトル検索やキーワード検索で取得した候補を、生成AIアプリケーションへ渡す前に再評価できます。
records には、各候補の id、title、content を指定します。topN で返却する上位件数を指定でき、ignoreRecordDetailsInResponse でレスポンスに title と content を含めるかを制御できます。
Craft AI Modulesの利用方法を説明します。
Gemini Enterprise Agent Platformのモデルを利用する
Section titled “Gemini Enterprise Agent Platformのモデルを利用する”Gemini Enterprise Agent Platformのモデルは aiModules クライアント経由で利用できます。利用できるメソッドはリファレンスをご確認ください。
// Main export functionexport default async function (data, { MODULES }) {
const { aiModules } = MODULES;
// コンテンツ生成(テキスト生成)を行う const response = await aiModules.gcpGeminiGenerateContent({ model: "gemini-2.5-flash", contents: [{ role: 'user', parts: [{ text: "How does AI work?" }] }], });
// 返却値のフォーマット // response = { // usageMetadata: { // candidatesTokenCount: ..., // totalTokenCount: ..., // promptTokenCount: ..., // thoughtsTokenCount: ..., // }, // candidates: [ // { // role: 'user', // 役割 // parts: [ // text: 'answer text...', // 生成結果 // functionCall: { // tool 呼び出しの引数 // name: 'tool', // args: { ... }, // }, // functionResponse: { // tool 呼び出し結果 // name: 'tool', // response: { ... }, // }, // ... // ], // finishReason: '...' // 回答終了理由 // }, // ... // ], // } ...}