生成AIを使いテキストを生成する

目次

caution
警告

このページで説明しているAPIは、開発を検討中のAPIです。

アップデートオプション内の「検討中の新機能」から動作をお試しいただけます。 設定方法は、 新機能の有効/無効の切り替え手順 (External link) を参照してください。

APIに関するフィードバックを、ユースケースとともに、 kintoneの改善に協力する (External link) フォームへぜひご登録ください。

フィードバックの例
  • APIラボで提供されているAPIを早く本番環境で利用したい
  • こういう用途で使うために、このようなAPIを提供してほしい

生成AIを使いテキストを生成する

生成AIを使ってテキストを生成します。
生成されたテキストは、ストリームとして逐次的に取得できます。
構造化出力用のスキーマを指定した場合、指定されたスキーマにしたがったJSON形式でデータを生成できます。

利用するには、次の2つの設定をともに有効にする必要があります。

  • 検討中の新機能の「kintone AI:生成AIでテキストを生成するJavaScript API」の有効化
  • kintone AIの有効化と、AI機能一覧の「生成AIでテキストを生成するJavaScript API」の有効化

kintone AIの設定方法は、次のページを参照してください。
kintone AIの有効化と利用する機能の選択 (External link)

このAPIは非同期なAPIです。
同期的に処理したい場合は、次のページを参照してください。

関数

PC/モバイル
kintone.ai.generateText(options)

引数

引数名 型 必須 説明
options オブジェクト 必須 テキスト生成の設定
options.model 文字列 必須 テキスト生成に使用するモデルのID
次のいずれかの値を指定します。
  • claude-5-opus-v1
  • claude-5-sonnet-v1
  • claude-4-8-opus-v1
  • claude-4-6-sonnet-v1
  • claude-4-5-sonnet-v1
  • claude-4-5-haiku-v1
options.messages 配列 必須 生成AIに渡すメッセージの配列
1個以上指定します。
options.messages[].role 文字列 必須 メッセージの役割
次のいずれかの値を指定します。
  • system:システムプロンプト
  • user:ユーザーの発言
  • assistant:生成AIの発言
options.messages[].content 文字列 必須 メッセージの内容
options.output オブジェクト 省略可 構造化出力のスキーマ
OpenAPI Specificationのスキーマオブジェクトの形式で指定します。
指定した場合、スキーマにしたがったJSON形式のデータが生成され、戻り値のpartialOutputStreamから取得できます。
OpenAPI Specificationの詳細は、次のページを参照してください。
OpenAPI Specification(外部サイト) (External link)
options.temperature 数値 省略可 生成結果のランダム性を調整する温度パラメーター
0以上1以下の実数を指定します。値が大きいほど、生成結果の多様性が高くなります。
省略した場合はモデルのデフォルト値が使用されます。
options.modelに次のいずれかの値を指定した場合は指定できません。指定するとエラーが発生します。
  • claude-5-opus-v1
  • claude-5-sonnet-v1
  • claude-4-8-opus-v1
options.maxTokens 数値 省略可 生成するテキストの最大トークン数
1以上8192以下の整数を指定します。
省略した場合はモデルのデフォルト値が使用されます。

戻り値

戻り値はPromiseオブジェクトです。
Promiseオブジェクトの解決時に次の要素をもつオブジェクトが取得できます。

プロパティ名 型 説明
textStream ReadableStream 生成されたテキストを逐次的に読み出すためのストリーム
テキストの生成に応じて、差分の文字列が読み出せます。
options.outputを指定した場合は何も読み出せません。
partialOutputStream ReadableStream 生成された構造化出力データを逐次的に読み出すためのストリーム
生成の途中経過を含む、構造化出力データ全体のオブジェクトが読み出せます。
options.outputを省略した場合は何も読み出せません。

ReadableStreamの詳細は、次のページを参照してください。
ReadableStream(外部サイト) (External link)

利用できる画面

PC
  • レコード一覧画面
  • レコード追加画面
  • レコード編集画面
  • レコード詳細画面
  • レコード印刷画面
  • グラフ画面
モバイル
  • レコード一覧画面
  • レコード追加画面
  • レコード編集画面
  • レコード詳細画面
  • グラフ画面

サンプルコード

テキストを生成する

textStreamとpartialOutputStreamは、for await...ofで反復できます。
ReadableStreamの非同期反復に対応していないブラウザーでも、同じように反復できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
try {
  const {textStream} = await kintone.ai.generateText({
    model: 'claude-4-6-sonnet-v1',
    messages: [
      // システムプロンプト
      {role: 'system', content: 'あなたは優秀なアシスタントです。'},
      // ユーザーのプロンプト
      {role: 'user', content: 'フランスの首都はどこですか?'}
    ],
    temperature: 0.5,
    maxTokens: 500
  });

  // 生成されたテキストを差分ごとに取得する
  // 例:"フランスの"、"首都は"、"パリです。"
  for await (const part of textStream) {
    console.log(part);
  }
} catch (error) {
  console.log(error);
}
構造化出力でデータを生成する
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
try {
  const {partialOutputStream} = await kintone.ai.generateText({
    model: 'claude-4-6-sonnet-v1',
    messages: [
      {role: 'system', content: 'あなたは優秀なアシスタントです。'},
      {role: 'user', content: 'フランスの首都はどこですか?'}
    ],
    output: {
      type: 'object',
      properties: {
        answer: {
          type: 'string',
          description: '1行で答えた回答'
        }
      },
      required: ['answer']
    }
  });

  // 生成途中の構造化出力データを取得する
  // 例:{}、{answer: 'フランスの首都は'}、{answer: 'フランスの首都はパリです。'}
  for await (const part of partialOutputStream) {
    console.log(part);
  }
} catch (error) {
  console.log(error);
}

注意事項

  • このAPIを実行すると、AIクレジットが使用されます。
    1回の実行で使用されるAIクレジットの量は、使用するモデル、入力するメッセージの量、および生成されるテキストの量に応じて変わります。
    AIクレジットの詳細は、次のページを参照してください。
    AIクレジットについて (External link)
  • AIクレジットの使用量が月ごとの上限に達すると、エラーになります。
  • 短時間に多くのリクエストを実行すると、レート制限によりエラーが発生します。
    時間をおいて再度実行してください。
  • options.outputに指定したスキーマがOpenAPI Specificationのスキーマオブジェクトに準拠していても、使用するモデルによっては、生成結果に正しく反映されない場合があります。
  • 指定できるモデルは、今後のkintoneのアップデートによって変わる可能性があります。

公式コミュニティ

kintone開発者同士で質問や知見を共有し、学び合うことができます。