OpenAI DevDay 2024 | コミュニティスポットライト | Supabase

3,177 文字

YouTube
作成した動画を友だち、家族、世界中の人たちと共有

こんにちは、私はThorです。Supabaseでデベロッパーエクスペリエンスを担当しています。本題に入る前に、簡単に手を挙げていただきたいのですが、職業としてソフトウェアを開発している方はいらっしゃいますか?かなりいらっしゃいますね。そして、手を挙げたままで、データベースマイグレーションを書くのが本当に好きな方は?そうですよね。
そこで私たちは、ブラウザ上でAIを搭載したPostgresのプレイグラウンドであるdatabase.buildを作成しました。これはChatGPTのコードインタープリターのようなものですが、Postgres用です。AIモデルにデータベースへの完全な自律性を与えることで、複数の操作を遅延なく連続して実行できます。これによってAIがより人間らしく、より有用に感じられます。この斬新な体験は、GPT-4oの素晴らしいPostgresとSQLの理解力と、使い捨て可能なブラウザ内データベースのおかげで実現しています。データ損失を心配する必要がなく、モデルを自由に実行させることができます。
一緒に試してみたい方は、database.buildにアクセスしてください。ここでライブデモをお見せしましょう。デモの神様にお供え物をしてきましたので、映画を追跡してみましょう。これを実行すると、GPT-4oに接続され、SQLが生成され、そのSQLがブラウザで直接実行されます。これはPG Liteを使用しており、WASMを通じてブラウザ上でPostgresを実行しています。
movies テーブルが作成されました。素晴らしい!これで最初のマイグレーションが完了しました。では、どのようにしてモデルにこれほどの自律性を与えることができたのでしょうか?秘訣はツールコールにあります。私たちはツールコールを使用して、PG LiteでSQLを実行するだけでなく、通常はグラフィカルユーザーインターフェイスでしか見られないような他のアクションも実行しています。
もう少し深く内部を見てみましょう。ここではVercel AI SDKを使用しています。これは迅速な反復作業に適した素晴らしいオープンソースツールです。これは新しいraoのOpenAIテーマで、昨日リリースされたと思います。素晴らしいコードスクリーンショットが得られるように、EdwinとRayチームに感謝します。もちろん、Supabaseの他の部分と同様、これもオープンソースなので、後で自由に確認できます。
ここが魔法の起こる場所です。onToolCallはクライアントサイドのツールを提供し、モデルが自動的に呼び出すことができます。maxStepsは無限ループに陥った場合の制限を定義します。execute SQLツールコールの例を見てみましょう。TypeScriptでzodを使用してツールコールスキーマを設定し、useOnToolCalledフックでツール機能を実装します。レスポンスを少し整理し、クエリ結果と更新されたスキーマを返します。
先ほどの映画を追跡するデモを段階的に見てみましょう。最初に、データベーススキーマを取得する人工的なツールコールを作成し、ユーザーのメッセージと一緒にコンテキストとしてモデルと共有します。レスポンスでは、create table SQLとともにexecute SQLツールコールを受け取り、それをすぐにブラウザ内のデータベースで実行します。クエリ結果と更新されたスキーマをモデルにフィードバックし、「movies テーブルが作成されました」というストリーミングレスポンスを生成し、UIにレンダリングします。
最後に、モデルに会話とデータベースの名前を変更するよう依頼し、会話が「movie tracking database」に変更されました。これが最後のツールコールです。これらは全てユーザーの介入なしに連続して実行されています。
すべての機能がツールコールであることで、モデルは様々なツールを連鎖的に使用する大きな自律性を持っています。これにより、アプリケーションは自己修復も可能です。例えば、PostgresからのSQLエラーは言語モデルにフィードバックされ、問題解決のために複数回試行することができます。
もう一つの素晴らしい機能は、PG VectorとTransformers.jsを使用した組み込みのベクトル埋め込みサポートです。デモに戻って、「5つの映画を追加し、そのタイトルに埋め込みを行う」と言ってみましょう。おそらく「5つの映画例を追加し、そのタイトルに埋め込みを行う」と入力すべきでしたね。
これを実行すると、マルチステップモデルが動作します…あっ、問題が発生したようですね。本来なら、まずデータベースにサンプルデータを投入するSQLを実行し、次にすべてのタイトルの埋め込みを生成して、別のデータベースに保存するはずでした。ベクトル埋め込みは、小さなモデルや小さな次元でも非常に大きくなるので、外部に保持したいのです。
デモの神様へのお供え物が受け入れられなかったようですね。もう一度試してみましょう…よし、動きました。まず、データベースにサンプルデータを投入するSQLを実行し、次にすべてのタイトルの埋め込みを生成して別のデータベースに保存しています。5つの映画が追加されました。
データベースに埋め込みがあるので、セマンティック検索が可能です。「セマンティック検索を使ってバットマンに関する映画を探す」と言ってみましょう。いくつかのステップが連続して実行されます。バットマンの埋め込みを生成し、PG Vectorを使用してコサイン距離を計算し、バットマンに関連する映画を見つけます。そして「ダークナイト」が見つかりました!素晴らしいですね、このツールにセマンティック検索が組み込まれています。
コピー&ペーストが素晴らしい組み合わせであるように、従来のグラフィカルユーザーインターフェイスと大規模言語モデルを組み合わせるのも素晴らしいです。UIのすべてのアクションはツールコールとして実装されており、UIでアクションがクリックされると、チャットでメッセージを送信し、モデルに処理を任せます。ただし注意点として、これはユーザーエクスペリエンスと迅速な反復には素晴らしいですが、コストの面ではあまり良くありません。そこは注意が必要です。
もう一つの素晴らしい機能はチャートです。JavaScriptで利用可能な成熟したチャートライブラリの一つであるChart.jsを使用しています。これを選んだ理由は、GPT-4oが構文と設定を非常によく理解しているからです。モデルとチャットするだけで、Chart.jsのあらゆる機能を完全にカスタマイズできます。チャートタイプ、軸、色など、Chart.jsがサポートしているものなら何でもGPT-4oで実現できます。
最後に、影響と次のステップについて簡単に見てみましょう。3ヶ月で60,000人以上のユーザーを獲得できました。これは確かに何かがあるということでしょう。また、最近Live Shareをローンチし、これによりブラウザ内のデータベースに任意のPostgresクライアントから接続できるようになりました。この技術についてのブログ投稿を公開したばかりです。本当に素晴らしい技術なので、ぜひチェックしてください。他にも興味深いことがたくさん進行中ですが、時間が足りないので、質問がある方は後で私を見つけてください。最後に伝えたいのは、ツールコールとデータベースへの完全なアクセスを組み合わせることで、非常に強力なPostgresサンドボックスができるということです。ありがとうございました。

コメント

タイトルとURLをコピーしました