🌊

chatGPTを使って、文章からSQLを生成する方法を試しました

2023/04/30に公開

株式会社piponではこのような病院検索のサイトを提供しています。
厚生労働省のデータをグラフ化して、病院ごとの症例数をグラフ化しています。

https://hospital-search.net/index.html

このサイトを作った理由としては、こんなエピソードを聞いたからです。

ある方が、舌がんになり、自分の出身大学の附属病院へ行きました。
しかし、その附属病院には、舌がんの症例数が少なく最適な治療をするまでに時間を要してしまいました。
結果的にその方は亡くなってしまいました。もし、最適な治療を最初から受けられたら結果はどうなっていたか・・・どうしても考えてしまいます。

しかし、病院側も患者さんの受け入れを拒否することはできません。
なので、病院内に知見が無い中でも、必死に治療しようとするのです。
自分の疾患の症例数の多くない病院に行ってしまうと、お互いが不幸になってしまうという事例でした。

そのため、このサイトでは、疾患名の都道府県を選択するだけで、病院ごとの症例数TOP10を簡単に見つけることができます。

ただし、このサイトでも直感的に使い方が理解できるわけではありません。

そこで、chatGPTのAPIを活用して、

東京で乳がんのお勧めの病院を教えて

と受け取ったらそれをSQLに変換して症例数TOP10の病院を返してくれるサービスを作れたらと考えました。

GPT4であれば以下のようなプロンプトを作成したら、

以下のようなSQL文を生成してくれました!

これをAPIでできるのか・・・・

import openai

openai.api_key = API_key

response = openai.Completion.create(
  model="text-davinci-003",
  prompt="あなたは優秀なエンジニアです。その前提で私の質問に答えてください。もし完全な答えを出すのに必要な情報がある場合は、私に質問をしてください。分からないものを推測で答えないようにしてください。以下のようなカラムがあるデータベースがあります。病院(hospital)、都道府県(prefecture)、症例数(patients)そこで、以下のようなことを知りたい時に必要なSQL文を作成してください。東京で症例数の多い病院を知りたい。",
  temperature=0,
  max_tokens=150,
  top_p=1.0,
  frequency_penalty=0.0,
  presence_penalty=0.0,
  stop=["#", ";"]
)

このように!きちんとSQLを返してくれました!

このSQLをデータベースに投げれば、患者さんからの自然な文章から症例数の多い病院を返すボットが開発できそうです!

あとは、患者さんからの文章がきちんとした文章じゃなかった時にどんなアウトプットになるのか、などは検証していく必要がありますね。

Discussion