AI Functionsのご紹介：Databricks SQLによる大規模言語モデルのインテグレーション

[Introducing AI Functions: Integrating Large Language Models with Databricks SQL \- The Databricks Blog](https://www.databricks.com/blog/2023/04/18/introducing-ai-functions-integrating-large-language-models-databricks-sql.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# AI FunctionsがDB SQLにLLMなどのパワーを提供

大規模言語モデルの領域における信じられないほどの進歩によって、お客様は我々に、どうしたらSQLアナリストがこのパワフルな技術を日々のワークフローで活用できるのかを尋ねました。

本日、AI Functionsのパブリックプレビューを発表できることを嬉しく思っています。AI FunctionsはビルトインのDB SQLの関数であり、SQLから直接の大規模言語モデル(LLM)へのアクセスを提供します。

このローンチによって、馴染みのあるSQLインタフェースから皆様の企業のデータに対するLLMの実験をクイックに行えるようになります。適切なLLMプロンプトを開発したら、Delta Live Tablesやスケジュールされたジョブのような既存のDatabricksツールを活用したプロダクションパイプラインにクイックに転用することができます。これによって、LLMの開発、本格運用のワークフローの両方をシンプルにします。

AI FunctionsはLLM呼び出しにおける技術的な複雑性を抽象化し、アナリストやデータサイエンティストは、背後のインフラストラクチャを気にすることなしに、これらのモデルを使い始めることができるようになります。

# AI Functionsの活用

AI Functionsがどのように動作するのかを説明するために、数千の通話記録があり、すべての通話を4つのカテゴリー[Frustrated, Happy, Neutral, Satisfied]に分類するレポートを提供するタスクを考えてみます。通常は、データサイエンスチームに分類モデルの作成をリクエストする必要があります。そうではなく、AI Functionsを用いることで、SQLから直接、Open AIのChatGPTのような大規模言語モデルにプロンプトを指定することができます。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関数に変換することができます。これによって、複雑なマルチステップのパイプラインではなく、以下のようなことを行えるようになります。

```sql:SQL
SELECT 
transcript_line, 
CLASSIFY_TRANSCRIPT(transcript_line) as classification
FROM
your_dataset
```

必要なステップをウォークスルーするためにこのサンプルを使いましょう。大規模言語モデルとしてAzure OpenAIサービスを使いますが、OpenAIを使用することも可能です。今ごろのリリースでは、DollyのようなオープンソースLLMを含む他の大規模言語モデルも使用できるようにする予定です。

すでにAzure OpenAIのAPIキーをDatabricksシークレットに保存しているので、SECRET関数で参照することができます。我々のゴールに対してどのような取り組みが行えるのかを知るために、新たな`AI_GENERATE_TEXT`関数を見ていきましょう。

```sql:SQL
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`関数を別の関数でラッピングすることをお勧めします。ころれによって、口述記録のような入力データの引き渡しが簡単になり、関数に名前をつけることで、意図したゴールに即した説明が可能となります:

```sql:SQL
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
);
```

これがこの機能を活用するために必要なことの*全て*であり、以下のようにシンプルにクエリーを行えるようになります:

```sql:SQL
SELECT 
transcript_line, 
CLASSIFY_TRANSCRIPT(transcript_line) as classification
FROM
your_datase
```
![](https://cms.databricks.com/sites/default/files/inline-images/db-601-blog-img-1.png)

複雑なパイプラインや、新規プロセスの作成をデータエンジニアへ依頼するチケット作成や、新規モデルの作成をデータサイエンティストに依頼するチケットは不要です。必要なのは、プロンプトを作成するあなたの創造性と、ご自身のデータに適切なLLMの信じられないパワーを提供するためのシンプルなSQLだけです。

AI Functionsによって、言語の翻訳、テキスト要約、サポートチームへの次のステップの提案、マルチショットプロンプトのための複数回の関数呼び出しなど、大規模言語モデルのパワーを活用できるようになります。

AI Functionsは、ご自身のビジネスに合わせて容易にLLMをカスタマイズし、ご自身のデータでLLMを活用できるようにするためにユーザーを支援する我々のジャーニーのスタート地点にいます。皆様が開発するものを見るのを待ちきれません！

[こちら](https://forms.gle/pBTvFmrAzLLbjPyg7)からAI Functionsのパブリックプレビューにサインアップし、[こちら](https://www.databricks.com/resources/webinar/build-your-own-large-language-model-dolly)のDollyのように自分のLLMの構築方法をカバーしているウェビナーをチェックしてください。

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)