Introducing AI Functions: Integrating Large Language Models with Databricks SQL 翻訳: junichi.maruyama 大規模言語モデルの分野で素晴らしい進歩が見られる中、お客様から、SQLアナリストが日々のワークフローでこの強力なテクノロジーを活用できるようにするにはどうしたらよいかという問い合わせがありました。 本日、私たちはAI Functions のパブリックプレビューを発表できることを嬉しく思います。AI Functionsは、DBに組み込まれたSQL関数で、SQLから直接Large Language Models(LLM)にアクセスできるようになります。 今回の発表により、使い慣れたSQLのインターフェイスから、自社のデータに対してLLMの実験を素早く行うことができるようになりました。正しいLLMプロンプトを開発したら、Delta Live Tablesやスケジュールされたジョブなど、既存のDatabricksツールを使用して、それを本番用パイプラインに素早く変換することができます。これにより、LLMの開発および生産化のワークフローが大幅に簡素化されます。 AI Functionsは、LLMの呼び出しに関する技術的な複雑さを抽象化し、アナリストやデータ科学者が基礎となるインフラを心配することなく、これらのモデルの使用を開始できるようにします。 AI Functionsの利用 AI機能がどのように機能するかを説明するために、あなたがアナリストで、何千もの通話記録の履歴リストを与えられ、すべての通話を4つのカテゴリー(不満、満足、中立、満足)のいずれかに分類するレポートを作成するタスクを与えられたとします。通常、このような場合、データサイエンス・チームに分類モデルの作成を依頼することになります。しかし、AI Functions を使えば、OpenAIのChatGPTモデルのような大規模言語モデルを、SQLから直接呼び出すことができます。LLMプロンプトの例は、次のようになります: Prompt: Classify the following text into one of four categories [Frustrated, Happy, Neutral, Satisfied]: Thanks so much for helping me today, you have resolved my issue with the extra bill. Response: Satisfied AI Functionsを使用すると、このプロンプトをカスタムSQL関数にすることができます。これにより、複雑な複数ステップのパイプラインではなく、以下のようなことが可能になります: SELECT transcript_line, CLASSIFY_TRANSCRIPT(transcript_line) as classification FROM your_dataset この例を使って、そのために必要なステップを説明していきましょう。ここでは、大規模言語モデルとしてAzure OpenAIサービスを使用しますが、OpenAIを使用することも可能です。今後のリリースでは、DollyのようなオープンソースのLLMを含む、他の大規模言語モデルを有効にする予定です。 以前、Azure OpenAI APIキーをDatabricks Secretとして保存し、SECRET関数で参照できるようにしました。このように保存した上で、新しいAI_GENERATE_TEXT関数を見て、私たちの特定の目的のためにどのように機能させるか見てみましょう: AI_GENERATE_TEXT( prompt, 'azure_openai/gpt-35-turbo', 'apiKey', SECRET('tokens', 'azure-openai'), "deploymentName", "00000", "apiVersion", "2023-03-15-preview", "resourceName", "lakehouserules", “temperature”, 0.0 ); AI_GENERATE_TEXT関数を別の関数で囲むことをお勧めします。これにより、トランスクリプトのような入力データを渡すことが容易になり、また、意図する目的をより明確にするために関数に名前を付けることができます: CREATE OR REPLACE FUNCTION CLASSIFY_TRANSCRIPT(transcript STRING) RETURNS STRING RETURN AI_GENERATE_TEXT( CONCAT(‘Classify the following text into one of four categories [Frustrated, Happy, Neutral, Satisfied]’, transcript), 'azure_openai/gpt-35-turbo', 'apiKey', SECRET('tokens', 'azure-openai'), "deploymentId", "llmbricks", "apiVersion", "2023-03-15-preview", "resourceName", "llmbricks", “temperature”, 0.0 ); それだけで、最初に掲げた機能を実現することができ、クエリが以下のようにシンプルになることにつながる: SELECT transcript_line, CLASSIFY_TRANSCRIPT(transcript_line) as classification FROM your_dataset 複雑なパイプラインも、データエンジニアが新しいプロセスを作成するためのチケットも、データサイエンティストが新しいモデルを作成するためのチケットも必要ありません。必要なのは、プロンプトを開発するためのちょっとした創造性と、LLMの驚くべきパワーをお客様のデータにもたらすための簡単なSQLだけです。 AI Functionsを使えば、ある言語から別の言語への翻訳、テキストの要約、サポートチームへの次のステップの提案、さらには複数の関数呼び出しによるマルチショットプロンプトなど、大規模言語モデルのパワーを活用することができます。 AI Functionsは、ユーザーがLLMをビジネスに合わせて簡単にカスタマイズし、LLMをデータで使用できるようにするための私たちの旅の始まりにすぎません。皆様がどのようなものを作るのか、今から楽しみです! AI Functions パブリックプレビューのお申し込みはこちら 。そしてドリーのようなLLMを構築する方法についてのウェビナーはこちらでご確認ください!