人類はDSLを覚える必要がなくなった

目次

  1. 背景
  2. プロンプト
  3. 良かったところ
  4. 惜しかったところ
  5. まとめ
  6. PR
  7. 関連記事

背景

こんにちは。 かりんとうマニア(@karintozuki)です。

みなさんが働いているプロジェクトで、プロジェクトやサービス固有のDSL(ドメイン固有言語)を使うことはよくありますよね。

例えば、ログ解析ツールなどで検索する際に、そのサービスが検索用のDSL、クエリ言語を提供している、というのはよくある例だと思います。
私の前職ではSumo Logic、現職ではOpenSearchとBigQueryをログ管理に使用しているのですが、どちらも検索のためにDSLが提供されています。

これらのツールでほしいデータを検索するために、DSLを覚える必要がありますが、正直、めんどくさいですよね。

全部SQLで統一してくれればいいのに。。。

というわけでAIにお願いしてみました。

プロンプト

以下のスクリーンショットはSQLっぽいクエリからOpenSearchの検索用DSLを生成している場面です。

実際に使用したプロンプトです。

1
2
3
4
5
6
7
OpenSearchのQuery DSLを以下のSQLっぽいクエリから生成してください。
以下のルールに従ってください。
- =が指定されたときはterm-levelを使って完全一致させてください
- 'like'が指定されたときはmatch_phraseを使ってください。

回答はDSLのみを返してください。

このプロンプトのポイントは、「SQLっぽい」と指定することでSQLのふわっとした知識があれば検索用のクエリを書くことができます。
これはもちろん、OpenSearchだけでなく、他のDSLでも同様に活用できます。

これにより、DSLの文法を完全に覚える必要がなくなり、効率的に作業を進めることができます。

良かったところ

非常に精度が良かったです。たぶんOpenSearchのQuery DSLはネット上に情報が豊富なのもあるかもしれませんが、9割以上は意図したクエリをつくってくれました。

あとSQLっぽい、本当に適当でそれっぽい条件を書けば、あとはAIがよしなに意図を汲み取ってくれるのが最高でした。原理的にシンタックスエラーが発生しないのがストレスフリーですね。

惜しかったところ

プロンプト内のルールを見てもらえると分かると思いますが、このルールを記述するための最低限の知識は必要です。
先ほど9割以上は意図したクエリを作ってくれると言いましたが、逆に言うと残りの1割未満をデバッグするためにやはりDSLの知識が必要になりました。

ただ、その知識を調べるのにもAIを最大限活用できます。
素直に分からないところや意図しない動作をした過程を説明するだけで原因特定は比較的簡単にできました。

まとめ

この方法ではDSLの文法を調べる必要はありますが、一度プロンプトを書いてしまえば「覚える」や「いちいち調べる」といった作業が激減します。

このプロンプトは検索用のDSLを扱う前提ですが、どんなDSLでも良いと思います。
AIはこういう自然・人工言語を問わず翻訳が得意なので、その強みを活かした使い方かなと思いました。

それじゃ今日はこの辺で。

PR

エンジニアならドメインのひとつやふたつ、持っておきたいですよね。
ドメイン取得にはお名前ドットコムがおすすめです。

関連記事

こちらの記事もおすすめです。

自分はコードに触らずにAIにPR一本仕上げさせた所感