どのようなフォーマットが扱えるか
一般的に広く使われている形式
エンジニアであれば誰でも知っているような有名なテキストフォーマットやプログラミング構文はほぼ扱うことができます。
- json
- csv
- xml
- yaml
- toml
- latex
- mathml
- markdown
- html
- css
- svg
- 各種有名なプログラミング言語
GitHubなどに十分な訓練データが提供されている形式
標準化されて誰でも知っているレベルでなくとも、GitHubなどに十分な訓練データが提供されている形式ならば扱うことができます。つまり利用が広まっているOSSやサービスの独自形式のフォーマットなどです。ただし、一般的に知られているようなフォーマットと比べるとやや精度を欠くことがあります。
- Mermaid : テキストでダイアグラムを記述する言語
- PlantUML : テキストでダイアグラムを記述する言語
- ApacheやNginxなど有名ミドルウェアのログファイル : 構造化されていない形式でもある程度推測してフィールドを認識します。
プロンプト内で教えたフォーマット
ChatGPT が訓練データが存在するフォーマットしか扱えないかというとそうではありません。プロンプト内で独自のフォーマット(ルール)を教えることで、独自フォーマットも理解するようになります。プロンプト内で新しい知識を教えることを in-context learning と呼ばれます。
in-context learning により独自形式を教えて独自形式をJSONに変換する例
Q: A(name->"foo", age=16, B(name->"bar", age=22))
A: {"A": {"name": "foo", age:16, B:{"name":"bar", "age":22}}
Q:AA(size=4, DD(deko="boko"))
A:
ChatGPTの回答
{"AA": {"size": 4, "DD": {"deko": "boko"}}}
このように、この世に存在しないフォーマットでも、例示などにより前提知識を覚えさせることで、学習して使いこなすことができるようになります。
テキストとして表現できればいい
ChatGPTはJPEGやPNGなどのバイナリデータは扱えません。ですから、画像や映像など一般的にバイナリで提供されるものは扱えないとすぐに考えてしまいますが、一般的にバイナリなものでもテキストとして表現できないか考えることで道が開ける可能性があります。MermaidやSVG(SVGは中身はXML)が良い例です。
「星型のアイコンが欲しい。」と考えた時に、画像だからChatGPTでは使えない、ということはありません。
星型のSVGを求めることもできますし、HTML Canvasで星形を描くJavaScriptを生成することもできます。
最強のコンバーター(* to * converter)
ChatGPTは構造やフィールドの意味を理解してくれますし、プログラミング言語も理解します。そして、各種フォーマットを自在に変換することができます。ある意味で、ChatGPTは最強のコンバーター(* to * converter)です。
プログラミング言語を書き換えることもできますし、JSON <=> Toml <=> Yaml <=> XML マッピング可能な形式であればなんでも変換できます。もちろん、独自形式をプロンプトで教えれば独自形式も各種フォーマットやプログラミング言語に変換することができます。
まとめ
- ChatGPT は十分な訓練データがインターネットに存在するフォーマットはなんでも扱える
- プロンプト内で教えることで、独自の形式も理解し、さまざまな形式に変換させることができる
- 一般的にバイナリ形式のデータもテキストで表現できないか考えることが大事
- ChatGPT は * to * を実現する最強のコンバーター
その他のChatGPT関連記事