コンテンツにスキップ

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 というクライアントを提供しています。

OpenAI 

  • KARTE API v2
    • Craft AI Modulesには、API v2の特殊なエンドポイントとして提供されているものがあります。このようなエンドポイントにアクセスするため、後述のCraft Type AppとCraft Functionsのみで使えるAPIクライアントを利用します。
  • API v2 Craft Type App (craft アプリタイプについて)
    • Craft Functions内でのみ利用できるAPI v2 Appです。
    • Craft AI Modulesを使う際にはCraft Type Appが必要になります。
      • 具体的には、Craft Functions内でAPIクライアントを生成する際、Craft Type Appのアクセストークンが必要になります。
  • Craft Functions向けのクライアント

利用方法

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

OpenAIのモデルを利用する

前提条件

Craft AI Modulesをご利用いただくためには次の前提条件を満たす必要があります。

  • API v2が有効化されている
  • CraftのGrowthプラン以上のご契約
  • 対象プロジェクトでCraft AI Modules機能が有効化されている

利用手順

OpenAIモデルの呼び出し例

次のコードはCraft AI Modulesを使ってGPT-4モデルによるChat Completionを行い、結果をログとして出力します。

// Enterprise grade chat completions のサンプルコード
// https://developers.karte.io/reference/post_v2beta-craft-aimodules-openai-chat-completions
const MODEL = 'gpt4';
// リファレンスを参照して適切なspecUriを入力してください。
const CRAFT_SPEC_URI = '@dev-karte/xxx';
// KARTE API v2 App のアクセストークンが格納されているSecret名
const KARTE_AI_APP_SECRET_NAME = 'KARTE_API_KEY';
const LOG_LEVEL = 'DEBUG';
export default async function (data, { MODULES }) {
const { initLogger, secret, karteApiClientForCraftTypeApp } = MODULES;
const logger = initLogger({ logLevel: LOG_LEVEL });
// Secret Manager経由でアクセストークンを取得し、APIクライアントを初期化します。
const { [KARTE_AI_APP_SECRET_NAME]: token } = await secret.get({ keys: [KARTE_AI_APP_SECRET_NAME] });
const sdk = karteApiClientForCraftTypeApp({
token,
specUri: CRAFT_SPEC_URI,
});
const prompt = `次の文章を説明してください: "猫とはなんですか?"`;
const messages = [
{
role: 'user',
content: prompt
},
];
const { data:retData } = await sdk.postV2betaCraftAimodulesOpenaiChatCompletions({
messages,
model: MODEL,
temperature: 0.7,
frequency_penalty: 0,
});
const { content } = retData;
logger.log("answer: " + content);
}