Craft AI Modules

📘

この機胜は招埅制で解攟しおおりたす。ご利甚にあたっおはKARTE Craft | AI ModulesのWaitlistにご登録をお願いしたす。

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

  • PLAIDがフルマネヌゞドにホスティングしおいるので、AI モデル利甚におけるサヌビスの契玄や保守/運甚が䞍芁です。
  • 入力に䜿ったデヌタはモデルの再トレヌニングには䜿甚されないなど、゚ンタヌプラむズ基準のAIモデルを提䟛しおおり、安心しお利甚するこずができたす。

抂芁

Craft AI Modulesでは、Craft Functionsから利甚できるAPIクラむアントを経由しお各皮AIモデルにアクセスしたす。

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機胜が有効化されおいる

利甚手順

  • API v2 Craft Type App を䜜成したす。
  • Craft FunctionsでkarteApiClientForCraftTypeAppを䜿っおAPIクラむアントを生成し、APIを実行したす。
  • karteApiClientForCraftTypeApp

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, karteSecureApiClient } = 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 = karteSecureApiClient({
    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);
}