コンテンツにスキップ

Craft AI Modules を利用する

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

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

概要

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

craft-ai-modules

Craft AI Modulesを構成する要素は次の通りです。

  • 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のアクセストークンが必要になります。
  • APIクライアント(karteApiClientForCraftTypeApp
    • API v2 Craft Type App向けのAPIクライアントモジュールです。

利用方法

Craft AI Modulesは次の方法で利用できます。

前提条件

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

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

利用手順

Craft AI Modulesの呼び出し例

次のコードは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);
}