見出し画像

精度が落ちたChatGPTでコーディングする最適な流れを開発しました!【SQLの例】

はじめに

こんにちは!

今日はSQL初心者がChatGPTを使ってSQLクエリを最適化する方法についてお話しします。

SQLの学習が面倒くさい方や、ChatGPTのコーディング精度が悪くなったと感じている方に役立つ記事となっています。

もちろんSQL以外の言語についても同様の考え方が適用できます。


なぜこの話題なのか?

最近、体感的にChatGPTのコーディング精度が落ちている気がします。

特に、複数のデータセットから情報を統合する必要がある場合、データセットのハルシネーション(幻覚)が致命的になります。

私たちはこれらの課題に対して、より効率的な解決策を考えたので共有します。


対象者

この記事は以下の方々に参考になります。

- データベース管理者

- 開発者

- SQL学習中の方

- AI技術に関心を持つすべての方


解決手順のサマリ

大まかに流れを以下に示します:

1. 部署内で使われているクエリを用意します。

ChatGPTに共有するときは、データコントロールをオフにすることを忘れずに!

2. 既存のクエリの抽出列とデータセットの組み合わせをChatGPTで分析する。

どの列がどのデータセットに属しているかを明確にします。

3. 異なるクエリに含まれる列とデータセットの組み合わせを追加する。

別々のクエリのデータセットを統合することができます。

4. 新たな要件に基づいて、ChatGPTで新しいクエリを生成する。

統合された表の内容を使用させることで、ハルシネーションを防止してクエリを作成します。


実際の流れ

実際に業務で試行錯誤してうまくいったので、当然セキュリティ観点で共有できません笑

なので、今回は同様の流れでサンプルを使って紹介します。


1. 部署内で使われているクエリを用意します。

今回は以下のクエリを使用します。

SELECT 
e.employee_id, 
e.name, 
e.department, 
e.hire_date, 
p.old_position, 
p.new_position, 
p.promotion_date 
FROM employees e 
JOIN promotions p 
ON e.employee_id = p.employee_id 
WHERE p.promotion_date 
BETWEEN '2022-01-01' AND '2022-12-31';
SELECT  
p.product_id,  
p.product_name,  
p.category,  
s.sale_date,  
s.quantity,  
s.price_per_unit  
FROM sales s  
JOIN products p  
ON s.product_id = p.product_id  
WHERE s.sale_date  
BETWEEN ‘2023-01-01AND2023-06-30’; 

それぞれ別々のデータセットから列を抽出しています。


2. 既存のクエリの抽出列とデータセットの組み合わせをChatGPTで分析する。

ChatGPTに共有するときは、データコントロールをオフにすることを忘れずに!

プラス設定&ベータから
データ制御→チャット履歴とトレーニングのスイッチを切る

以下のプロンプトを入力します;

以下のクエリから抽出列とデータセットの組み合わせを表形式でまとめてくれませんか? データセットに格納されている列が分かればいいので、a.のような表記は不要です。
 ```sql
ここに用意したクエリを入力する!
```
このように入力します
すると表形式でまとめてくれます


3. 異なるクエリに含まれる列とデータセットの組み合わせを追加する。

次は以下のようなプロンプトを入力します;

続いて以下のクエリからも同様に、同じ表に追加する形ででまとめてくれませんか? その際、新たに作成したテーブルは不要です。 元からあるデータセットのみを追加してください。 
```sql 
ここに用意したクエリを入力する!
```
このように入力します
別々のクエリのデータセットをまとめることができました



4. 新たな要件に基づいて、ChatGPTで新しいクエリを生成する。

最後に以下のようなプロンプトを入力します;

以下のクエリを変更してほしいです。 現在sale_dateが2023-01-01から2023-06-30のものに関してデータ抽出をしていますが、それをproduct_idが0002022となっているものに関するクエリとしてください。 それ以外の条件の変更は不要です。一度で完結するように、完全なクエリを生成してください。 
```sql 
ここに用意した変更したいクエリを入力する!
```


このように入力します
統合された表の内容を使用させることで、ハルシネーションを防止してクエリを作成します。

今回は特定の期間のデータを抽出するクエリから、特定の`product_id`に基づくデータ抽出クエリへの変更を依頼しました。

結果、ChatGPTは正確に新しいクエリを生成してくれました。


まとめ

1. 部署内で使われているクエリを用意する。

2. 用意したクエリをChatGPTで表にする。

3. 別のクエリも表に追加する。

4. 新たな要件を指示して、表のデータセットからChatGPTで新しいクエリを生成する。


この記事を読んだ皆さんも、ぜひ自分のプロジェクトでChatGPTを活用してみてください。

あなたのSQLクエリをより効率的かつ正確にする手助けとなるでしょう。


ChatGPTの精度は安定しない

OpenAIの一存でChatGPTの精度はいくらでも変わります。

そのなかで試行錯誤したことをこれからも共有していきます。

ChatGPTを活用することで、様々なことがこれまでよりもずっと簡単かつ効果的になります。

いっしょに業務や勉強、人生をより良くしていきましょう!



今後のAIの動向やテクニックについての最新情報をみのがさないように、ぜひ私たちをフォローしてくださいね!

この記事が気に入ったらサポートをしてみませんか?