![見出し画像](https://assets.st-note.com/production/uploads/images/169307891/rectangle_large_type_2_d89b4d53712197fccd627cbf57e4e6f9.png?width=1200)
JSONスキーマと100件のプロンプトで100件のJSONを生成! ChatGPT用バッチ処理ツールを公開しました
あけましておめでとうございます。キン担ラボの本橋です。
![](https://assets.st-note.com/img/1736389099-0MdJKXbuWnShL8HpQDRrY1c4.png)
みなさんはLLMに大量のデータ処理を行わせたいとき、どうしていますか? ChatGPT o1あたりにお願いするといい感じでデータを生成してくれますが、書式がばらつくこともありなかなか満足できません。そもそも入力データが膨大な場合はブラウザUIからではなく、APIを使うことになります。
API経由であれば、Structured Outputsという機能を使えます。Structured Outputsを利用すると『こんな形式のJSONで回答して』と出力形式をJSONスキーマとして指定できます。これにより、ソフトウェアから利用したいデータをLLMで生成できるようになります。
そんなStructured OutputsをCLIから利用してJSONを出力することで、ワークフローやパイプラインの一部としても使えるニッチなツール ChattyJSON をgithubに公開しました。
探せば誰かが作っていそうなツールです。が、このくらいライトなツールだったら自分で作ったほうが早いですね。
つらつら書いていたら『生成AIでkintoneアプリを作る目的に使えそう』となったので後半まで目を通していただければ幸いです(実際にアプリを作るのは改めて実験してみます)
ChattyJSON - CLIからStructured Outputs
JSON出力を目的としているため、プロンプト、システムプロンプトに加えて、JSONスキーマの3つ組のファイルで処理を実行できる点が特徴です。
使い方はシンプルです。.envファイルにOpenAIのAPIキーを書き込んだら、プロンプトを書いたテキストファイルと、出力するJSONファイルのパスを指定して実行するだけです。
$ python main.py [-h] --prompt_file PROMPT_FILE --output_file OUTPUT_FILE
オプションとしてJSONスキーマを指定できます。
詳しくはREADMEを見ていただくとして、このnoteではChattyJSONがどんな場面で使えるかを紹介したいと思います。
そもそもどんな用途?
もともとは「ひと目でわかる主要なアップデート」をAIポッドキャスト化するツールでした。
この対話JSONを作るソフトウェアのうち、JSONスキーマを使う機能を他のプロジェクトでも流用したくなって独立させたものです。
![](https://assets.st-note.com/img/1736386904-ZG42Kocm3OC9ulIRXefkpsq6.png?width=1200)
防災に関するアンケートフォームで、回答者の回答に応じて表示させるAIのコメントをあらかじめ生成しておく用途です。おかげで大量のデータセットを用意できました。
kintoneで使える場面
JSONといえば、kintoneのREST APIは入出力がJSONですね。
AIにアプリを生成させる
kintoneの運用でgameniやginueを使っていると、kintoneアプリの情報が表現されているjsonデータを目にした方も多いかと思います。この手のJSONもJSONスキーマを使えば作れそうです。
スキーマを人手で作るのはとても面倒なものですが、kintone REST APIのJSONスキーマを調べるAPIがあります。
こちらで取得したAPIスキーマをファイルに保存して、ChattyJSONに読み込ませればAIにアプリを作らせることもできそうです。
後ほど実験してみたいと思います。
AIにデータ定義を生成させる
以前、西見さんがこんな記事を書かれていました。フィールドの一覧と設定(一行文字列とか、ラジオボタンとか)を取得するAPIについて書かれた記事です。
任意の統計データについて、生成AIでフィールド定義を作らせればそのデータに適したkintoneアプリを作れるという趣旨です。
西見さんの記事とあわせて上述のスキーマ情報を利用することで、ChattyJSONから任意の統計データ用のアプリを生成AIにデザインさせることができそうです。
その他のkintone用途
以下はChatGPTに提案してもらった使い方です。深く検証してません。ご参考までに。
シンプルなカスタマイズやプラグイン設定ファイルの生成
kintoneの簡単なカスタマイズやプラグイン設定を行うときに、必要となるJSON形式のパラメータをスキーマにあわせて自動生成できるため、構造の誤りや入力ミスを減らしやすい。
フォーム情報のサンプル作成
新しいアプリの設計やテスト用データを気軽に試す際、スキーマ通りのJSONを高速に生成できるのでスムーズに検証できる。
kintone REST API用データの効率的な作成
API連携で使うレコードデータやリクエスト用JSONを短時間で作成可能。誤った構造を防げるので、API呼び出し時のトラブルが減り開発効率が向上する。
既存アプリのアップデートやマスターデータ管理
アプリの構成変更やマスターデータ更新の際に、ベースとなるスキーマを利用して更新部分だけをプロンプトで指示し、正しい形式のJSONを出力できる。
大規模なkintoneカスタマイズの一元管理
複数のアプリやプラグインをまとめて管理・カスタマイズするような場面で、JSONスキーマを活用して複雑な設定ファイルをミスなく生成できる。
自動化パイプラインへの統合
CI/CDの中で、ChattyJSONによるJSON生成とkintoneアプリの更新・デプロイを連携させると、大規模な変更にも対応しやすくなる。
ものが生成AIによる生成だけに、テストデータの生成とか、形式が異なるデータベースからの以降とか、そういった場面で使えそうですね。