コンテンツにスキップ

Craft AI Modules を利用する

Craft AI ModulesはCraft FunctionsからAIモデルを簡単に利用できる機能です。次のような特徴があります。

  • プレイドがフルマネージドでホストしているので、AIモデルの契約や保守/運用が不要です。
  • 入力に使ったデータはモデルの再トレーニングには使用されないなど、エンタープライズ基準のAIモデルを提供しており、安心して利用できます。

概要

Craft AI Modulesでは、Craft Functionsから利用できるAPIクライアントを経由して各種AIモデルにアクセスします。

craft-ai-modules

各プロバイダにおける構成要素は次のとおりです。

Vertex AI Platform

  • Craft Functions向けのクライアント
    • aiModules というクライアントを提供しています。

Craft AI Modulesでできること

Craft AI Modulesでは、標準の aiModules クライアントを使って、生成AIを利用したコンテンツ生成やベクトル化、検索結果の並べ替えを実行できます。

機能メソッド用途
Geminiによるコンテンツ生成gcpGeminiGenerateContentテキスト生成、要約、分類、抽出、画像や動画などを使った回答生成
Geminiによるストリーミング生成gcpGeminiGenerateContentStreamGeminiの生成結果を逐次受け取りたい場合
Text EmbeddingsgcpEmbeddingsTextテキスト検索、類似度計算、分類、クラスタリングなどで使うベクトルの作成
Multimodal EmbeddingsgcpEmbeddingsMultiテキストまたは画像からベクトルを作成
RerankgcpRerank検索候補をクエリとの関連度順に並べ替え

利用できるモデルは利用可能なモデル一覧をご確認ください。各メソッドの詳しい引数や戻り値はリファレンスをご確認ください。

Geminiでコンテンツを生成する

gcpGeminiGenerateContent では、Geminiモデルを使ってコンテンツを生成できます。次のような用途で利用できます。

  • 通常のテキスト生成、要約、分類、抽出、文章変換
  • contents に複数ターンの会話履歴を渡すマルチターン会話
  • systemInstruction によるシステム指示
  • generationConfig.responseMimeTypegenerationConfig.responseSchema による構造化出力
  • generationConfig.thinkingConfig によるThinking設定
  • tools.functionDeclarationstoolConfig.functionCallingConfig によるFunction Calling
  • craftExtra.ragOptions によるCraft RAGとの連携
  • inlineData による画像、PDF、音声、動画などのバイナリ入力

gcpGeminiGenerateContentStream を使うと、Geminiの生成結果をストリーミングで受け取れます。入力の指定方法は gcpGeminiGenerateContent と同様です。

画像・動画などの入力

画像、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でベクトルを作成する

gcpEmbeddingsText では、テキストをベクトル化できます。検索クエリや検索対象ドキュメントのベクトル作成、類似度計算、分類、クラスタリングなどに利用できます。

instances[].task_type を指定すると、検索クエリ用、検索対象ドキュメント用、分類用など、用途に応じた埋め込みを作成できます。parameters.outputDimensionality で出力次元数も調整できます。

gcpEmbeddingsMulti では、テキストまたは画像をベクトル化できます。画像を指定する場合は、Base64エンコードした画像データを bytesBase64Encoded に指定します。dimension には 1282565121408 のいずれかを指定できます。

Rerankで検索結果を並べ替える

gcpRerank では、検索クエリと検索候補を渡して、候補を関連度順に並べ替えられます。ベクトル検索やキーワード検索で取得した候補を、生成AIアプリケーションへ渡す前に再評価できます。

records には、各候補の idtitlecontent を指定します。topN で返却する上位件数を指定でき、ignoreRecordDetailsInResponse でレスポンスに titlecontent を含めるかを制御できます。

利用方法

Craft AI Modulesの利用方法を説明します。

Vertex AI Platformのモデルを利用する

Vertex AI Platformのモデルは aiModules クライアント経由で利用できます。利用できるメソッドはリファレンスをご確認ください。

// Main export function
export 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: '...' // 回答終了理由
// },
// ...
// ],
// }
...
}