1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatabricksリリースノートをAIエージェントから利用できるようにする

Posted at

新機能をこすっていくスタイル。

はじめに

こちらでも紹介されているように、Databricks DocumentのリリースノートがRSSで提供されるようになりました。

Xでは「なぜこれがDAISで発表されなかったんだ」「待ち望んでいた機能」など多くの意見が出ているようです。

私にとっても嬉しいアップデートでして、せっかくなので、AIエージェントから利用できるようにツール化しました。

作成はDatabricks on AWSで行いました。
試してないのですが、Free Editionでも出来るのではないかと思います。

STEP1. ツールを作る

今回は全てSQLで実行することにします。
流れとしてはDatabricksのドキュメントサイトに接続するUnity Catalog Connectionを作成し、それを利用したUnity Catalog Table Functionを作成します。
(今回、Functionはtraining.ai_agentというカタログ/スキーマ配下に作成しています)

コード全文は以下の通り。
VARIANT型はとても便利ですね。

-- databricks documentへの「接続」を作成
-- bearer_tokenはダミー
CREATE CONNECTION IF NOT EXISTS databricks_document TYPE HTTP OPTIONS (
  host 'https://docs.databricks.com', port '443', base_path '/aws/en/', bearer_token 'xxx'
);

-- databricks release notesをRSSから取得するUnity Catalog Functionを作成
CREATE OR REPLACE FUNCTION training.ai_agent.databricks_release_notes(
    n_days INT DEFAULT 3 COMMENT '何日前までのリリースノートを取得するかを指定する。デフォルトは3日'
  )
  RETURNS TABLE(
    guid STRING COMMENT 'ユニークID。通常はドキュメントのURLが設定される',
    categories ARRAY<STRING> COMMENT 'リリース機能のカテゴリ一覧',
    description STRING COMMENT 'リリース機能の説明文',
    link STRING COMMENT 'リリース機能の情報が記載されたドキュメントのURL',
    title STRING COMMENT 'リリース機能のタイトル',
    pubDate DATE COMMENT '機能のリリース日'
  )
  COMMENT 'Databricksのリリースノートから最新のリリース情報を取得する'
  RETURN
    WITH feed AS (
      SELECT
        from_xml(
          http_request(conn => 'databricks_document', method => 'GET', path => '/feed.xml').text,
          'VARIANT'
        ) AS feed
    ),
    feed_items AS (
      SELECT
        explode(feed:channel:item::array<variant>) AS item
      FROM
        feed
    ),
    final AS (
      SELECT
        item:guid::string,
        split(regexp_replace(item:category::string, '\\[|\\]|\\"', ''), ",") AS categories, -- カテゴリをリスト化
        regexp_replace(
          regexp_replace(item:description::string, '<[^>]*>', ''), '[\r\n]', ''
        ) AS description, -- HTMLタグと改行を除去
        item:link::string,
        item:title::string,
        to_date(split(item:pubDate::string, ',')[1], ' dd MMM yyyy HH:mm:ss z') AS pubDate -- 日付変換
      FROM
        feed_items
    )
    SELECT
      *
    FROM
      final
    WHERE
      pubDate >= current_date() - databricks_release_notes.n_days
    LIMIT 50;

作成したUC Functionを実行すると、RSSを取得しパースした結果をテーブル形式で得られます。

-- 5日前までのリリースノート情報を取得
SELECT * FROM training.ai_agent.databricks_release_notes(5);

image.png

ではこれをエージェントから呼び出してみましょう。

STEP2. Playgroundで試す

Playgroundを開き、作成したFunction:databricks_release_notesをツールとして指定します。
(今回はUC Functionとして指定しましたが、MCP Serversから設定しても利用できます)

image.png

では、実行してみましょう。
上記スクリーンショットのようにLLMはClaude Sonnet 4を使います。

image.png

実行すると、databricks_release_notesツールが呼び出されました。

image.png

最終的に結果が得られます。

image.png

いい感じですね。個人的に関西弁は頭に入りやすい。。。

まとめ

Unity Catalog Connection/Functionを使って、Databricksリリースノートを取得するツールを作成しました。

定期的にエージェントを呼び出して新機能のお知らせをさせたり解説をさせたりSlackに投稿させたりなど、用途としては面白いことができるんじゃないかと思います。

Databricksはこういうことも手軽に出来てありがたさを実感します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?